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   M4DECODER_Common.h
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief  Shell Decoder common interface declaration
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note   This file declares the common interfaces that decoder shells must implement
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __M4DECODER_COMMON_H__
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __M4DECODER_COMMON_H__
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h"
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Error.h"
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_OptionID.h"
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CoreID.h"
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4READER_Common.h"
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VIFI_FiltersAPI.h"
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4_Utils.h"
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ----- Errors and Warnings ----- */
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Warning: there is no new decoded frame to render since the last rendering
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4WAR_VIDEORENDERER_NO_NEW_FRAME M4OSA_ERR_CREATE(M4_WAR, M4DECODER_COMMON, 0x0001)
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Warning: the deblocking filter is not implemented
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4WAR_DEBLOCKING_FILTER_NOT_IMPLEMENTED M4OSA_ERR_CREATE(M4_WAR, M4DECODER_COMMON,\
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                                     0x000002)
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Error: Stream H263 profiles (other than  0) are not supported */
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_DECODER_H263_PROFILE_NOT_SUPPORTED            M4OSA_ERR_CREATE(M4_ERR,\
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                                 M4DECODER_MPEG4, 0x0001)
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Error: Stream H263 not baseline not supported (Supported sizes are CIF, QCIF or SQCIF) */
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_DECODER_H263_NOT_BASELINE                        M4OSA_ERR_CREATE(M4_ERR,\
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                                 M4DECODER_MPEG4, 0x0002)
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum     M4DECODER_AVCProfileLevel
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enum defines the AVC decoder profile and level for the current instance
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    This options can be read from decoder via M4DECODER_getOption_fct
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_1 = 0,
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_1b,
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_1_1,
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_1_2,
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_1_3,
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_2,
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_2_1,
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_2_2,
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_3,
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_3_1,
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_3_2,
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_4,
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_4_1,
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_4_2,
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_5,
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_0_Level_5_1,
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_AVC_kProfile_and_Level_Out_Of_Range = 255
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4DECODER_AVCProfileLevel;
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum     M4DECODER_OptionID
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enum defines the decoder options
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    These options can be read from or written to a decoder via M4DECODER_getOption_fct
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    Get the version of the core decoder
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    */
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kOptionID_Version        = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x01),
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    Get the size of the currently decoded video
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    */
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kOptionID_VideoSize    = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x02),
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    Set the conversion filter to use at rendering
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    */
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kOptionID_OutputFilter = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x03),
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    Activate the Deblocking filter
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    */
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kOptionID_DeblockingFilter = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x04),
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    Get nex rendered frame CTS
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    */
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kOptionID_NextRenderedFrameCTS = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON,\
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                                         0x05),
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1166e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    /**
1176e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    Set the YUV data to the dummy video decoder
1186e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    */
1196e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    M4DECODER_kOptionID_DecYuvData =
1206e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x06),
1216e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    /**
1226e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    Set the YUV data with color effect applied to the dummy video decoder
1236e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    */
1246e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    M4DECODER_kOptionID_YuvWithEffectNonContiguous =
1256e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x07),
1266e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
1276e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    M4DECODER_kOptionID_YuvWithEffectContiguous =
1286e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x08),
1296e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
1306e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    M4DECODER_kOptionID_EnableYuvWithEffect =
1316e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x09),
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1330a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    /**
1340a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury     * Get the supported video decoders and capabilities */
1350a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4DECODER_kOptionID_VideoDecodersAndCapabilities =
1360a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury        M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x10),
1370a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* common to MPEG4 decoders */
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     * Get the DecoderConfigInfo */
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_MPEG4_kOptionID_DecoderConfigInfo = M4OSA_OPTION_ID_CREATE(M4_READ,\
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                         M4DECODER_MPEG4, 0x01),
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* last decoded cts */
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kOptionID_AVCLastDecodedFrameCTS = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_AVC,\
1460a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury                                                                             0x01)
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Last decoded cts */
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4DECODER_OptionID;
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4DECODER_MPEG4_DecoderConfigInfo
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Contains info read from the MPEG-4 VideoObjectLayer.
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8        uiProfile;                /**< profile and level as defined in the Visual
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                         Object Sequence header, if present */
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    uiTimeScale;            /**< time scale as parsed in VOL header */
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8        uiUseOfResynchMarker;    /**< Usage of resynchronization marker */
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool        bDataPartition;            /**< If 1 data partitioning is used. */
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool        bUseOfRVLC;                /**< Usage of RVLC for the stream */
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4DECODER_MPEG4_DecoderConfigInfo;
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************************
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4DECODER_VideoSize
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This structure defines the video size (width and height)
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This structure is used to retrieve via the M4DECODER_getOption_fct
1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                function the size of the current decoded video
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct _M4DECODER_VideoSize
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32   m_uiWidth;    /**< video width  in pixels */
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32   m_uiHeight;    /**< video height in pixels */
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4DECODER_VideoSize;
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4DECODER_OutputFilter
1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This structure defines the conversion filter
1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This structure is used to retrieve the filter function
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                pointer and its user data via the function
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                M4DECODER_getOption_fct    with the option
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                M4DECODER_kOptionID_OutputFilter
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct _M4DECODER_OutputFilter
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Void   *m_pFilterFunction;    /**< pointer to the filter function */
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Void   *m_pFilterUserData;    /**< user data of the filter        */
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4DECODER_OutputFilter;
2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum     M4DECODER_VideoType
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enum defines the video types used to create decoders
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    This enum is used internally by the VPS to identify a currently supported
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            video decoder interface. Each decoder is registered with one of this type associated.
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            When a decoder instance is needed, this type is used to identify and
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            and retrieve its interface.
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kVideoTypeMPEG4 = 0,
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kVideoTypeMJPEG,
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kVideoTypeAVC,
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kVideoTypeWMV,
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kVideoTypeREAL,
2196e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    M4DECODER_kVideoTypeYUV420P,
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_kVideoType_NB  /* number of decoders, keep it as last enum entry */
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4DECODER_VideoType ;
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2250a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdurytypedef struct {
2260a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_UInt32 mProfile;
2270a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_UInt32 mLevel;
2280a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury} VideoProfileLevel;
2290a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury
2300a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdurytypedef struct {
2310a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    VideoProfileLevel *profileLevel;
2320a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_UInt32 profileNumber;
2330a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury} VideoComponentCapabilities;
2340a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury
2350a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdurytypedef struct {
2360a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4_StreamType codec;
2370a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    VideoComponentCapabilities *component;
2380a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_UInt32 componentNumber;
2390a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury} VideoDecoder;
2400a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury
2410a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdurytypedef struct {
2420a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    VideoDecoder *decoder;
2430a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_UInt32 decoderNumber;
2440a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury} M4DECODER_VideoDecoders;
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    creates an instance of the decoder
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    allocates the context
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext:        (OUT)    Context of the decoder
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pStreamHandler:    (IN)    Pointer to a video stream description
252b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang * @param    pGlobalInterface:  (IN)    Pointer to the M4READER_GlobalInterface structure that must
253b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang *                                       be used by the decoder to read data from the stream
254b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang * @param    pDataInterface:    (IN)    Pointer to the M4READER_DataInterface structure that must
2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                       be used by the decoder to read data from the stream
2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pAccessUnit        (IN)    Pointer to an access unit (allocated by the caller)
2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                      where the decoded data are stored
2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR                 there is no error
2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_STATE             State automaton is not applied
2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC                a memory allocation has failed
2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER            at least one parameter is not properly set (in DEBUG only)
2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
2647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  (M4DECODER_create_fct)    (M4OSA_Context *pContext,
2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                 M4_StreamHandler *pStreamHandler,
267b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang                                                 M4READER_GlobalInterface *pGlobalInterface,
268b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang                                                 M4READER_DataInterface *pDataInterface,
2697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                 M4_AccessUnit *pAccessUnit,
2707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                 M4OSA_Void* pUserData);
2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
2747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    destroy the instance of the decoder
2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    after this call the context is invalid
2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    context:    (IN)    Context of the decoder
2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR             There is no error
2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_PARAMETER     The context is invalid (in DEBUG only)
2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  (M4DECODER_destroy_fct)    (M4OSA_Context context);
2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    get an option value from the decoder
2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    this function follows the set/get option mechanism described in OSAL 3.0
2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          it allows the caller to retrieve a property value:
2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          -the version number of the decoder
2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          -the size (widthxheight) of the image
2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    context:    (IN)        Context of the decoder
2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    optionId:    (IN)        indicates the option to set
2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pValue:        (IN/OUT)    pointer to structure or value (allocated by user) where
2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                      option is stored
2977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR                 there is no error
2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_PARAMETER         The context is invalid (in DEBUG only)
2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_BAD_OPTION_ID        when the option ID is not a valid one
3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_STATE             State automaton is not applied
3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  (M4DECODER_getOption_fct)(M4OSA_Context context, M4OSA_OptionID optionId,
3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4OSA_DataOption pValue);
3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief   set an option value of the decoder
3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    this function follows the set/get option mechanism described in OSAL 3.0
3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          it allows the caller to set a property value:
3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          -the conversion filter to use at rendering
3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
3137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   context:    (IN)        Context of the decoder
3147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   optionId:   (IN)        Identifier indicating the option to set
3157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   pValue:     (IN)        Pointer to structure or value (allocated by user)
3167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                     where option is stored
3177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4NO_ERROR              There is no error
3187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_BAD_OPTION_ID     The option ID is not a valid one
3197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_STATE             State automaton is not applied
3207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_PARAMETER         The option parameter is invalid
3217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  (M4DECODER_setOption_fct)(M4OSA_Context context, M4OSA_OptionID optionId,
3247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                 M4OSA_DataOption pValue);
3257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
3277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief   Decode Access Units up to a target time
3297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    Parse and decode the stream until it is possible to output a decoded image for which
3307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            the composition time is equal or greater to the passed targeted time
3317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          The data are read from the reader data interface
3327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
3337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    context:    (IN)        Context of the decoder
3347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pTime:        (IN/OUT)    IN: Time to decode up to (in milli secondes)
3357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                    OUT:Time of the last decoded frame (in ms)
3367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   bJump:      (IN)        0 if no jump occured just before this call
3377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                  1 if a a jump has just been made
338b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang * @param   tolerance:      (IN)        We may decode an earlier frame within the tolerance.
339b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang *                                      The time difference is specified in milliseconds.
3407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
3417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR                 there is no error
3427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER            at least one parameter is not properly set
3437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4WAR_NO_MORE_AU        there is no more access unit to decode (end of stream)
3447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  (M4DECODER_decode_fct)    (M4OSA_Context context, M4_MediaTime* pTime,
347b3626dda1df18de2398d6c91647c9d544dd5f6dcChih-Chung Chang                                                 M4OSA_Bool bJump, M4OSA_UInt32 tolerance);
3487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
3507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Renders the video at the specified time.
3527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note
3537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    context:     (IN)        Context of the decoder
3547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   pTime:       (IN/OUT)   IN: Time to render to (in milli secondes)
3557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                OUT:Time of the actually rendered frame (in ms)
3567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pOutputPlane:(OUT)        Output plane filled with decoded data (converted)
3577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   bForceRender:(IN)       1 if the image must be rendered even it has already been
3587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                  0 if not (in which case the function can return
3597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                       M4WAR_VIDEORENDERER_NO_NEW_FRAME)
3607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR                 There is no error
3617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER            At least one parameter is not properly set
3627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_STATE             State automaton is not applied
3637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return  M4ERR_ALLOC             There is no more available memory
3647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4WAR_VIDEORENDERER_NO_NEW_FRAME    If the frame to render has already been rendered
3657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  (M4DECODER_render_fct)    (M4OSA_Context context, M4_MediaTime* pTime,
3687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                              M4VIFI_ImagePlane* pOutputPlane,
3697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                              M4OSA_Bool bForceRender);
3707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
3727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4DECODER_VideoInterface
3747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This structure defines the generic video decoder interface
3757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This structure stores the pointers to functions of one video decoder type.
3767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                The decoder type is one of the M4DECODER_VideoType
3777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
3787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct _M4DECODER_VideoInterface
3807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
3817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_create_fct*        m_pFctCreate;
3827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_destroy_fct*        m_pFctDestroy;
3837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_getOption_fct*    m_pFctGetOption;
3847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_setOption_fct*    m_pFctSetOption;
3857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_decode_fct*        m_pFctDecode;
3867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4DECODER_render_fct*        m_pFctRender;
3877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4DECODER_VideoInterface;
3887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*__M4DECODER_COMMON_H__*/
390