1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* /////////////////////////////////////////////////////////////////////// 2bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// 3bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// INTEL CORPORATION PROPRIETARY INFORMATION 4bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// This software is supplied under the terms of a license agreement or 5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// nondisclosure agreement with Intel Corporation and may not be copied 6bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// or disclosed except in accordance with the terms of that agreement. 7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// Copyright (c) 2008 Intel Corporation. All Rights Reserved. 8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// 9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// Description: Common definitions for parsing VC-1 bitstreams. 10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// 11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/ 12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef _VC1PARSE_COMMON_DEFS_H_ 14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define _VC1PARSE_COMMON_DEFS_H_ 15bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 16bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifdef __cplusplus 17bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern "C" { 18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 19bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 20bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include <stdint.h> 21bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 22bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** @weakgroup vc1parse_common_defs VC-1 Common Definitions */ 23bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** @ingroup vc1parse_common_defs */ 24bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*@{*/ 25bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 26bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This defines the maximum number of horizontal macroblocks in a picture. */ 27bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VC1_WIDTH_MB_MAX ((2048+15)/16) 28bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 29bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This defines the maximum number of vertical macroblocks in a picture. */ 30bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VC1_HEIGHT_MB_MAX ((1088+15)/16) 31bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 32bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This defines the maximum number of bitplane storage per picture. */ 33bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VC1_MAX_BITPLANE_CHUNKS 3 34bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 35bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This defines the value for an invalid BFRACTION syntax element. */ 36bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VC1_BFRACTION_INVALID 0 37bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This defines the value for BFRACTION syntax element that defines a BI 39bd8388b4555645b3d29abc6a94c303638064d69awonjong.leepicture. */ 40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VC1_BFRACTION_BI 9 41bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 42bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the various supported profiles as defined in 43bd8388b4555645b3d29abc6a94c303638064d69awonjong.leePROFILE syntax element. */ 44bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 45bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 46bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_PROFILE_SIMPLE, 47bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_PROFILE_MAIN, 48bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_PROFILE_RESERVED, 49bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_PROFILE_ADVANCED 50bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 52bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the frame coding mode as defined in FCM syntax 53bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeelement. */ 54bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 55bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 56bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_FCM_PROGRESSIVE, 57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_FCM_FRAME_INTERLACE = 2, 58bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_FCM_FIELD_INTERLACE = 3 59bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 60bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 61bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the various bitplane types as defined in IMODE 62bd8388b4555645b3d29abc6a94c303638064d69awonjong.leesyntax element. */ 63bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 64bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 65bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_BITPLANE_RAW_MODE, 66bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_BITPLANE_NORM2_MODE, 67bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_BITPLANE_DIFF2_MODE, 68bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_BITPLANE_NORM6_MODE, 69bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_BITPLANE_DIFF6_MODE, 70bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_BITPLANE_ROWSKIP_MODE, 71bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_BITPLANE_COLSKIP_MODE 72bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 73bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 74bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the various motion vector modes as defined in 75bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMVMODE or MVMODE2 syntax element. */ 76bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 77bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 78bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_MVMODE_1MV, 79bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifdef VBP 80bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_MVMODE_HPELBI_1MV, 81bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_MVMODE_HPEL_1MV, 82bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 83bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_MVMODE_HPEL_1MV, 84bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_MVMODE_HPELBI_1MV, 85bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 86bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_MVMODE_MIXED_MV, 87bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_MVMODE_INTENSCOMP 88bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 89bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 90bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the extended differential motion vector range flag 91bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeas defined in DMVRANGE syntax element. */ 92bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 93bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 94bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DMVRANGE_NONE, 95bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DMVRANGE_HORIZONTAL_RANGE, 96bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DMVRANGE_VERTICAL_RANGE, 97bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DMVRANGE_HORIZONTAL_VERTICAL_RANGE 98bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 99bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 100bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the intensity compensation field as defined in 101bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeINTCOMPFIELD syntax element. */ 102bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 103bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 104bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_INTCOMP_TOP_FIELD = 1, 105bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_INTCOMP_BOTTOM_FIELD = 2, 106bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_INTCOMP_BOTH_FIELD = 3 107bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 108bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 109bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the differential quantizer profiles as defined in 110bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeDQPROFILE syntax element. */ 111bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 112bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 113bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DQPROFILE_ALL4EDGES, 114bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DQPROFILE_DBLEDGES, 115bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DQPROFILE_SNGLEDGES, 116bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_DQPROFILE_ALLMBLKS 117bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 118bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 119bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the conditional overlap flag as defined in CONDOVER 120bd8388b4555645b3d29abc6a94c303638064d69awonjong.leesyntax element. */ 121bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 122bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 123bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_CONDOVER_FLAG_NONE = 0, 124bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_CONDOVER_FLAG_ALL = 2, 125bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_CONDOVER_FLAG_SOME = 3 126bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 127bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 128bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This enumeration defines the type of quantizer to be used and is derived 129bd8388b4555645b3d29abc6a94c303638064d69awonjong.leefrom bitstream syntax. */ 130bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum 131bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 132bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_QUANTIZER_NONUNIFORM, 133bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VC1_QUANTIZER_UNIFORM 134bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}; 135bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 136bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This structure represents the various bitplanes within VC-1 bitstream. */ 137bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct 138bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 139bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t invert; 140bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t imode; 141bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t *databits; 142bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vc1_Bitplane; 143bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 144bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This structure represents all bitstream metadata needed for register programming. */ 145bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct 146bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 147bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // From Sequence Layer for Advanced Profile 148bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PROFILE; /** 2 bit(s). */ 149bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifdef VBP 150bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t LEVEL; 151bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 152bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t POSTPROCFLAG; /** 1 bit(s). */ 153bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PULLDOWN; /** 1 bit(s). */ 154bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t INTERLACE; /** 1 bit(s). */ 155bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TFCNTRFLAG; /** 1 bit(s). */ 156bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t FINTERPFLAG; /** 1 bit(s). */ 157bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PSF; /** 1 bit(s). */ 158bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t HRD_NUM_LEAKY_BUCKETS; /** 5 bit(s). */ 159bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 160bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // From STRUCT_C 161bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MAXBFRAMES; /** 3 bit(s). */ 162bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MULTIRES; /** 1 bit(s). */ 163bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 164bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // From EntryPoint Layer for Advanced Profile 165bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PANSCAN_FLAG; 166bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t REFDIST_FLAG; 167bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t LOOPFILTER; 168bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t FASTUVMC; 169bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t EXTENDED_MV; 170bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t DQUANT; 171bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t VSTRANSFORM; 172bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t OVERLAP; 173bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t QUANTIZER; 174bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t EXTENDED_DMV; 175bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPY_FLAG; 176bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPY; 177bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPUV_FLAG; 178bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPUV; 179bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 180bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // From Picture Header 181bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGERED; /** 1 bit(s). */ 182bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RNDCTRL; /** 1 bit(s), rcv specific. */ 183bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 184bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // REFDIST is present only in field-interlaced mode on I/I, I/P, P/I, P/P frames 185bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // From Canmore, looks like this needs to be propagated to following B frames 186bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t REFDIST; 187bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t INTCOMPFIELD; /** ? bit(s)? */ 188bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t LUMSCALE2; /** 6 bit(s). */ 189bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t LUMSHIFT2; /** 6 bit(s). */ 190bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t bp_raw[VC1_MAX_BITPLANE_CHUNKS]; 191bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 192bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // From SequenceLayerHeader, EntryPointHeader or Struct_A 193bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint16_t width; 194bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint16_t height; 195bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint16_t widthMB; 196bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint16_t heightMB; 197bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 198bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifdef VBP 199bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t CLOSED_ENTRY; 200bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t BROKEN_LINK; 201bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t SYNCMARKER; 202bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 203bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 204bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vc1_metadata_t; 205bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 206bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This structure represents the sequence header for advanced profile. */ 207bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct 208bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 209bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 210bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 211bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 212bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 213bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 214bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned BITRTQ_POSTPROC:5; 215bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRMRTQ_POSTPROC:3; 216bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned COLORDIFF_FORMAT:2; 217bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned LEVEL:3; 218bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PROFILE:2; 219bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:17; 220bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_flags; 221bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 222bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 223bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 224bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:17; 225bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PROFILE:2; 226bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned LEVEL:3; 227bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned COLORDIFF_FORMAT:2; 228bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRMRTQ_POSTPROC:3; 229bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned BITRTQ_POSTPROC:5; 230bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_flags; 231bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 232bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t flags; 233bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 234bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 235bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 236bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 237bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 238bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 239bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 240bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DISPLAY_EXT:1; 241bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PSF:1; 242bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned RESERVED:1; 243bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FINTERPFLAG:1; 244bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned TFCNTRFLAG:1; 245bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned INTERLACE:1; 246bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PULLDOWN:1; 247bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MAX_CODED_HEIGHT:12; 248bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MAX_CODED_WIDTH:12; 249bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned POSTPROCFLAG:1; 250bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_max_size; 251bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 252bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 253bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 254bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned POSTPROCFLAG:1; 255bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MAX_CODED_WIDTH:12; 256bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MAX_CODED_HEIGHT:12; 257bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PULLDOWN:1; 258bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned INTERLACE:1; 259bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned TFCNTRFLAG:1; 260bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FINTERPFLAG:1; 261bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned RESERVED:1; 262bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PSF:1; 263bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DISPLAY_EXT:1; 264bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_max_size; 265bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 266bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t max_size; 267bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 268bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 269bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 270bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 271bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 272bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 273bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 274bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned ASPECT_RATIO_FLAG:1; 275bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DISP_VERT_SIZE:14; 276bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DISP_HORIZ_SIZE:14; 277bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:3; 278bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_disp_size; 279bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 280bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 281bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 282bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:3; 283bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DISP_HORIZ_SIZE:14; 284bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DISP_VERT_SIZE:14; 285bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned ASPECT_RATIO_FLAG:1; 286bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_disp_size; 287bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 288bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t disp_size; 289bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 290bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 291bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t ASPECT_RATIO; // 4 bits 292bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 293bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 294bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 295bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 296bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 297bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 298bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned ASPECT_VERT_SIZE:8; 299bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned ASPECT_HORIZ_SIZE:8; 300bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:16; 301bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_aspect_size; 302bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 303bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 304bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 305bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:16; 306bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned ASPECT_HORIZ_SIZE:8; 307bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned ASPECT_VERT_SIZE:8; 308bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_aspect_size; 309bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 310bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t aspect_size; 311bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 312bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 313bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t FRAMERATE_FLAG; // 1b 314bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t FRAMERATEIND; // 1b 315bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 316bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 317bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 318bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 319bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 320bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 321bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRAMERATEDR:4; 322bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRAMERATENR:8; 323bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:20; 324bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_framerate_fraction; 325bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 326bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 327bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 328bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:20; 329bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRAMERATENR:8; 330bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRAMERATEDR:4; 331bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_framerate_fraction; 332bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 333bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t framerate_fraction; 334bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 335bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 336bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint16_t FRAMERATEEXP; // 16b 337bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t COLOR_FORMAT_FLAG; // 1b 338bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 339bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 340bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 341bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 342bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 343bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 344bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MATRIX_COEF:8; 345bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned TRANSFER_CHAR:8; 346bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned COLOR_PRIM:8; 347bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:8; 348bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_color_format; 349bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 350bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 351bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 352bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad:8; 353bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned COLOR_PRIM:8; 354bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned TRANSFER_CHAR:8; 355bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MATRIX_COEF:8; 356bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } seq_color_format; 357bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 358bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t color_format; 359bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 360bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 361bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t HRD_PARAM_FLAG; // 1b 362bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t HRD_NUM_LEAKY_BUCKETS; // 5b 363bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // No need to parse remaining items - not needed so far 364bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vc1_SequenceLayerHeader; 365bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 366bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This structure represents metadata for struct c. */ 367bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct 368bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 369bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 370bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 371bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 372bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 373bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 374bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res6:1; 375bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FINTERPFLAG:1; 376bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned QUANTIZER:2; 377bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MAXBFRAMES:3; 378bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned RANGERED:1; 379bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned SYNCMARKER:1; 380bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned OVERLAP:1; 381bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res5:1; 382bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned VSTRANSFORM:1; 383bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DQUANT:2; 384bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned EXTENDED_MV:1; 385bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FASTUVMC:1; 386bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res4:1; 387bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MULTIRES:1; 388bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res3:1; 389bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned LOOPFILTER:1; 390bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned BITRTQ_POSTPROC:5; 391bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRMRTQ_POSTPROC:3; 392bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PROFILE:4; 393bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } struct_c; 394bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 395bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 396bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 397bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PROFILE:4; 398bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FRMRTQ_POSTPROC:3; 399bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned BITRTQ_POSTPROC:5; 400bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned LOOPFILTER:1; 401bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res3:1; 402bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MULTIRES:1; 403bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res4:1; 404bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FASTUVMC:1; 405bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned EXTENDED_MV:1; 406bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DQUANT:2; 407bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned VSTRANSFORM:1; 408bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res5:1; 409bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned OVERLAP:1; 410bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned SYNCMARKER:1; 411bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned RANGERED:1; 412bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned MAXBFRAMES:3; 413bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned QUANTIZER:2; 414bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FINTERPFLAG:1; 415bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned res6:1; 416bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } struct_c; 417bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 418bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t struct_c_rcv; 419bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 420bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 421bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 422bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 423bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 424bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 425bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 426bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned VERT_SIZE:16; 427bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned HORIZ_SIZE:16; 428bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } struct_a; 429bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 430bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 431bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 432bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned HORIZ_SIZE:16; 433bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned VERT_SIZE:16; 434bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } struct_a; 435bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 436bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t struct_a_rcv; 437bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 438bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 439bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vc1_RcvSequenceHeader; 440bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 441bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This structure represents metadata for entry point layers. */ 442bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct 443bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 444bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 445bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 446bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 447bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 448bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 449bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned QUANTIZER:2; 450bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned OVERLAP:1; 451bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned VSTRANSFORM:1; 452bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DQUANT:2; 453bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned EXTENDED_MV:1; 454bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FASTUVMC:1; 455bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned LOOPFILTER:1; 456bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned REFDIST_FLAG:1; 457bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PANSCAN_FLAG:1; 458bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned CLOSED_ENTRY:1; 459bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned BROKEN_LINK:1; 460bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad1:19; 461bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } ep_flags; 462bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 463bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 464bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 465bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad1:19; 466bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned BROKEN_LINK:1; 467bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned CLOSED_ENTRY:1; 468bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned PANSCAN_FLAG:1; 469bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned REFDIST_FLAG:1; 470bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned LOOPFILTER:1; 471bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned FASTUVMC:1; 472bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned EXTENDED_MV:1; 473bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned DQUANT:2; 474bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned VSTRANSFORM:1; 475bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned OVERLAP:1; 476bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned QUANTIZER:2; 477bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } ep_flags; 478bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 479bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t flags; 480bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 481bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 482bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // Skipping HRD data because it is not needed for our processing 483bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 484bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee union 485bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 486bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef MFDBIGENDIAN 487bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 488bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 489bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned CODED_HEIGHT:12; 490bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned CODED_WIDTH:12; 491bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad2:8; 492bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } ep_size; 493bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#else 494bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee struct 495bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee { 496bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned pad2:8; 497bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned CODED_WIDTH:12; 498bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee unsigned CODED_HEIGHT:12; 499bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } ep_size; 500bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 501bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t size; 502bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee }; 503bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 504bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t CODED_SIZE_FLAG; /** 1 bit(s). */ 505bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t EXTENDED_DMV; /** 1 bit(s). */ 506bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPY_FLAG; /** 1 bit(s). */ 507bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPY; /** 3 bit(s). */ 508bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPUV_FLAG; /** 1 bit(s). */ 509bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGE_MAPUV; /** 3 bit(s). */ 510bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vc1_EntryPointHeader; 511bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 512bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** This structure represents metadata for slice and picture layers. */ 513bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct 514bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{ 515bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /* Slice layer. */ 516bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint16_t SLICE_ADDR; /** 9 bit(s). */ 517bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 518bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /* Picture layer for simple or main profile. */ 519bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RANGEREDFRM; /** 1 bit(s). */ 520bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PTYPE; /** 4 bit(s)? */ 521bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int8_t BFRACTION_NUM; /** ? bit(s). */ 522bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int16_t BFRACTION_DEN; /** ? bit(s). */ 523bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PQINDEX; /** 5 bit(s). */ 524bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t HALFQP; /** 1 bit(s). */ 525bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PQUANTIZER; /** 1 bit(s). */ 526bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MVRANGE; /** 3 bit(s)? */ 527bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MVMODE; /** 4 bit(s)? */ 528bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MVMODE2; /** 3 bit(s)? */ 529bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t LUMSCALE; /** 6 bit(s). */ 530bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t LUMSHIFT; /** 6 bit(s). */ 531bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MVTAB; /** 2 bit(s). */ 532bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t CBPTAB; /** 2 bit(s). */ 533bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TTMBF; /** 1 bit(s). */ 534bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TTFRM; /** 2 bit(s). */ 535bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TRANSACFRM; /** 2 bit(s)? */ 536bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TRANSACFRM2; /** 2 bit(s)? */ 537bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TRANSDCTAB; /** 1 bit(s). */ 538bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 539bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /* Picture layer for advanced profile. */ 540bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t FCM; /** 2 bit(s)? */ 541bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t FPTYPE; /** 3 bit(s). */ 542bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TFCNTR; /** 8 bit(s) */ 543bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RPTFRM; /** 2 bit(s) */ 544bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t TFF; /** 1 bit(s). */ 545bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RFF; /** 1 bit(s) */ 546bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t RNDCTRL; /** 1 bit(s). */ 547bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t UVSAMP; /** 1 bit(s). */ 548bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t POSTPROC; /** 2 bit(s). */ 549bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t CONDOVER; /** 2 bit(s)? */ 550bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t DMVRANGE; /** ? bit(s)? */ 551bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MV4SWITCH; /** 1 bit(s). */ 552bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t INTCOMP; /** 1 bit(s). */ 553bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MBMODETAB; /** 2 bit(s). */ 554bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MV2BPTAB; /** 2 bit(s). */ 555bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t MV4BPTAB; /** 2 bit(s). */ 556bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t NUMREF; /** 1 bit(s). */ 557bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t REFFIELD; /** 1 bit(s). */ 558bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 559bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /* PAN SCAN */ 560bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PS_PRESENT; /** 1 bit(s). */ 561bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t number_of_pan_scan_window; /** 4 max. */ 562bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee viddec_vc1_pan_scan_window_t PAN_SCAN_WINDOW[VIDDEC_PANSCAN_MAX_OFFSETS]; 563bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 564bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /* VOPDQUANT. */ 565bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PQDIFF; /** 3 bit(s). */ 566bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t ABSPQ; /** 5 bit(s). */ 567bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t DQUANTFRM; /** 1 bit(s). */ 568bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t DQPROFILE; /** 2 bit(s). */ 569bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t DQSBEDGE; /** 2 bit(s). */ 570bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t DQBILEVEL; /** 1 bit(s). */ 571bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 572bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /* Others. */ 573bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PTypeField1; 574bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t PTypeField2; 575bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t PQUANT; 576bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t CurrField; 577bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t BottomField; 578bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t UniformQuant; 579bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 580bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifdef VBP 581bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t raw_MVTYPEMB; 582bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t raw_DIRECTMB; 583bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t raw_SKIPMB; 584bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t raw_ACPRED; 585bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t raw_FIELDTX; 586bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t raw_OVERFLAGS; 587bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t raw_FORWARDMB; 588bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 589bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee vc1_Bitplane MVTYPEMB; 590bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee vc1_Bitplane DIRECTMB; 591bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee vc1_Bitplane SKIPMB; 592bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee vc1_Bitplane ACPRED; 593bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee vc1_Bitplane FIELDTX; 594bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee vc1_Bitplane OVERFLAGS; 595bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee vc1_Bitplane FORWARDMB; 596bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint32_t ALTPQUANT; 597bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee uint8_t DQDBEDGE; 598bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 599bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 600bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vc1_PictureLayerHeader; 601bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 602bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*@}*/ 603bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 604bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifdef __cplusplus 605bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} 606bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif /* __cplusplus. */ 607bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 608bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif /* _VC1PARSE_COMMON_DEFS_H_. */ 609