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   M4MCS_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 MCS. 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/**
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ********************************************************************
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Includes
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ********************************************************************
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "NXPSW_CompilerSwitches.h"
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Debug.h"
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4MCS_InternalTypes.h"                /**< Include for MCS specific types */
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4MCS_InternalFunctions.h"            /**< Registration module */
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* _______________________ */
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                       |*/
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  reader subscription  |*/
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|_______________________|*/
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Reader registration : at least one reader must be defined */
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_READER_3GP
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_READER_AMR
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_READER_MP3
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#error "no reader registered"
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_MP3 */
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_AMR */
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_3GP */
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Include files for each reader to subscribe */
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_3GP
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditor3gpReader.h"
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_AMR
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4READER_Amr.h"
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_MP3
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorMp3Reader.h"
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ______________________________ */
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                              |*/
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  video decoder subscription  |*/
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|______________________________|*/
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorAudioDecoder.h"
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorVideoDecoder.h"
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* _______________________ */
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                       |*/
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  writer subscription  |*/
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|_______________________|*/
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Writer registration : at least one writer must be defined */
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_WRITER_AMR
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_WRITER_3GPP
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_WRITER_PCM
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VSS_SUPPORT_WRITER_MP3
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#error "no writer registered"
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_WRITER_MP3 */
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_WRITER_PCM */
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_WRITER_3GPP */
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_WRITER_AMR */
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Include files for each writer to subscribe */
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_WRITER_AMR
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern M4OSA_ERR M4WRITER_AMR_getInterfaces( M4WRITER_OutputFileType* Type,
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_GlobalInterface** SrcGlobalInterface,
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_DataInterface** SrcDataInterface);
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_WRITER_3GPP
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern M4OSA_ERR M4WRITER_3GP_getInterfaces( M4WRITER_OutputFileType* Type,
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_GlobalInterface** SrcGlobalInterface,
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_DataInterface** SrcDataInterface);
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_WRITER_PCM
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern M4OSA_ERR M4WRITER_PCM_getInterfaces( M4WRITER_OutputFileType* Type,
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_GlobalInterface** SrcGlobalInterface,
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_DataInterface** SrcDataInterface);
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_WRITER_MP3
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern M4OSA_ERR M4WRITER_MP3_getInterfaces( M4WRITER_OutputFileType* Type,
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_GlobalInterface** SrcGlobalInterface,
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4WRITER_DataInterface** SrcDataInterface);
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ______________________________ */
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|                              |*/
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|  video encoder subscription  |*/
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*|______________________________|*/
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorAudioEncoder.h"
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "VideoEditorVideoEncoder.h"
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Include files for each video encoder to subscribe */
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//#include "M4MP4E_interface.h"
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_CHECK_NULL_RETURN_VALUE(retval, pointer) \
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if ((pointer) == M4OSA_NULL) return ((M4OSA_ERR)(retval));
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4MCS_SubscribeMediaAndCodec(M4MCS_Context pContext);
1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This function registers the reader, decoders, writers and encoders
1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          in the MCS.
1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note
1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext:    (IN) Execution context.
1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR: there is no error
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER    pContext is NULL
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4MCS_subscribeMediaAndCodec(M4MCS_Context pContext)
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR                   err = M4NO_ERROR;
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4READER_MediaType          readerMediaType;
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4READER_GlobalInterface*   pReaderGlobalInterface;
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4READER_DataInterface*     pReaderDataInterface;
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OutputFileType     writerMediaType;
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_GlobalInterface*   pWriterGlobalInterface;
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_DataInterface*     pWriterDataInterface;
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AD_Type                   audioDecoderType;
1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_AudioFormat       audioCodecType;
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_AudioGlobalInterface* pAudioCodecInterface;
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AD_Interface*             pAudioDecoderInterface;
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_VideoType         videoDecoderType;
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_Format            videoCodecType;
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_GlobalInterface*  pVideoCodecInterface;
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_VideoInterface*   pVideoDecoderInterface;
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pContext);
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* _______________________ */
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                       |*/
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  reader subscription  |*/
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|_______________________|*/
1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- 3GP --- */
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_3GP
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditor3gpReader_getInterface(&readerMediaType,
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            &pReaderGlobalInterface,
1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            &pReaderDataInterface);
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4READER_3GP interface allocation error");
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerReader( pContext, readerMediaType,
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pReaderGlobalInterface,
1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pReaderDataInterface);
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register 3GP reader");
1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_3GP */
1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AMR --- */
1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_AMR
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4READER_AMR_getInterfaces(   &readerMediaType,
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        &pReaderGlobalInterface,
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        &pReaderDataInterface);
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4READER_AMR interface allocation error");
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerReader( pContext, readerMediaType,
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pReaderGlobalInterface,
2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pReaderDataInterface);
2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register AMR reader");
2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_AMR */
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MP3 --- */
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_READER_MP3
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorMp3Reader_getInterface(&readerMediaType,
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            &pReaderGlobalInterface,
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            &pReaderDataInterface);
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4READER_MP3 interface allocation error");
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerReader( pContext, readerMediaType,
2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pReaderGlobalInterface,
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pReaderDataInterface);
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register MP3 reader");
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_READER_MP3 */
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  video decoder subscription  |*/
2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MPEG4 & H263 --- */
2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_VIDEC_3GP
2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoDecoder_getInterface_MPEG4( &videoDecoderType,
2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                (M4OSA_Void *)&pVideoDecoderInterface);
2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4DECODER_MPEG4 interface allocation error");
2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerVideoDecoder(   pContext, videoDecoderType,
2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pVideoDecoderInterface);
2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register MPEG4 decoder");
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_VIDEC_3GP */
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_VIDEO_AVC
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoDecoder_getInterface_H264( &videoDecoderType,
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                (M4OSA_Void *)&pVideoDecoderInterface);
2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4DECODER_AVC interface allocation error");
2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerVideoDecoder(   pContext, videoDecoderType,
2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pVideoDecoderInterface);
2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register AVC decoder");
2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_VIDEO_AVC */
2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
2677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  audio decoder subscription  |*/
2687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
2697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AMRNB --- */
2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_AMRNB
2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioDecoder_getInterface_AMRNB(&audioDecoderType,
2747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                &pAudioDecoderInterface);
2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4AD PHILIPS AMRNB interface allocation error");
2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerAudioDecoder(   pContext, audioDecoderType,
2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pAudioDecoderInterface);
2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register PHILIPS AMRNB decoder");
2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_AUDEC_AMRNB */
2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AAC --- */
2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_AAC
2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioDecoder_getInterface_AAC(&audioDecoderType,
2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            &pAudioDecoderInterface);
2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4AD PHILIPS AAC interface allocation error");
2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerAudioDecoder(   pContext, audioDecoderType,
2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pAudioDecoderInterface);
2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register PHILIPS AAC decoder");
3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_AUDEC_AAC */
3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MP3 --- */
3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_AUDEC_MP3
3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioDecoder_getInterface_MP3(&audioDecoderType,
3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            &pAudioDecoderInterface);
3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4AD PHILIPS MP3 interface allocation error");
3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerAudioDecoder(   pContext, audioDecoderType,
3157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pAudioDecoderInterface);
3167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register PHILIPS MP3 decoder");
3187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif  /* M4VSS_SUPPORT_AUDEC_MP3 */
3197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- EVRC --- */
3217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* _______________________ */
3247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                       |*/
3257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  writer subscription  |*/
3267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|_______________________|*/
3277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- PCM --- */
3297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- 3GPP --- */
3327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_WRITER_3GPP
3347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the 3GPP writer media type and pointer to functions*/
3357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4WRITER_3GP_getInterfaces(   &writerMediaType,
3367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        &pWriterGlobalInterface,
3377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        &pWriterDataInterface);
3387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4WRITER_3GP interface allocation error");
3417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerWriter( pContext, writerMediaType,
3447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pWriterGlobalInterface,
3457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pWriterDataInterface);
3467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register 3GPP writer");
3487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_WRITER_3GPP */
3497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
3527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
3537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  video encoder subscription  |*/
3547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
3557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MPEG4 --- */
3577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
3597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi       /* retrieves the MPEG4 encoder type and pointer to functions*/
3607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoEncoder_getInterface_MPEG4(&videoCodecType,
3617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                &pVideoCodecInterface,
3627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4ENCODER_OPEN_ADVANCED);
3637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4MP4E_MPEG4 interface allocation error");
3667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerVideoEncoder(   pContext, videoCodecType,
3697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pVideoCodecInterface);
3707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register video MPEG4 encoder");
3727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_MPEG4 */
3737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- H263 --- */
3757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
3777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the H263 encoder type and pointer to functions*/
3787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoEncoder_getInterface_H263(&videoCodecType,
3797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                &pVideoCodecInterface,
3807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4ENCODER_OPEN_ADVANCED);
3817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4MP4E_H263 interface allocation error");
3857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
3867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerVideoEncoder( pContext, videoCodecType,
3887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                      pVideoCodecInterface);
3897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
3907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register video H263 encoder");
3917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_MPEG4 */
3927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_AVC
3947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the H263 encoder type and pointer to functions*/
3957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorVideoEncoder_getInterface_H264(&videoCodecType,
3967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                &pVideoCodecInterface,
3977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4ENCODER_OPEN_ADVANCED);
3987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
3997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4H264E interface allocation error");
4017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
4027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerVideoEncoder( pContext, videoCodecType, pVideoCodecInterface);
4047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register video H264 encoder");
4067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_AVC */
4077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* ______________________________ */
4097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|                              |*/
4107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|  audio encoder subscription  |*/
4117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*|______________________________|*/
4127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AMR --- */
4147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_AMR
4167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi       /* retrieves the AMR encoder type and pointer to functions*/
4177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioEncoder_getInterface_AMRNB(&audioCodecType,
4187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                &pAudioCodecInterface);
4197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
4207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4AMR interface allocation error");
4227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
4237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerAudioEncoder(   pContext, audioCodecType,
4257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pAudioCodecInterface);
4267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register audio AMR encoder");
4287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_AMR */
4297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- AAC --- */
4317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_AAC
4337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the AAC encoder type and pointer to functions*/
4347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioEncoder_getInterface_AAC(&audioCodecType,
4357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                &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 = M4MCS_registerAudioEncoder(   pContext, audioCodecType,
4427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pAudioCodecInterface);
4437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register audio AAC encoder");
4457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_AAC */
4467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* --- MP3 --- */
4507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_SUPPORT_ENCODER_MP3
4517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* retrieves the MP3 encoder type and pointer to functions*/
4527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = VideoEditorAudioEncoder_getInterface_MP3(&audioCodecType,
4537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                &pAudioCodecInterface);
4547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if (M4NO_ERROR != err)
4557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4MP3E interface allocation error");
4577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
4587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4MCS_registerAudioEncoder( pContext, audioCodecType,
4607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                      pAudioCodecInterface);
4617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF1((err != M4NO_ERROR), err,
4627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         "M4MCS_subscribeMediaAndCodec: can't register audio MP3 encoder");
4637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_SUPPORT_ENCODER_MP3 */
4647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return err;
4667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
4677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
468