diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/h263decoder/inc/core.h --- a/videoeditorengine/h263decoder/inc/core.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,265 +0,0 @@ -/* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - Initial contribution -* -* Contributors: -* Ixonos Plc -* -* Description: -* Internal header for the core module of the Video Decoder Core. -* -*/ - - -#ifndef _CORE_H_ -#define _CORE_H_ - -#include "vdcmvc.h" -#include "vdcaic.h" -#include "vdeims.h" -#include "viddemux.h" - -#include "biblin.h" - - -/* - * Defines - */ - -#define vdcMalloc malloc -#define vdcCalloc calloc -#define vdcRealloc realloc -#define vdcDealloc free - -#ifndef vdcAssert -#define vdcAssert(exp) assert(exp); -#endif - - -/* - * Structs and typedefs - */ - -/* {{-output"vdcPictureParam_t_info.txt" -ignore"*" -noCR}} - vdcPictureParam_t is used to store the attributes for one picture. - {{-output"vdcPictureParam_t_info.txt"}} */ - -/* {{-output"vdcPictureParam_t.txt"}} */ -typedef struct { - int tr; /* the TR field or a combination of ETR and TR - if ETR is used */ - - int trd; /* Difference between present and previous tr */ - - int prevTR; /* TR of the previous frame */ - - /* The following three fields correspond to the flags in the PTYPE field */ - int fSplitScreenIndicator; - int fDocumentCameraIndicator; - int fFullPictureFreezeRelease; - - int pictureType; /* Picture type is one of the following: - VDX_PIC_TYPE_I INTRA - VDX_PIC_TYPE_P INTER - VDX_PIC_TYPE_PB PB (Annex G) - VDX_PIC_TYPE_IPB Improved PB - VDX_PIC_TYPE_B B (Annex O) - VDX_PIC_TYPE_EI EI (Annex O) - VDX_PIC_TYPE_EP EP (Annex O) */ - - int fPLUSPTYPE; /* 0 = no PLUSPTYPE, 1 = PLUSPTYPE exists */ - - int cpm; /* The CPM field */ - int psbi; /* The PSBI field, valid only if cpm == 1 */ - - /* The following two fields are relevant if picture type indicates - a PB frame */ - int trb; /* The TRB field */ - int dbquant; /* The DBQUANT field */ - - int lumWidth; /* the width and height of the luminance */ - int lumHeight; /* image to display (divisible with 4) */ - - int lumMemWidth; /* the width and height of the luminance */ - int lumMemHeight; /* image in memory (divisible with 16) */ - - /* The following six fields are relevant only if fSS is off */ - int numGOBs; /* Number of GOBs in picture */ - int fLastGOBSizeDifferent; /* Flag indicating different size of last GOB */ - int numMBsInGOB; /* Number of macroblocks in other GOBs than - the last one */ - int numMBsInLastGOB; /* Number of macroblocks in last GOB */ - int numMBLinesInGOB; /* Number of macroblock lines in one GOB */ - int numMBsInMBLine; /* Number of macroblocks in macroblock line */ - - /* The following six fields are relevant only if fSS is on */ - int mbaFieldWidth; /* MBA Field width */ - int mbaMaxValue; /* MBA maximum value. See Table K.2/H.263 */ - int swiFieldWidth; /* SWI Field width */ - int swiMaxValue; /* SWI maximum value. See Table K.3/H.263 */ - - int fUMV; /* Unrestricted Motion Vector Mode */ - int fSAC; /* Syntax-based Arithmetic Coding Mode */ - int fAP; /* Advanced Prediction Mode */ - - int fRPR; /* Reference Picture Resampling Mode */ - int fRRU; /* Reduced-Resolution Update Mode */ - int rtype; /* Rounding type (RTYPE) */ - - int elnum; /* Enhancement layer number */ - - int fCustomSourceFormat; /* Flag indicating if custom source format - is used */ - - int fAIC; /* Advanced INTRA Coding Mode */ - int fDF; /* Deblocking Filter Mode */ - int fSS; /* Slice Structured Mode */ - int fRPS; /* Reference Picture Selection Mode, - Note: always valid and therefore should be - the same as instance->fRPS after decoding - the first picture header. */ - int fISD; /* Independent Segment Decoding Mode */ - int fAIV; /* Alternate INTER VLC Mode */ - int fMQ; /* Modified Quantization Mode */ - - /* Picture Clock Frequence (PCF) fields */ - int fCustomPCF; /* 0 = CIF PCF, 1 = custom PCF */ - int pcfRate; /* PCF = pcfRate / pcfScale Hz */ - int pcfScale; - - /* The following field is relevant only if fUMV is on with fPLUSPTYPE */ - int fUMVLimited; /* 0 = motion vector range is not limited, - 1 = motion vector range is limited - according to Annex D */ - - int fMVsOverPictureBoundaries; - /* 0 = prediction over picture boundaries is - disallowed, - 1 = prediction over picture boundaries is - allowed */ - - /* The MPEG-4 Video Object Layer (VOL) parameters */ -/*** MPEG-4 REVISION ***/ - - int vo_id; /* VO Id */ - int vol_id; /* VO Id */ - - u_char error_res_disable; /* VOL disable error resilence mode */ - u_char reversible_vlc; /* VOL reversible VLCs */ - u_char data_partitioned; /* VOL data partitioning */ - - int time_increment_resolution; /* resolution of the time increment - in the VOP header */ - - /* The in H.263 not existing MPEG-4 Video Object Plane (VOP) parameters */ - - int mod_time_base; /* VOP modulo time base (absolute) */ - int time_base_incr; /* time base increment of the current VOP - (used in HEC of Video Packet Header, - when time_base_incr of the VOP is - retransmitted */ - int time_inc; /* VOP time increment - (relative to last mod_time_base) */ - int intra_dc_vlc_thr; - int fcode_forward; - u_char fixed_vop_rate; /* fixed vop rate indication, added for transcoding */ -/*** End MPEG-4 REVISION ***/ - -} vdcPictureParam_t; -/* {{-output"vdcPictureParam_t.txt"}} */ - - -/* {{-output"vdcInstance_t_info.txt" -ignore"*" -noCR}} - vdcInstance_t holds the instance data for a Video Decoder Core instance. - This structure is used to keep track of the internal state of - a VDC instance. - {{-output"vdcInstance_t_info.txt"}} */ - -/* {{-output"vdcInstance_t.txt"}} */ -typedef struct { - vdeImsItem_t *currFrame; /* Current P/I frame (image store item) */ - vdeImsItem_t *bFrame; /* Current B frame (of PB, image store item) */ - /* NULL pointer indicates that the frames are - not valid. */ - - vdcPictureParam_t pictureParam; - /* Picture parameters for the current picture */ - - int32 frameNum; /* Frame number */ - int32 frameNumForBFrame; /* Frame number for B frame */ - - int gfid; /* GOB Frame ID */ - vdxPictureHeader_t *prevPicHeader; /* Header of the previous picture */ - int fPrevPicHeaderReliable; /* if header is not 100% reliable, it is better not to compare it with the next header */ - - mvcData_t mvcData; /* Storage for motion vector data */ - -/*** MPEG-4 REVISION ***/ - - aicData_t aicData; /* Storage AC/DC reconstruction*/ - - char *user_data; /* User Data */ - int user_data_length; - -/*** End MPEG-4 REVISION ***/ - - u_int32 nOfDecodedFrames; /* Counter for (partially) successfully decoded frames */ - u_char fIntraGot; /* non-zero = INTRA frame has been decoded */ - u_char fEOS; /* 1 if EOS has been reached, 0 otherwise */ - - int fRPS; /* Reference Picture Selection in use? - At first, set to zero in vdcOpen. - Then, modified according to the bitstream. */ - - int rpsMode; /* both/either/neither ACK and/or/nor NACK, - VDX_RPS_MODE_XXX */ - - int fIgnoreRPSBufferUpdate;/* 0 = segment buffering in FIFO mode as normally - 1 = decoded pictures are not put into - reference segment buffers */ - - int numAnnexNScalabilityLayers; - /* -1 = no frames decoded yet, - 0 = Nokia-proprietary Annex N scalability - layers not in use, - 2.. = number of scalability layers */ - - int fGFIDShouldChange; /* 1, if GFID should change, 0 otherwise */ - - vdeIms_t *imageStore; /* Pointer to image store */ - - void *hParent; /* typeless handle to vdeInstance_t */ - - u_int32 snapshotStartCallback; /* function pointer to a function informing w - the beginning of a snapshot */ - - u_int32 snapshotEndCallback; /* function pointer to a function informing - the end of a snapshot */ - - int snapshotStatus; /* snapshot transmission status */ - - u_int32 reportPictureSizeCallback; /* callback function for informing - frame size */ - -} vdcInstance_t; -/* {{-output"vdcInstance_t.txt"}} */ - - -/* - * Function prototypes - */ - -VDC_INLINE int VDC_MIN(int a, int b) {return a < b ? a : b;} -VDC_INLINE int VDC_MAX(int a, int b) {return a > b ? a : b;} - - -#endif - -// End of file