aboutsummaryrefslogtreecommitdiff
path: root/include/linux/vcodec/vdec_drv_if_dep.h
blob: 145aaf5473239a81df977e9049a7c9e45b2f1b75 (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
#ifndef VDEC_DRV_IF_DEP_H // for 6572 only
#define VDEC_DRV_IF_DEP_H

/*=============================================================================
 *                              Include Files
 *===========================================================================*/

#include "val_types_private.h"
#include "vcodec_if_v2.h"
//#include "rv_format_info.h"
#include "wmc_type.h"
//#include "strm_iem.h"
#include "vcodec_dec_demuxer_if_v2.h"
//#include "ts_vcodec_common.h"
#define DumpInput__
#ifdef DumpInput__
#include <stdio.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*=============================================================================
 *                              Definition
 *===========================================================================*/
#define MAX_BUFFER_SIZE 21
/*typedef struct
{
    // for speedy mode
    VAL_UINT32_T    nBufferStatus;
    VAL_INT64_T     llLastVideoTime;
    VAL_INT64_T     llCurrentPlayTime;
} DRIVER_HANDLER_T;
*/
/*
typedef struct __RV9_DRV_DATA_T
{
    VAL_UINT32_T            uStreamHdrWidth;
    VAL_UINT32_T            uStreamHdrHeight;
    RM_DECODER_INPUT_PARAM_T rRM_INPUT_Data;
    payload_inf_st payload_inf_tab_rv9[200]; //set up 200
    RM_DECODER_PAYLOAD_INFO_T payload_inf_tab_rv9_MAUI[200]; //set up 200
} RV9_DRV_DATA_T, *P_RV9_DRV_DATA_T;
*/

typedef struct __H264_DRV_DATA_T
{
    H264_DECODER_PAYLOAD_INFO_T     prH264Payload;
    H264_DECODER_INPUT_PARAM_T      prInputData;
    H264_DECODER_PRIVATE_PARAM_T    rPrivateData;
} H264_DRV_DATA_T, *P_H264_DRV_DATA_T;

typedef struct __MPEG4_DRV_DATA_T
{
    MPEG4_DECODER_PAYLOAD_INFO_T     prMPEG4Payload;
    MPEG4_DECODER_INPUT_PARAM_T      prInputData;
} MPEG4_DRV_DATA_T, *P_MPEG4_DRV_DATA_T;

typedef struct __VP8_DRV_DATA_T
{
    //VP8_DEC_CUSTOM_SETTING_T        VP8CustSetting;
} VP8_DRV_DATA_T, *P_VP8_DRV_DATA_T;

typedef struct __VP9_DRV_DATA_T
{
    //VP9_DEC_CUSTOM_SETTING_T        VP9CustSetting;
} VP9_DRV_DATA_T, *P_VP9_DRV_DATA_T;

typedef struct __VC1_DRV_DATA_T
{
    VAL_BOOL_T                      bVC1FirstDecode;
    VC1_DECODER_PAYLOAD_INFO_T      prVC1Payload;
    VC1_DECODER_INPUT_PARAM_T       prInputData;
    TEMP_INTERFACE                  VC1TempInterface;
} VC1_DRV_DATA_T, *P_VC1_DRV_DATA_T;

typedef struct __VDEC_DRV_BUF_STATUS_T
{
    VAL_BOOL_T          bDisplay;
    VAL_BOOL_T          bFree;
    VDEC_DRV_FRAMEBUF_T *pFrameBuf;
} VDEC_DRV_BUF_STATUS_T, *P_VDEC_DRV_BUF_STATUS_T;

typedef enum
{
    VDEC_DRV_STATUS_OPEN_DONE   = 0x00000001,
    VDEC_DRV_STATUS_INIT_DONE   = 0x00000002,
    VDEC_DRV_STATUS_DECODE_EVER = 0x00000004
} VDEC_DRV_STATUS;


typedef struct __VDEC_HANDLE_T
{
    VAL_HANDLE_T            hHalHandle;    ///< HAL data.
    VAL_HANDLE_T            vHandle;       ///< for MMSYS power on/off
    VAL_MEMORY_T            rHandleMem;    ///< Save handle memory information to be used in release.
    VAL_BOOL_T              bFirstDecoded; /// < already pass first video data to codec
    VAL_BOOL_T              bHeaderPassed; /// < already pass video header to codec
    VAL_BOOL_T              bFlushAll;
    VAL_BOOL_T              bNewMemory;    /// allocate buffer for first DOU
    VAL_MEMORY_T            HeaderBuf;
    VAL_MEMORY_T            HeaderBufwithFrame;
    VAL_HANDLE_T            hCodec;
    DRIVER_HANDLER_T        hDrv;
    VIDEO_WRAP_HANDLE_T     hWrapper;
    VAL_UINT32_T            CustomSetting;
    VCODEC_BUFFER_T         rVideoBitBuf;
    VCODEC_DEC_INPUT_YUV_INFO_T rVideoFrameBuf;
    VCODEC_MEMORY_TYPE_T    rVideoDecMemType;
    VAL_UINT32_T            YUVBuffer[MAX_BUFFER_SIZE];
    VAL_UINT32_T            nYUVBufferIndex;
    VAL_UINT32_T            nDrvStatus;
    VDEC_DRV_BUF_STATUS_T   pFrameBufArray[MAX_BUFFER_SIZE];
    VDEC_DRV_FRAMEBUF_T     *DispFrameBuf, *FreeFrameBuf;
    VCODEC_OPEN_SETTING_T           codecOpenSetting;
    VCODEC_DEC_INPUT_T              rInputUnit;
    VIDEO_DECODER_INPUT_NC_T        rVideoDecInputNC;
    VCODEC_DEC_OUTPUT_PARAM_T       *rVideoDecOutputParam;
    VCODEC_DEC_PRIVATE_OUTPUT_T     rVideoDecOutput;
    VCODEC_DEC_OUTPUT_BUFFER_PARAM_T   rVideoDecYUVBufferParameter;
    VCODEC_DEC_INPUT_BUFFER_PARAM_T    rBitStreamParam;
    // for seek and thumbnail mode optimization
    VAL_BOOL_T                      bFirstDecodeForThumbnail;
    VAL_BOOL_T                      bThumbnailModeOK;
    VDEC_DRV_SET_DECODE_MODE_T      rSetDecodeMode;
    // for no VOS header when MPEG4
    VAL_UINT16_T            nDefWidth;
    VAL_UINT16_T            nDefHeight;

    VDEC_DRV_VIDEO_FORMAT_T CodecFormat;
    VAL_VOID_T              *prExtraData;  ///< Driver private data pointer.
    VAL_MEMORY_T             rExtraDataMem; ///< Save extra data memory information to be used in release.
    VCODEC_DEC_PRIVATE_OUTPUT_EXTRA_T prExtraDecOutput;
#ifdef DumpInput__
    FILE *pf_out;
#endif

    // Morris Yang 20111101 [
    VAL_UINT32_T  nOmxTids;
    // ]
#if 1   //defined(MT6572)     //VCODEC_MULTI_THREAD
    // Jackal Chen [
    VAL_VOID_T              *pDrvModule;    ///< used for dlopen and dlclose
    // ]
#endif
    VAL_BOOL_T              fgValInitFlag; ///< hValHandle is available or not
} VDEC_HANDLE_T;

/*=============================================================================
  *                             Function Declaration
  *===========================================================================*/

#ifdef __cplusplus
}
#endif

#endif /* VDEC_DRV_IF_DEP_H */