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