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_API.h 197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief MCS internal types and structures definitions 207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note This header file is not public 217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************* 227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi **/ 237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __M4MCS_INTERNALTYPES_H__ 257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __M4MCS_INTERNALTYPES_H__ 267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * MCS public API and types */ 297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4MCS_API.h" 307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4MCS_ErrorCodes.h" 317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "NXPSW_CompilerSwitches.h" 337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** Determine absolute value of a. */ 357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4MCS_ABS(a) ( ( (a) < (0) ) ? (-(a)) : (a) ) 367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define Y_PLANE_BORDER_VALUE 0x00 397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define U_PLANE_BORDER_VALUE 0x80 407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define V_PLANE_BORDER_VALUE 0x80 417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Internally used modules */ 457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4READER_3gpCom.h" /**< Read 3GPP file */ 467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4DECODER_Common.h" /**< Decode video */ 477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VIFI_FiltersAPI.h" /**< Video resize */ 487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4AD_Common.h" /**< Decoder audio */ 497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "SSRC.h" /**< SSRC */ 507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "From2iToMono_16.h" /**< Stereo to Mono */ 517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "MonoTo2I_16.h" /**< Mono to Stereo */ 527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4ENCODER_AudioCommon.h" /**< Encode audio */ 537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4WRITER_common.h" /**< Writer common interface */ 547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4ENCODER_common.h" 557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Instead of including AAC core properties, it is better to redefine the needed type 587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * AAC_DEC_STREAM_PROPS 597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * In case of external AAC decoder, it will be necessary to put this type as public 607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct AAC_DEC_STREAM_PROPS 657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief AAC Stream properties 667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @Note aNoChan and aSampFreq are used for parsing even the user parameters 677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * are different. User parameters will be input for the output behaviour 687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * of the decoder whereas for parsing bitstream properties are used. 697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct { 727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 aAudioObjectType; /**< Audio object type of the stream - in fact 737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi the type found in the Access Unit parsed */ 747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 aNumChan; /**< number of channels (=1(mono) or =2(stereo)) 757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi as indicated by input bitstream*/ 767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 aSampFreq; /**< sampling frequency in Hz */ 777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 aExtensionSampFreq; /**< extended sampling frequency in Hz, = 0 is 787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi no extended frequency */ 797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 aSBRPresent; /**< presence=1/absence=0 of SBR */ 807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 aPSPresent; /**< presence=1/absence=0 of PS */ 817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 aMaxPCMSamplesPerCh; /**< max number of PCM samples per channel */ 827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} AAC_DEC_STREAM_PROPS; 837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Codecs registration same as in VPS and VES, so less mapping 877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * is required toward MCS api types 887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4WRITER_GlobalInterface* pGlobalFcts; /**< open, close, setoption,etc... functions */ 937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4WRITER_DataInterface* pDataFcts; /**< data manipulation functions */ 947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4MCS_WriterInterface; 957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum M4MCS_States 997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Main state machine of the MCS. 1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum 1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_CREATED, /**< M4MCS_init has been called */ 1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_OPENED, /**< M4MCS_open has been called */ 1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_SET, /**< All mandatory parameters have been set */ 1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_READY, /**< All optionnal parameters have been set */ 1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_BEGINVIDEOJUMP, /**< Must jump to the Iframe before the begin cut */ 1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_BEGINVIDEODECODE, /**< Must decode up to the begin cut */ 1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_PROCESSING, /**< Step can be called */ 1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_PAUSED, /**< Paused, Resume can be called */ 1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_FINISHED, /**< Transcoding is finished */ 1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kState_CLOSED /**< Output file has been created */ 1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4MCS_States; 1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum M4MCS_StreamState 1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief State of a media stream encoding (audio or video). 1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum 1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kStreamState_NOSTREAM = 0, /**< No stream present */ 1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kStreamState_STARTED = 1, /**< The stream encoding is in progress */ 1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kStreamState_FINISHED = 2 /**< The stream has finished encoding */ 1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4MCS_StreamState; 1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum anonymous enum 1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief enum to keep track of the encoder state 1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargienum 1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kNoEncoder, 1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kEncoderClosed, 1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kEncoderStopped, 1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_kEncoderRunning 1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}; 1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure M4MCS_InternalContext 1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief This structure defines the MCS context (private) 1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note This structure is used for all MCS calls to store the context 1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 bitPos; 1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* bit count of number of bits used so far */ 1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 *streamBuffer; 1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Bitstream Buffer */ 1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 byteCnt; 1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Number of Bytes written in Bitstream buffer*/ 1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 currBuff; 1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Current buffer holds, 4bytes of bitstream*/ 1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 prevByte; 1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Previous byte written in the buffer */ 1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 prevPrevByte; 1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Previous to previous byte written in the buffer */ 1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}NSWAVC_bitStream_t_MCS; 1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define _MAXnum_slice_groups 8 1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define _MAXnum_ref_frames_in_pic_order_cnt_cycle 256 1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 level_idc_index; 1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 MaxFrameNum; 1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 expectedDeltaPerPicOrderCntCycle; 1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 MaxPicOrderCntLsb; 1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 max_dec_frame_buffering; 1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* (pic_order_cnt_type == 1) */ 1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 offset_for_non_ref_pic; 1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 offset_for_top_to_bottom_field; 1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 frame_crop_left_offset; 1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 frame_crop_right_offset; 1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 frame_crop_top_offset; 1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 frame_crop_bottom_offset; 1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 offset_for_ref_frame[_MAXnum_ref_frames_in_pic_order_cnt_cycle]; 1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 PicWidthInMbs; 1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 FrameHeightInMbs; 1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 pic_width_in_mbs_minus1; 1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 pic_height_in_map_units_minus1; 1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef _CAP_FMO_ 1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 NumSliceGroupMapUnits; 2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 MaxPicSizeInMbs; 2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*_CAP_FMO_*/ 2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 profile_idc; 2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 reserved_zero_4bits; 2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 level_idc; 2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 seq_parameter_set_id; 2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 log2_max_frame_num_minus4; 2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 pic_order_cnt_type; 2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* if(pic_order_cnt_type == 0) */ 2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 log2_max_pic_order_cnt_lsb_minus4; 2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 num_ref_frames_in_pic_order_cnt_cycle; 2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* for( i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++ ) */ 2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 num_ref_frames; 2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool constraint_set0_flag; 2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool constraint_set1_flag; 2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool constraint_set2_flag; 2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool constraint_set3_flag; 2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool delta_pic_order_always_zero_flag; 2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool gaps_in_frame_num_value_allowed_flag; 2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool frame_mbs_only_flag; 2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool mb_adaptive_frame_field_flag; 2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool direct_8x8_inference_flag; 2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool frame_cropping_flag; 2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool vui_parameters_present_flag; 2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool Active; 2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* vui_seq_parameters_t vui_seq_parameters; */ 2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} ComSequenceParameterSet_t_MCS; 2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int16 pic_init_qp_minus26; 2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int16 pic_init_qs_minus26; 2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int16 chroma_qp_index_offset; 2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//#ifdef _CAP_FMO_ 2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* if( slice_group_map_type = = 0 ) */ 2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 run_length_minus1[_MAXnum_slice_groups]; 2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* else if( slice_group_map_type = = 2 ) */ 2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 top_left[_MAXnum_slice_groups]; 2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 bottom_right[_MAXnum_slice_groups]; 2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* else if( slice_group_map_type = = 6 ) */ 2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 pic_size_in_map_units_minus1; 2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 slice_group_change_rate_minus1; 2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 FirstMbInSliceGroup[_MAXnum_slice_groups]; 2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 LastMbInSliceGroup[_MAXnum_slice_groups]; 2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 *slice_group_id; 2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 *MapUnitToSliceGroupMap; 2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 *MbToSliceGroupMap; 2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt16 NumSliceGroupMapUnits; 2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 slice_group_map_type; 2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* else if( slice_group_map_type = = 3 || 4 || 5 */ 2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool slice_group_change_direction_flag; 2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool map_initialized; 2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi// #endif /*_CAP_FMO_*/ 2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 pic_parameter_set_id; 2647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 seq_parameter_set_id; 2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 num_ref_idx_l0_active_minus1; 2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 num_ref_idx_l1_active_minus1; 2677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 weighted_bipred_idc; 2687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 num_slice_groups_minus1; 2697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool entropy_coding_mode_flag; 2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* if( pic_order_cnt_type < 2 ) in the sequence parameter set */ 2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool pic_order_present_flag; 2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool weighted_pred_flag; 2747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool deblocking_filter_control_present_flag; 2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool constrained_intra_pred_flag; 2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool redundant_pic_cnt_present_flag; 2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool Active; 2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComSequenceParameterSet_t_MCS *p_active_sps; 2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} ComPictureParameterSet_t_MCS; 2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 bitPos; /*!< bit position in buffer */ 2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 totalBits; /*!< bit position in file (total bits read so far) */ 2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 lastTotalBits; /*!< bit position in file of the last VOP */ 2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 numBitsInBuffer; /*!< number of bits in buffer */ 2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 readableBytesInBuffer; /*!< number of bytes that can be read in decoder buffer*/ 2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 maxBufferSize; /*!< max buffer size in bit units */ 2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 *Buffer; /*!< char buffer at reading from file */ 2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 i8BitCnt; 2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 ui32TempBuff; 2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int8*pui8BfrPtr; 2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 ui32LastTwoBytes; /*!< stores the last read two bytes */ 2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} ComBitStreamMCS_t; 2977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 prev_frame_num; 3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 cur_frame_num; 3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 prev_new_frame_num; 3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 log2_max_frame_num_minus4; 3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 is_done; 3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 is_first; 3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 frame_count; 3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 frame_mod_count; 3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 POC_lsb; 3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 POC_lsb_mod; 3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_Num_Bytes_NALUnitLength; 3157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8* m_pDecoderSpecificInfo; /**< Pointer on specific information required 3177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi to create a decoder */ 3187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_decoderSpecificInfoSize;/**< Size of the specific information pointer above*/ 3197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8* m_pEncoderSPS; 3217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_encoderSPSSize; 3227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8* m_pEncoderPPS; 3247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_encoderPPSSize; 3257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8* m_pFinalDSI; 3277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_pFinalDSISize; 3287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_encoder_SPS_Cnt; 3307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComSequenceParameterSet_t_MCS *p_clip_sps; 3317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_encoder_PPS_Cnt; 3327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComPictureParameterSet_t_MCS *p_clip_pps; 3337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComSequenceParameterSet_t_MCS *p_encoder_sps; 3357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComPictureParameterSet_t_MCS *p_encoder_pps; 3367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComSequenceParameterSet_t_MCS encoder_sps; 3397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComPictureParameterSet_t_MCS encoder_pps; 3407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ComSequenceParameterSet_t_MCS clip_sps; 3417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Encoder SPS parameters */ 3437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_seq_parameter_set_id; 3447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_log2_max_frame_num_minus4; 3457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_pic_order_cnt_type; 3467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_log2_max_pic_order_cnt_lsb_minus4; /* applicable when POC type = 0 */ 3477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_delta_pic_order_always_zero_flag; 3487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 enc_offset_for_non_ref_pic; 3497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 enc_offset_for_top_to_bottom_field; 3507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_num_ref_frames_in_pic_order_cnt_cycle; /* range 0 to 255 */ 3517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* array of size num_ref_frames_in_pic_order_cnt_cycle */ 3527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 enc_offset_for_ref_frame[256]; 3537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_num_ref_frames; 3547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 enc_gaps_in_frame_num_value_allowed_flag; 3557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Input clip SPS parameters */ 3587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_seq_parameter_set_id; 3597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_log2_max_frame_num_minus4; 3607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_pic_order_cnt_type; 3617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_log2_max_pic_order_cnt_lsb_minus4; /* applicable when POC type = 0 */ 3627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_delta_pic_order_always_zero_flag; 3637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 clip_offset_for_non_ref_pic; 3647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 clip_offset_for_top_to_bottom_field; 3657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_num_ref_frames_in_pic_order_cnt_cycle; /* range 0 to 255 */ 3667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* array of size num_ref_frames_in_pic_order_cnt_cycle */ 3677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 clip_offset_for_ref_frame[256]; 3687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_num_ref_frames; 3697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 clip_gaps_in_frame_num_value_allowed_flag; 3707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 final_PPS_ID; 3727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 final_SPS_ID; 3737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi NSWAVC_bitStream_t_MCS encbs; 3747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} NSWAVC_MCS_t; 3767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 3807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 3817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure M4MCS_InternalContext 3827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief This structure defines the MCS context (private) 3837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note This structure is used for all MCS calls to store the context 3847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 3857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 3867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 3877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 3887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 3897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * MCS State and settings stuff */ 3907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_States State; /**< MCS internal state */ 3917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_StreamState VideoState;/**< State of the video encoding */ 3927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_StreamState AudioState;/**< State of the audio encoding */ 3937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool noaudio;/**< Flag to know if we have to deal with audio transcoding */ 3947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool novideo;/**< Flag to know if we have to deal with video transcoding */ 3957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VIDEOEDITING_ClipProperties InputFileProperties;/**< Input audio/video stream properties */ 3977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pInputFile; /**< Remember input file pointer between fast 3987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi open and normal open */ 3997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VIDEOEDITING_FileType InputFileType; /**< Remember input file type between fast 4007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi open and normal open */ 4017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool bFileOpenedInFastMode; /**< Flag to know if a particular reader 4027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi supports fast open */ 4037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiMaxMetadataSize; /**< Limitation on the max acceptable moov 4047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi size of a 3gpp file */ 4057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_Format EncodingVideoFormat; /**< Output video format, set by the user */ 4077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_FrameWidth EncodingWidth; /**< Output video width, set by the user */ 4087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_FrameHeight EncodingHeight; /**< Output video height, set by the user */ 4097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_FrameRate EncodingVideoFramerate; /**< Output video framerate, set by the user*/ 4107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiBeginCutTime; /**< Begin cut time, in milliseconds */ 4127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiEndCutTime; /**< Begin cut time, in milliseconds */ 4137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiMaxFileSize; /**< Maximum output file size, in bytes */ 4147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiAudioBitrate; /**< Targeted audio bitrate in bps */ 4157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiVideoBitrate; /**< Targeted video bitrate in bps */ 4167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 uiProgress; /**< Progress information saved at each step to be able to 4187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return it in case of pause */ 4197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 4217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Reader stuff */ 4227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context pReaderContext; /**< Context of the reader module */ 4237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_VideoStreamHandler* pReaderVideoStream; /**< Description of the read video stream */ 4247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AudioStreamHandler* pReaderAudioStream; /**< Description of the read audio stream */ 4257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool bUnsupportedVideoFound; /**< True if an unsupported video stream 4267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi type has been found */ 4277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool bUnsupportedAudioFound; /**< True if an unsupported audio stream 4287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi type has been found */ 4297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AccessUnit ReaderVideoAU; /**< Read video access unit */ 4307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AccessUnit ReaderVideoAU1; /**< Read video access unit */ 4317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AccessUnit ReaderVideoAU2; /**< Read video access unit */ 4327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AccessUnit ReaderAudioAU; /**< Read audio access unit */ 4337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AccessUnit ReaderAudioAU1; /**< Read audio access unit */ 4347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_AccessUnit ReaderAudioAU2; /**< Read audio access unit */ 4357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 m_pDataAddress1; /**< Temporary buffer for Access Unit */ 4367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 m_pDataAddress2; /**< Temporary buffer for Access Unit */ 4377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 m_pDataVideoAddress1; /**< Temporary buffer for Access Unit */ 4387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 m_pDataVideoAddress2; /**< Temporary buffer for Access Unit */ 4397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 m_audioAUDuration; /**< Audio AU duration */ 4407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 iAudioCtsOffset; /**< Audio AU CTS offset due to begin cut */ 4417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 4437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Video decoder stuff */ 4447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context pViDecCtxt; /**< Video decoder context */ 4457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double dViDecStartingCts; /**< Video CTS at which the decode/encode will start 4467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi (used for begin cut and pause/resume) */ 4477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double dViDecCurrentCts; /**< Video CTS to decode */ 4487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int32 iVideoBeginDecIncr; /**< CTS step for the begin cut decode (doesn't 4497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi need floating point precision) */ 4507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Double dCtsIncrement; /**< Cts increment from one video frame to another*/ 4517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool isRenderDup; /**< To handle duplicate frame rendering in case of 4527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi external decoding */ 4537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VIFI_ImagePlane* lastDecodedPlane; /**< Last decoded plane */ 4547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 4567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Video encoder stuff */ 4577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context pViEncCtxt; /**< Video encoder context */ 4587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VIFI_ImagePlane* pPreResizeFrame; /**< The decoded image before resize 4597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi (allocated if resize needed only)*/ 4607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiEncVideoBitrate; /**< Actual video bitrate for the video encoder */ 4617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 outputVideoTimescale; 4627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 encoderState; 4637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 4657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Audio decoder stuff */ 4667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context pAudioDecCtxt; /**< Audio (AAC) decoder context */ 4677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4AD_Buffer AudioDecBufferIn; /**< Input structure for the audio decoder */ 4687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4AD_Buffer AudioDecBufferOut; /**< Output structure for the audio decoder */ 4697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 pPosInDecBufferOut; /**< Position into the decoder buffer */ 4707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi AAC_DEC_STREAM_PROPS AacProperties; /**< Structure for new api to get AAC properties */ 4717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 4737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Sample Rate Convertor (SSRC) stuff */ 4747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_Instance_t SsrcInstance; /**< Context of the Ssrc */ 4757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_Scratch_t* SsrcScratch; /**< Working memory of the Ssrc */ 4767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi short iSsrcNbSamplIn; /**< Number of sample the Ssrc needs as input */ 4777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi short iSsrcNbSamplOut; /**< Number of sample the Ssrc outputs */ 4787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 pSsrcBufferIn; /**< Input of the SSRC */ 4797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 pSsrcBufferOut; /**< Output of the SSRC */ 4807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 pPosInSsrcBufferIn; /**< Position into the SSRC in buffer */ 4817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 pPosInSsrcBufferOut;/**< Position into the SSRC out buffer */ 4827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 483100d01836041713337dd9532e417fb010bfb381cBasavapatna Dattaguru M4OSA_Context pLVAudioResampler; 4847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 4877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * audio encoder stuff */ 4887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context pAudioEncCtxt; /**< Context of the audio encoder */ 4897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_AudioDecSpecificInfo pAudioEncDSI; /**< Decoder specific info built by the encoder*/ 4907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_AudioParams AudioEncParams;/**< Config of the audio encoder */ 4917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 pAudioEncoderBuffer; /**< Input of the encoder */ 4927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_MemAddr8 pPosInAudioEncoderBuffer; /**< Position into the encoder buffer */ 4937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 audioEncoderGranularity; /**< Minimum number of pcm samples needed 4947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi to feed audio encoder */ 4957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 4967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 4977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Writer stuff */ 4987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context pWriterContext; /**< Context of the writer module */ 4997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pOutputFile; /**< Output file to be created */ 5007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pTemporaryFile; /**< Temporary file to be created to store 5017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi metadata ("moov.bin") */ 5027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4SYS_StreamDescription WriterVideoStream; /**< Description of the written video stream */ 5037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4SYS_StreamDescription WriterAudioStream; /**< Description of the written audio stream */ 5047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4WRITER_StreamVideoInfos WriterVideoStreamInfo;/**< Video properties of the written video 5057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi stream */ 5067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4SYS_AccessUnit WriterVideoAU; /**< Written video access unit */ 5077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4SYS_AccessUnit WriterAudioAU; /**< Written audio access unit */ 5087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiVideoAUCount; /**< Number of video AU written in output 5097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi file */ 5107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiVideoMaxAuSize; /**< Max access unit size for the output 5117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi video stream */ 5127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiVideoMaxChunckSize; /**< Max chunck size for the output video 5137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi stream */ 5147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiAudioAUCount; /**< Number of audio AU written in output file */ 5157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiAudioMaxAuSize; /**< Max access unit size for the output 5167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi audio stream */ 5177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 uiAudioCts; /**< Audio AU cts (when audio is transcoded) */ 5187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool b_isRawWriter; /**< Boolean to know if the raw writer is 5197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi registered or not */ 5207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context pOutputPCMfile; /**< Output PCM file if not NULL */ 5217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 5237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Filesystem functions */ 5247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_FileReadPointer* pOsaFileReadPtr; /**< OSAL file read functions, 5257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi to be provided by user */ 5267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_FileWriterPointer* pOsaFileWritPtr; /**< OSAL file write functions, 5277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi to be provided by user */ 5287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 5307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Media and Codec registration */ 5317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< Table of M4VES_WriterInterface structures for avalaible Writers list */ 5327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_WriterInterface WriterInterface[M4WRITER_kType_NB]; 5337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< open, close, setoption,etc... functions of the used writer*/ 5347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4WRITER_GlobalInterface* pWriterGlobalFcts; 5357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< data manipulation functions of the used writer */ 5367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4WRITER_DataInterface* pWriterDataFcts; 5377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< Table of M4ENCODER_GlobalInterface structures for avalaible encoders list */ 5387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_GlobalInterface* pVideoEncoderInterface[M4ENCODER_kVideo_NB]; 5397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< Functions of the used encoder */ 5407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_GlobalInterface* pVideoEncoderGlobalFcts; 5417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pVideoEncoderExternalAPITable[M4ENCODER_kVideo_NB]; 5437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pCurrentVideoEncoderExternalAPI; 5447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pVideoEncoderUserDataTable[M4ENCODER_kVideo_NB]; 5457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pCurrentVideoEncoderUserData; 5467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< Table of M4ENCODER_AudioGlobalInterface structures for avalaible encoders list */ 5487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_AudioGlobalInterface* pAudioEncoderInterface[M4ENCODER_kAudio_NB]; 5497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< Table of internal/external flags for avalaible encoders list */ 5507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool pAudioEncoderFlag[M4ENCODER_kAudio_NB]; 5517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< Functions of the used encoder */ 5527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ENCODER_AudioGlobalInterface* pAudioEncoderGlobalFcts; 5537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pAudioEncoderUserDataTable[M4ENCODER_kAudio_NB]; 5547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pCurrentAudioEncoderUserData; 5557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4READER_GlobalInterface* m_pReaderGlobalItTable[M4READER_kMediaType_NB]; 5577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4READER_DataInterface* m_pReaderDataItTable[M4READER_kMediaType_NB]; 5587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4READER_GlobalInterface* m_pReader; 5597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4READER_DataInterface* m_pReaderDataIt; 5607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 m_uiNbRegisteredReaders; 5617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4DECODER_VideoInterface* m_pVideoDecoder; 5637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4DECODER_VideoInterface* m_pVideoDecoderItTable[M4DECODER_kVideoType_NB]; 5647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS 5657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* m_pCurrentVideoDecoderUserData; 5667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* m_pVideoDecoderUserDataTable[M4DECODER_kVideoType_NB]; 5677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */ 5687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 m_uiNbRegisteredVideoDec; 5697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4AD_Interface* m_pAudioDecoder; 5717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4AD_Interface* m_pAudioDecoderItTable[M4AD_kType_NB]; 5727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool m_pAudioDecoderFlagTable[M4AD_kType_NB]; /**< store indices of external 5737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi decoders */ 5747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* m_pAudioDecoderUserDataTable[M4AD_kType_NB]; 5757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* m_pCurrentAudioDecoderUserData; 5767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_MediaRendering MediaRendering; /**< FB: to crop, resize, or render black borders*/ 5787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context m_air_context; 5797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool bExtOMXAudDecoder; /* External OMX Audio decoder */ 5807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**< FlB 2009.03.04: Audio effects*/ 5827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_EffectSettings *pEffects; /**< List of effects */ 5837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 nbEffects; /**< Number of effects in the above list */ 5847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Int8 pActiveEffectNumber; /**< Effect ID to be applied, if -1, 5857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi no effect has to be applied currently*/ 5867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 5877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4MCS_SUPPORT_STILL_PICTURE 5887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool m_bIsStillPicture; /**< =TRUE if input file is a still picture 5897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi (JPEG, PNG, BMP, GIF)*/ 5907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MCS_Context m_pStillPictureContext; /**< Context of the still picture part of MCS*/ 5917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*M4MCS_SUPPORT_STILL_PICTURE*/ 5927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi NSWAVC_MCS_t *m_pInstance; 5937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt8 *H264MCSTempBuffer; 5947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 H264MCSTempBufferSize; 5957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 H264MCSTempBufferDataSize; 5967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool bH264Trim; 5977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Flag when to get lastdecodedframeCTS */ 5987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Bool bLastDecodedFrameCTS; 5990a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury M4OSA_Int32 encodingVideoProfile; 6000a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury M4OSA_Int32 encodingVideoLevel; 6017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 6027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4MCS_InternalContext; 6037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 6047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 6057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __M4MCS_INTERNALTYPES_H__ */ 6067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 607