aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/vdec/include/vdec_info_wmv.h
blob: 13a5536cb6f23d5f5f273baf3fda4dd598cce00d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
#ifndef _VDEC_INFO_WMV_H_
#define _VDEC_INFO_WMV_H_

//#include "drv_config.h"

#include "vdec_usage.h"
#include "vdec_info_common.h"

#define MAXHALFQP           8
#define MAXHIGHRATEQP       8
#define MAX3QP              8

#define MIN_BITRATE_MB_TABLE 50
#define MAX_BITRATE_DCPred_IMBInPFrame 128
#define NUMBITS_SLICE_SIZE 5 // maximum 32 MB's
#define NUMBITS_SLICE_SIZE_WMV2 3 // To indicate Processor's #


typedef enum
{
    ALL_4EDGES = 0,
    DOUBLE_EDGES,
    SINGLE_EDGES,
    ALL_MBS
} tagMbQtProfile;


typedef enum
{
    Normal = 0,
    RowPredict,
    ColPredict
} SKIPBITCODINGMODE;


enum { LowRate = 1, MidRate, HighRate};

enum {XFORMMODE_8x8, XFORMMODE_8x4, XFORMMODE_4x8, XFORMMODE_MBSWITCH/* pseudo-mode */, XFORMMODE_4x4};


typedef enum
{
    WMV_Succeeded = 0,
    WMV_Failed,                         // non-specific error; WMVideoDecReset() and try again at next keyframe.
    WMV_BadMemory,                      // Catastrophic error; close codec and reinit before playing more content.
    WMV_NoKeyFrameDecoded,              // A keyframe must be the first frame after starting or a reset.  WMVideoDecReset(), seek to a keyframe & continue.
    WMV_CorruptedBits,                  // Corrupt bitstream;  WMVideoDecReset() then seek to the next keyframe and try again.
    WMV_UnSupportedOutputPixelFormat,   // Try another color space (we generally like YV12, YUY2, and some RGB formats but not all WMV profiles map to all color spaces)
    WMV_UnSupportedCompressedFormat,    // Either FourCC or internal stream info indicates we can't play this clip.
    WMV_InValidArguments,               // Bad Arguement (can also occur when memory is corrupt).
    WMV_BadSource,                      // N/A in a production decoder -- treat as a catastrophic error.

    WMV_NoMoreOutput,                   // WMVideoDecGetOutput called when no output is available.  Don't update screen but OK to continue to decode
    WMV_EndOfFrame,                     // WMVDecCBGetData returns this when there is no more data available for this frame.
    WMV_BrokenFrame,                    // Decoder thinks more data is needed but no more is available, treat as WMV_CorruptedBits

    WMV_UnSupportedTransform            // Returned by the CallBack if an indicated external output transform is not supported in hardware
    // this is a request to the Codec to do the output transform inside the codec as part of GetOutput.
} tagWMVDecodeStatus;


typedef enum
{
    PROGRESSIVE = 0,
    INTERLACEFRAME,
    INTERLACEFIELD
} tagFrameCodingMode;


typedef enum
{
    NOT_WMV3 = -1,
    WMV3_SIMPLE_PROFILE,
    WMV3_MAIN_PROFILE,
    WMV3_PC_PROFILE,
    WMV3_ADVANCED_PROFILE,
    WMV3_SCREEN
} tagWMVProfile;


typedef enum
{
    MIXED_MV,
    ALL_1MV,
    ALL_1MV_HALFPEL,
    ALL_1MV_HALFPEL_BILINEAR,
    INTENSITY_COMPENSATION
} tagMvMode;


typedef struct _VDEC_INFO_WMV_DQUANT_PRM_T_
{
    INT32   i4DoubleStepSize;
    INT32   i4StepMinusStepIsEven;
    INT32   i4DoublePlusStepSize;
    INT32   i4DoublePlusStepSizeNeg;
    INT32   i4DCStepSize; // For Intra
} VDEC_INFO_WMV_DQUANT_PRM_T;


typedef struct _VDEC_INFO_WMV_CMVSCALE_T_
{
    INT32   i4MaxZone1ScaledFarMVX;
    INT32   i4MaxZone1ScaledFarMVY;
    INT32   i4Zone1OffsetScaledFarMVX;
    INT32   i4Zone1OffsetScaledFarMVY;
    INT32   i4FarFieldScale1;
    INT32   i4FarFieldScale2;
    INT32   i4NearFieldScale;
} VDEC_INFO_WMV_CMVSCALE_T;


typedef struct _VDEC_INFO_WMV_MULTIRES_PRM_T_
{
    INT32   i4FrmWidthSrc;
    INT32   i4FrmHeightSrc;
    INT32   i4WidthDec;
    INT32   iHeightDec;
    UINT32 u4NumMBX;
    UINT32 u4NumMBY;
} VDEC_INFO_WMV_MULTIRES_PRM_T;


typedef struct _VDEC_INFO_WMV_PAN_SCAN_WINDOW_T_
{
    UINT32 u4PanScanHorizOffset;
    UINT32 u4PanScanVertOffset;
    UINT32 u4PanScanWidth;
    UINT32 u4PanScanHeight;
} VDEC_INFO_WMV_PAN_SCAN_WINDOW_T;


typedef struct _VDEC_INFO_WMV_SEQ_PRM_T_
{
    INT32   i4Profile;
    INT32   i4WMV3Profile;
    UINT8   u1Level;
    BOOL    fgVC1;
    INT32   i4FrameRate;
    UINT16 u2FrameRateToVdp;
    INT32   i4BitRate;
    BOOL    fgPostProcInfoPresent;
    BOOL    fgBroadcastFlags;
    BOOL    fgInterlacedSource;
    BOOL    fgTemporalFrmCntr;
    BOOL    fgSeqFrameInterpolation;
    BOOL    fgProgSeqFrm;
    BOOL    fgDisplayExt;
    UINT32 u4DispHorizSize;
    UINT32 u4DispVertSize;
    BOOL    fgAspectRatioFlag;
    INT32   i4AspectRatio;
    INT32   i4AspectHorizSize;
    INT32   i4AspectVertSize;
    UINT16 u2AspectRatioToVdp;
    BOOL    fgFrameRateFlag;
    BOOL    fgFrameRateInd;
    INT32   i4FrameRateNr;
    INT32   i4FrameRateDr;
    INT32   i4FrameRateExp;
    BOOL    fgColorFormatFlag;
    INT32   i4ColorPrim;
    INT32   i4TransferChar;
    INT32   i4MatrixCoef;
    BOOL    fgHRDPrmFlag;
    INT32   i4HRDNumLeakyBuckets;
    BOOL    fgFirstFrameAfterSPS;
    // Simple & Main Profile
    BOOL    fgYUV411;
    BOOL    fgSpriteMode;
    BOOL    fgXintra8Switch;
    BOOL    fgMultiresEnabled;
    INT32   i4ResIndex;
    BOOL    fgDCTTableMBEnabled;
    BOOL    fgPreProcRange;
    INT32   i4NumBFrames;
    BOOL    fgRotatedIdct;
    BOOL    fgVCMInfoPresent;
    // WMV7 & WMV8
    BOOL    fgMixedPel;
    BOOL    fgFrmHybridMVOn;
    BOOL    fgXintra8;
    BOOL    fgRndCtrlOn;
    INT32   i4SliceCode;
    BOOL    fgSkipBitCoding;
    BOOL    fgNewPcbPcyTable;
    BOOL    fgCODFlagOn;
    INT32   i4SkipBitModeV87;
    INT32   i4Wmv8BpMode;
    INT32   i4SkipBitCodingMode;
    INT32   i4HufNewPCBPCYDec;
    BOOL    fg16bitXform;
    BOOL    fgStartCode;
    BOOL    fgRTMContent;
    BOOL    fgBetaContent;
    INT32   i4BetaRTMMismatchIndex;
    // Sequence header related
    UINT32  u4MaxCodedWidth;
    UINT32  u4MaxCodedHeight;
    UINT32  u4MaxPicWidthSrc;
    UINT32  u4MaxPicHeightSrc;
    UINT32  u4PicWidthSrc;
    UINT32  u4PicHeightSrc;
    UINT32  u4PicWidthCmp;
    UINT32  u4PicHeightCmp;
    UINT32  u4PicWidthDec;
    UINT32  u4PicHeightDec;
    UINT32  u4NumMBX;
    UINT32  u4NumMBY;
    VDEC_INFO_WMV_MULTIRES_PRM_T rMultiResParams[4];
} VDEC_INFO_WMV_SEQ_PRM_T;


typedef struct _VDEC_INFO_WMV_ETRY_PRM_T_
{
    BOOL     fgNewEntryPoint;
    BOOL     fgBrokenLink;
    BOOL     fgClosedEntryPoint;
    BOOL     fgPanScanPresent;
    BOOL     fgRefDistPresent;
    INT32    i4RefFrameDistance;
    BOOL     fgLoopFilter;
    BOOL     fgUVHpelBilinear;
    INT32    i4RangeState;
    INT32    i4ReconRangeStateNew;
    INT32    i4ReconRangeState;
    BOOL     fgExtendedMvMode;
    INT32    i4MVRangeIndex;
    INT32    i4DQuantCodingOn;
    BOOL     fgXformSwitch;
    BOOL     fgSequenceOverlap;
    BOOL     fgExplicitSeqQuantizer;
    BOOL     fgExplicitFrameQuantizer;
    BOOL     fgExplicitQuantizer;
    BOOL     fgNewDCQuant;
    UINT32  u4CodedWidth;
    UINT32  u4CodedHeight;
    BOOL     fgExtendedDeltaMvMode;
    INT32    i4DeltaMVRangeIndex;
    INT32    i4ExtendedDMVX;
    INT32    i4ExtendedDMVY;
    BOOL     fgRangeRedYFlag;
    BOOL     fgRangeRedUVFlag;
    INT32    i4RangeRedY;
    INT32    i4RangeMapUV;
    BOOL    fgResolutionChange;
} VDEC_INFO_WMV_ETRY_PRM_T;


#define MAXPANSCANWINDOWS 4
#define MAX_MBX 128 // for 1920 pixels, 1920/16=120
#define MAX_MBY 68 // for 1080 pixels, 1080/16=67.5
#define BP_MB_BITS 64 // represent 64 MB in a MB-row
typedef struct _VDEC_INFO_WMV_PIC_PRM_T_
{
    UCHAR  ucFrameCodingMode; // (FCM)
    //Interlaced
    BOOL    fgInterlaceV2;
    BOOL    fgFieldMode;
    BOOL    fgInterpolateCurrentFrame;
    BOOL    fgUVProgressiveSubsampling;
    INT32   i4PpMethod;
    INT32   i4FrmCntMod4;
    INT32   i4CurrentField; // 0:TOP, 1:BOTTOM field
    INT32   i4CurrentTemporalField; // 0:1st field or frame picture, 1: 2nd field
    UCHAR  ucPicType; // (PTYPE)
    UCHAR  ucFirstFieldType;
    UCHAR  ucSecondFieldType;
    UCHAR  ucPrevPicType;
    INT32   i4TemporalRef; // (TFCNTR)
    INT32   i4MaxZone1ScaledFarMVX;
    INT32   i4MaxZone1ScaledFarMVY;
    INT32   i4Zone1OffsetScaledFarMVX;
    INT32   i4Zone1OffsetScaledFarMVY;
    INT32   i4FarFieldScale1;
    INT32   i4FarFieldScale2;
    INT32   i4NearFieldScale;

    INT32   i4MaxZone1ScaledFarBackMVX;
    INT32   i4MaxZone1ScaledFarBackMVY;
    INT32   i4Zone1OffsetScaledFarBackMVX;
    INT32   i4Zone1OffsetScaledFarBackMVY;
    INT32   i4FarFieldScaleBack1;
    INT32   i4FarFieldScaleBack2;
    INT32   i4NearFieldScaleBack;

    BOOL    fgTwoRefPictures;
    BOOL    fgUseSameFieldForRef;
    BOOL    fgUseOppFieldForRef;
    BOOL    fgBackRefUsedHalfPel;
    BOOL    fgBackRefTopFieldHalfPelMode;
    BOOL    fgBackRefBottomFieldHalfPelMode;
    BOOL    fgMvResolution;
    BOOL    fgTopFieldFirst; // (TFF)
    BOOL    fgRepeatFirstField; // (RFF)
    UCHAR  ucRepeatFrameCount; // (RPTFRM)
    UCHAR  ucPSVectorNum;
    VDEC_INFO_WMV_PAN_SCAN_WINDOW_T rPanScanWindowInfo[MAXPANSCANWINDOWS]; // (PS_HOFFSET, PS_VOFFSET, PS_WIDTH, PS_HEIGHT)
    INT32   i4RndCtrl;
    BOOL    fgPostRC1;
    INT32   i4BNumerator;
    INT32   i4BDenominator;
    INT32   i4BFrameReciprocal;
    INT32   i4PicQtIdx; // (PQINDEX)
    INT32   i4StepSize;
    INT32   i4DCStepSize;
    INT32   i4Overlap;
    VDEC_INFO_WMV_DQUANT_PRM_T  rDQuantParam3QPDeadzone[64];
    VDEC_INFO_WMV_DQUANT_PRM_T  rDQuantParam5QPDeadzone[64];
    VDEC_INFO_WMV_DQUANT_PRM_T  *prDQuantParam;
    BOOL     fgHalfStep; // (HALFQP)
    BOOL     fgUse3QPDZQuantizer; // (PQUANTIZER)
    UINT32  u4DCTACInterTableIndx; // (TRANSACFRM)
    UINT32  u4DCTACIntraTableIndx; // (TRANSACFRM2)
    BOOL     fgIntraDCTDCTable; // (TRANSDCTAB)
    BOOL     fgDCTTableMB;
    INT32    i4SlicePicHeaderNum;
    UINT32  u4SlicePicHeaderNumField;
    BOOL     fgDCPredIMBInPFrame;
    UCHAR   ucDQuantBiLevelStepSize;
    BOOL     fgDQuantOn;
    INT32    i4Panning;
    UCHAR   ucDiffQtProfile;
    BOOL     fgDQuantBiLevel;
    INT32    i4X9MVMode;
    INT32    i4LumScale;
    INT32    i4LumShift;
    INT32    i4LumScaleTop;
    INT32    i4LumScaleBottom;
    INT32    i4LumShiftTop;
    INT32    i4LumShiftBottom;
    INT32    i4MBModeTable;
    INT32    i4MvTable;
    INT32    i4CBPTable;
    INT32    i42MVBPTable;
    INT32    i44MVBPTable;
    BOOL     fgMBXformSwitching;
    INT32    i4FrameXformMode;
    UINT32  u4ForwardRefPicType;
    UINT32  u4BackwardRefPicType;
    UINT32  u4BPRawFlag;
    BOOL     fgLuminanceWarp;
    BOOL     fgLuminanceWarpTop;
    BOOL     fgLuminanceWarpBottom;
    //  #if(CONFIG_DRV_VERIFY_SUPPORT)
    BOOL     fgWMVBrokenLink;
    //   #endif
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8550)
    INT32 iForwardRefDistance;
    INT32 iBackwardRefDistance;
#endif
} VDEC_INFO_WMV_PIC_PRM_T;


typedef struct _VDEC_INFO_WMV_VFIFO_PRM_T_
{
    UINT32 u4CodeType;              ///< Video decoding type
    ULONG u4VFifoSa;                 ///< Video Fifo memory start address
    ULONG u4VFifoEa;                 ///< Video Fifo memory end address
} VDEC_INFO_WMV_VFIFO_PRM_T;


typedef struct _VDEC_INFO_WMV_BS_INIT_PRM_T_
{
    ULONG u4ReadPointer;
    ULONG u4WritePointer;
    ULONG u4VFifoSa;                 ///< Video Fifo memory start address
    ULONG u4VFifoEa;                 ///< Video Fifo memory end address
} VDEC_INFO_WMV_BS_INIT_PRM_T;


typedef struct _VDEC_INFO_WMV_WORK_BUF_SA_T_
{
    UCHAR   ucMv1FbId;
    UCHAR   ucMv2FbId;
    UCHAR   ucMv3FbId;
    UCHAR   ucMv12FbId;
    UCHAR   ucBp1FbId;
    UCHAR   ucBp2FbId;
    UCHAR   ucBp3FbId;
    UCHAR   ucBp4FbId;
    UCHAR   ucDcacFbId;
    UCHAR   ucDcac2FbId;
    UCHAR   ucPp1FbId;
    UCHAR   ucPp2FbId;
    ULONG  u4Pic0YSa;
    ULONG  u4Pic0CSa;
    ULONG  u4Pic1YSa;
    ULONG  u4Pic1CSa;
    ULONG  u4Pic2YSa;
    ULONG  u4Pic2CSa;
    ULONG  u4Mv1Sa;
    ULONG  u4Mv2Sa;
    ULONG  u4Mv3Sa;
    ULONG  u4Bp1Sa;
    ULONG  u4Bp2Sa;
    ULONG  u4Bp3Sa;
    ULONG  u4Bp4Sa;
    ULONG  u4DcacSa;
    ULONG  u4Dcac2Sa;
    ULONG  u4Mv12Sa;
    ULONG  u4Pp1Sa;
    ULONG  u4Pp2Sa;
    UCHAR  ucRealMv1FbId;
    UCHAR  ucRealMv12FbId;

    UCHAR  ucDcacNewFbId;
    UCHAR  ucMvNewFbId;
    UCHAR  ucBp0NewFbId;
    UCHAR  ucBp1NewFbId;
    UCHAR  ucBp2NewFbId;
    ULONG  u4DcacNewSa;
    ULONG  u4MvNewSa;
    ULONG  u4Bp0NewSa;
    ULONG  u4Bp1NewSa;
    ULONG  u4Bp2NewSa;

#if 1 //(WMV_8320_SUPPORT)
    ULONG u4VLDWrapperWrok;
    ULONG u4PPWrapperWrok;
#endif
} VDEC_INFO_WMV_WORK_BUF_SA_T;


typedef struct _VDEC_INFO_WMV_DEC_BP_PRM_T_
{
    UCHAR  ucFrameCodingMode;
    UCHAR  ucPicType;
    INT32   i4CodecVersion;
    INT32   i4Wmv8BpMode;
    UINT32 u4PicHeightSrc;
    UINT32 u4PicHeightDec;
    UINT32 u4NumMBX;
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
    UINT32 u4NumMBY;
#endif
    VDEC_INFO_WMV_WORK_BUF_SA_T rWmvWorkBufSa;
    BOOL    fgWmvMode;
} VDEC_INFO_WMV_DEC_BP_PRM_T;


typedef struct _VDEC_INFO_WMV_ICOMP_T_
{
    INT32   i4Scale;
    INT32   i4Shift;
    INT32   i4Enable;
} VDEC_INFO_WMV_ICOMP_T;


typedef struct _VDEC_INFO_WMV_ICOMP_SET_T_
{
    VDEC_INFO_WMV_ICOMP_T New;
    VDEC_INFO_WMV_ICOMP_T Old;
} VDEC_INFO_WMV_ICOMP_SET_T;


typedef struct _VDEC_INFO_WMV_ICOMP_PRM_T_
{
    UCHAR  ucFrameTypeLast;
    UCHAR  ucFrameTypeLastTop;
    UCHAR  ucFrameTypeLastBot;
    UCHAR  ucPreProcessFrameStatus;
    INT32   i4BoundaryUMVIcomp;
    INT32   i4SecondFieldParity;
    INT32   i4BoundaryUMVIcompEnable;
    INT32   i4FirstFieldIntensityComp;
    INT32   i4ResetMvDram;
    VDEC_INFO_WMV_ICOMP_SET_T OldTopField;
    VDEC_INFO_WMV_ICOMP_SET_T NewTopField;
    VDEC_INFO_WMV_ICOMP_SET_T OldBotField;
    VDEC_INFO_WMV_ICOMP_SET_T NewBotField;
} VDEC_INFO_WMV_ICOMP_PRM_T;


typedef struct _VDEC_INFO_WMV_DEC_PRM_T_
{
    INT32    i4CodecVersion;
    INT32    i4MemBase;
    UINT32  u4FRefBufIdx;
    VDEC_INFO_WMV_SEQ_PRM_T *prSPS;
    VDEC_INFO_WMV_ETRY_PRM_T *prEPS;
    VDEC_INFO_WMV_PIC_PRM_T *prPPS;
    VDEC_INFO_WMV_ICOMP_PRM_T *prICOMPS;
    VDEC_INFO_WMV_WORK_BUF_SA_T rWmvWorkBufSa;
#if  (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
    UINT32 u4WMVSliceAddr[3];
#endif
    BOOL    fgBwdRefPVOP;
    BOOL    fgWmvMode;
} VDEC_INFO_WMV_DEC_PRM_T;


typedef struct _VDEC_INFO_WMV_ERR_INFO_T_
{
    UINT32 u4MC_X;
    UINT32 u4MC_Y;
    UINT32 u4WmvErrCnt;                                ///< Video decode error count
    UINT32 u4WmvErrRow;                                ///< Video decode error mb row
    UINT32 u4WmvErrType;                               ///< Video decode error type
} VDEC_INFO_WMV_ERR_INFO_T;


typedef struct _VDEC_INFO_WMV_MV_BUF_SA_T_
{
    UCHAR   ucMv1FbId;
    ULONG   u4Mv1Sa;
    UCHAR   ucMv12FbId;
    ULONG   u4Mv12Sa;
    UCHAR   ucMvNewFbId;
    ULONG   u4MvNewSa;
} VDEC_INFO_WMV_MV_BUF_SA_T;

typedef struct _VDEC_INFO_WMV_SR_STORE_PRM_T_
{
    //EPS parts
    BOOL     fgNewEntryPoint;
    INT32    i4RefFrameDistance;

    //PPS parts
    //UCHAR  ucPrevPicType;
    //INT32   i4TemporalRef; // (TFCNTR)
    //BOOL    fgBackRefUsedHalfPel;
    BOOL    fgBackRefTopFieldHalfPelMode;
    BOOL    fgBackRefBottomFieldHalfPelMode;
    //BOOL     fgMBXformSwitching;
    INT32    i4FrameXformMode;
    UINT32  u4ForwardRefPicType;
    UINT32  u4BackwardRefPicType;
} VDEC_INFO_WMV_SR_STORE_PRM_T;
#endif //#ifndef _HAL_VDEC_WMV_IF_H_