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