17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*
27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License.
67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at
77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and
147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License.
157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file    M4VSS3GPP_MediaAndCodecSubscription.c
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Media readers and codecs subscription
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    This file implements the subscription of supported media
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            readers and decoders for the VSS. Potential support can
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            be activated or de-activated
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            using compilation flags set in the projects settings.
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *************************************************************************
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "NXPSW_CompilerSwitches.h"
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Debug.h"
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VSS3GPP_InternalTypes.h"                /**< Include for VSS specific types */
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VSS3GPP_InternalFunctions.h"            /**< Registration module */
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* _______________________ */
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                       |*/
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  reader subscription  |*/
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|_______________________|*/
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Reader registration : at least one reader must be defined */
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_READER_3GP
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_READER_AMR
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_READER_MP3
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_READER_PCM
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_AUDEC_NULL
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#error "no reader registered"
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_AUDEC_NULL */
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_PCM */
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_MP3 */
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_AMR */
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_3GP */
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* There must be at least one MPEG4 decoder */
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#if !defined(M4VSS_SUPPORT_VIDEC_3GP) && !defined(M4VSS_ENABLE_EXTERNAL_DECODERS)
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#error "Wait, what?"
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* "Hey, this is the VSS3GPP speaking. Pray tell, how the heck do you expect me to be able to do
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiany editing without a built-in video decoder, nor the possibility to receive an external one?!
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiSeriously, I'd love to know." */
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Include files for each reader to subscribe */
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_3GP
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditor3gpReader.h"
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_AMR
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4READER_Amr.h"
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_MP3
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorMp3Reader.h"
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_PCM
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4READER_Pcm.h"
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ______________________________ */
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                              |*/
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  audio decoder subscription  |*/
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|______________________________|*/
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorAudioDecoder.h"
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorVideoDecoder.h"
826e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury#include "M4DECODER_Null.h"
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_NULL
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4AD_Null.h"
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* _______________________ */
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                       |*/
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  writer subscription  |*/
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|_______________________|*/
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Writer registration : at least one writer must be defined */
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//#ifndef M4VSS_SUPPORT_WRITER_AMR
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_WRITER_3GPP
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#error "no writer registered"
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_WRITER_3GPP */
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//#endif /* M4VSS_SUPPORT_WRITER_AMR */
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Include files for each writer to subscribe */
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//#ifdef M4VSS_SUPPORT_WRITER_AMR
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*extern M4OSA_ERR M4WRITER_AMR_getInterfaces( M4WRITER_OutputFileType* Type,
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4WRITER_GlobalInterface** SrcGlobalInterface,
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4WRITER_DataInterface** SrcDataInterface);*/
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//#endif
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_WRITER_3GPP
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern M4OSA_ERR M4WRITER_3GP_getInterfaces( M4WRITER_OutputFileType* Type,
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            M4WRITER_GlobalInterface** SrcGlobalInterface,
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            M4WRITER_DataInterface** SrcDataInterface);
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ______________________________ */
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                              |*/
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  video encoder subscription  |*/
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|______________________________|*/
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorAudioEncoder.h"
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorVideoEncoder.h"
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ______________________________ */
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                              |*/
1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  audio encoder subscription  |*/
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|______________________________|*/
1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_CHECK_NULL_RETURN_VALUE(retval, pointer) if ((pointer) == M4OSA_NULL)\
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return ((M4OSA_ERR)(retval));
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4VSS3GPP_SubscribeMediaAndCodec()
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This function registers the reader, decoders, writers and encoders
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          in the VSS.
1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note
1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext:    (IN) Execution context.
1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR: there is no error
1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER    pContext is NULL
1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4VSS3GPP_subscribeMediaAndCodec(M4VSS3GPP_MediaAndCodecCtxt *pContext)
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR                   err = M4NO_ERROR;
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4READER_MediaType          readerMediaType;
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4READER_GlobalInterface*   pReaderGlobalInterface;
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4READER_DataInterface*     pReaderDataInterface;
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OutputFileType     writerMediaType;
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_GlobalInterface*   pWriterGlobalInterface;
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_DataInterface*     pWriterDataInterface;
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AD_Type                   audioDecoderType;
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_AudioFormat       audioCodecType;
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_AudioGlobalInterface* pAudioCodecInterface;
1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AD_Interface*             pAudioDecoderInterface;
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_VideoType         videoDecoderType;
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_Format            videoCodecType;
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_GlobalInterface*  pVideoCodecInterface;
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_VideoInterface*   pVideoDecoderInterface;
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pContext);
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* _______________________ */
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                       |*/
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  reader subscription  |*/
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|_______________________|*/
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- 3GP --- */
1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_3GP
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditor3gpReader_getInterface( &readerMediaType, &pReaderGlobalInterface,
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         &pReaderDataInterface);
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4READER_3GP interface allocation error");
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerReader( pContext, readerMediaType, pReaderGlobalInterface,
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pReaderDataInterface);
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register 3GP reader");
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_3GP */
1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AMR --- */
1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_AMR
1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4READER_AMR_getInterfaces( &readerMediaType, &pReaderGlobalInterface,
1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        &pReaderDataInterface);
1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4READER_AMR interface allocation error");
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerReader( pContext, readerMediaType, pReaderGlobalInterface,
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pReaderDataInterface);
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register AMR reader");
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_AMR */
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MP3 --- */
2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_MP3
2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorMp3Reader_getInterface( &readerMediaType, &pReaderGlobalInterface,
2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         &pReaderDataInterface);
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4READER_MP3 interface allocation error");
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerReader( pContext, readerMediaType, pReaderGlobalInterface,
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pReaderDataInterface);
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register MP3 reader");
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_MP3 */
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- PCM --- */
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_PCM
2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4READER_PCM_getInterfaces( &readerMediaType, &pReaderGlobalInterface,
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        &pReaderDataInterface);
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4READER_PCM interface allocation error");
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerReader( pContext, readerMediaType, pReaderGlobalInterface,
2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pReaderDataInterface);
2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register PCM reader");
2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_PCM */
2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  video decoder subscription  |*/
2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MPEG4 & H263 --- */
2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_VIDEC_3GP
2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoDecoder_getInterface_MPEG4(&videoDecoderType, (M4OSA_Void *)&pVideoDecoderInterface);
2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4DECODER_MPEG4 interface allocation error");
2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerVideoDecoder( pContext, videoDecoderType, pVideoDecoderInterface);
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register MPEG4 decoder");
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_VIDEC_3GP */
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_VIDEO_AVC
2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoDecoder_getInterface_H264(&videoDecoderType, (M4OSA_Void *)&pVideoDecoderInterface);
2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4DECODER_H264 interface allocation error");
2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerVideoDecoder( pContext, videoDecoderType, pVideoDecoderInterface);
2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register H264 decoder");
2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_VIDEC_3GP */
2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2636e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury#ifdef M4VSS_SUPPORT_VIDEC_NULL
2646e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    err = M4DECODER_NULL_getInterface(
2656e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury              &videoDecoderType, &pVideoDecoderInterface);
2666e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    if (M4NO_ERROR != err) {
2676e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        M4OSA_TRACE1_0("M4VD NULL Decoder interface allocation error");
2686e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        return err;
2696e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    }
2706e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    err = M4VSS3GPP_registerVideoDecoder(
2716e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury              pContext, videoDecoderType, pVideoDecoderInterface);
2726e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err, "M4VSS3GPP_subscribeMediaAndCodec: \
2736e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        can't register video NULL decoder");
2746e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury#endif
2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  audio decoder subscription  |*/
2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AMRNB --- */
2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_AMRNB
2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioDecoder_getInterface_AMRNB(&audioDecoderType, &pAudioDecoderInterface);
2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4 AMRNB interface allocation error");
2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerAudioDecoder( pContext, audioDecoderType, pAudioDecoderInterface);
2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register AMRNB decoder");
2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_AUDEC_AMRNB */
2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AAC --- */
2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_AAC
2977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioDecoder_getInterface_AAC(&audioDecoderType, &pAudioDecoderInterface);
2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4 AAC interface allocation error");
3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerAudioDecoder( pContext, audioDecoderType, pAudioDecoderInterface);
3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register AAC decoder");
3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_AUDEC_AAC */
3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MP3 --- */
3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_MP3
3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioDecoder_getInterface_MP3(&audioDecoderType, &pAudioDecoderInterface);
3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4 MP3 interface allocation error");
3157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerAudioDecoder( pContext, audioDecoderType, pAudioDecoderInterface);
3187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register MP3 decoder");
320d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru#endif  /* M4VSS_SUPPORT_AUDEC_MP3 */
3217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- NULL --- */
3247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_NULL
3267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4AD_NULL_getInterface( &audioDecoderType, &pAudioDecoderInterface);
3277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4AD NULL Decoder interface allocation error");
3307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerAudioDecoder( pContext, audioDecoderType, pAudioDecoderInterface);
3337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register EVRC decoder");
3357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif  /* M4VSS_SUPPORT_AUDEC_NULL */
3367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* _______________________ */
3387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                       |*/
3397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  writer subscription  |*/
3407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|_______________________|*/
3417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- 3GPP --- */
3447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_WRITER_3GPP
3467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the 3GPP writer media type and pointer to functions*/
3477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4WRITER_3GP_getInterfaces( &writerMediaType, &pWriterGlobalInterface,
3487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        &pWriterDataInterface);
3497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4WRITER_3GP interface allocation error");
3527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerWriter( pContext, writerMediaType, pWriterGlobalInterface,
3557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pWriterDataInterface);
3567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register 3GPP writer");
3587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_WRITER_3GPP */
3597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
3617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
3627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  video encoder subscription  |*/
3637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
3647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MPEG4 --- */
3667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
3687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the MPEG4 encoder type and pointer to functions*/
3697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoEncoder_getInterface_MPEG4(&videoCodecType, &pVideoCodecInterface,
3707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4ENCODER_OPEN_ADVANCED);
3717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4MP4E_MPEG4 interface allocation error");
3747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerVideoEncoder( pContext, videoCodecType, pVideoCodecInterface);
3777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register video MPEG4 encoder");
3797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_MPEG4 */
3807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- H263 --- */
3827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
3847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the H263 encoder type and pointer to functions*/
3857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoEncoder_getInterface_H263(&videoCodecType, &pVideoCodecInterface,
3867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4ENCODER_OPEN_ADVANCED);
3877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4MP4E_H263 interface allocation error");
3907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerVideoEncoder( pContext, videoCodecType, pVideoCodecInterface);
3937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register video H263 encoder");
3957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_MPEG4 */
3967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_AVC
3987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the H264 encoder type and pointer to functions*/
3997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoEncoder_getInterface_H264(&videoCodecType, &pVideoCodecInterface,
4007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4ENCODER_OPEN_ADVANCED);
4017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
4027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4VSS3GPP_subscribeMediaAndCodec: M4H264E interface allocation error");
4047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
4057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerVideoEncoder( pContext, videoCodecType, pVideoCodecInterface);
4077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register video H264 encoder");
4097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_AVC */
4107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
4127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
4137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  audio encoder subscription  |*/
4147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
4157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AMR --- */
4177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_AMR
4197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the AMR encoder type and pointer to functions*/
4207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioEncoder_getInterface_AMRNB(&audioCodecType, &pAudioCodecInterface);
4217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
4227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4AMR interface allocation error");
4247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
4257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerAudioEncoder( pContext, audioCodecType, pAudioCodecInterface);
4277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register audio AMR encoder");
4297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_AMR */
4307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AAC --- */
4327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_AAC
4347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the AAC encoder type and pointer to functions*/
4357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioEncoder_getInterface_AAC(&audioCodecType, &pAudioCodecInterface);
4367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
4377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4AAC interface allocation error");
4397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
4407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerAudioEncoder( pContext, audioCodecType, pAudioCodecInterface);
4427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register audio AAC encoder");
4447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_AAC */
4457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- EVRC --- */
4477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_EVRC
4497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the EVRC encoder type and pointer to functions*/
4507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4EVRC_getInterfaces( &audioCodecType, &pAudioCodecInterface);
4517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
4527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4EVRC interface allocation error");
4547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
4557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_registerAudioEncoder( pContext, audioCodecType, pAudioCodecInterface);
4577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4VSS3GPP_subscribeMediaAndCodec: can't register audio EVRC encoder");
4597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_EVRC */
4607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_OMX_CODECS
4627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pContext->bAllowFreeingOMXCodecInterface = M4OSA_TRUE;   /* when NXP SW codecs are registered,
4637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                               then allow unregistration*/
4647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
4657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return err;
4687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
4697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
470