5 /***************************************************
7 * Chip definitions and Series definitions
9 ***************************************************/
15 #error TRUE is not equal to 1
21 #error FALSE is not equal to 0
28 typedef unsigned __int64 UINT64
;
30 typedef unsigned long long UINT64
;
38 } VCODEC_CODEC_TYPE_T
;
42 unsigned int u4YStride
;
43 unsigned int u4UVStride
;
44 } VCODEC_YUV_STRIDE_T
;
48 VCODEC_COLOR_FORMAT_YUV420
,
49 VCODEC_COLOR_FORMAT_YV12
,
50 } VCODEC_COLOR_FORMAT_T
;
54 unsigned int MaxSupportWidth
;
55 unsigned int MaxSupportHeight
;
56 unsigned int eFlag
; //VCODEC_DEC_INPUT_FLAG_T
57 unsigned int ExternalMEMSize
;
58 int OutBufferNum
; // -1: .inf
59 VCODEC_YUV_STRIDE_T stride
;
60 VCODEC_COLOR_FORMAT_T eColorFormat
;
62 } VCODEC_OPEN_SETTING_T
;
66 unsigned int MaxSupportWidthForYUV420_BP
;
67 unsigned int MaxSupportHeightForYUV420_BP
;
68 unsigned int MaxSupportWidthForYUV420_MPHP
;
69 unsigned int MaxSupportHeightForYUV420_MPHP
;
70 unsigned int ExternalMEMSize
;
72 } H264_DEC_CUSTOM_SETTING_T
;
76 unsigned int MaxSupportWidthForYUV420_MPHP
;
77 unsigned int MaxSupportHeightForYUV420_MPHP
;
78 unsigned int NormalMaxWidthForYUV420_MPHP
;
79 unsigned int NormalMaxHeightForYUV420_MPHP
;
80 unsigned int u4dpbSizes
;
82 } H264_DECODER_PRIVATE_PARAM_T
;
86 unsigned int MaxSupportWidthForYUV420_SP;
87 unsigned int MaxSupportHeightForYUV420_SP;
88 unsigned int MaxSupportWidthForYUV420_ASP;
89 unsigned int MaxSupportHeightForYUV420_ASP;
90 unsigned int ExternalMEMSize;
91 } MPEG4_DEC_CUSTOM_SETTING_T;
95 unsigned int MaxSupportWidthForYUV420;
96 unsigned int MaxSupportHeightForYUV420;
97 unsigned int eFlag; //VCODEC_DEC_INPUT_FLAG_T
98 unsigned int ExternalMEMSize;
100 } VC1_DEC_CUSTOM_SETTING_T;
106 VCODEC_FRAMETYPE_NS_I
, // non-seek I, non-IDR frame
113 } VCODEC_FRAME_TYPE_T
;
121 } VCODEC_BUFFER_ATTRIBUTE_T
;
125 VCODEC_BUFFER_CACHEABLE
= 0,
126 VCODEC_BUFFER_NON_CACHEABLE
= 1,
127 VCODEC_BUFFER_MCI_SHARABLE
= 2
128 } VCODEC_MEMORY_TYPE_T
;
131 unsigned int u4InternalSize
;
132 unsigned int u4ExternalSize
;
133 } VCODEC_MEMORY_SIZE_T
;
137 unsigned char *pu1Buffer_VA
;
138 unsigned char *pu1Buffer_PA
;
139 unsigned int eBufferStatus
;//VCODEC_BUFFER_ATTRIBUTE_T
144 VCODEC_DEC_ERROR_NONE
,
145 VCODEC_DEC_ERROR_DECODE_ERROR
,
146 VCODEC_DEC_ERROR_ASSERT_FAIL
,
147 VCODEC_DEC_ERROR_FATAL_ERROR
,
148 VCODEC_DEC_ERROR_NOT_SUPPORT
,
149 VCODEC_DEC_ERROR_NOT_ENOUGH_MEM
,
150 VCODEC_DEC_ERROR_PAYLOAD_DATA_ERROR
,
151 VCODEC_DEC_ERROR_OAL_CHECK_VERSION_FAIL
,
152 VCODEC_DEC_ERROR_DIMENSION_CHANGE
,
153 NUM_OF_DEC_ERROR_TYPE
154 } VCODEC_DEC_ERROR_T
;
159 CUSTOM_SETTING
, //custom setting
160 BEST_QUALITY
, //standard mode
161 FAVOR_QUALITY
, //adaptive control decode mode , quality first
162 FAVOR_FLUENCY
, //adaptive control decode mode , fluency first
163 BEST_FLUENCY
, //fast mode
165 } VCODEC_DEC_DECODE_MODE_T
;
171 VCODEC_DEC_PARAM_EOF
,
172 VCODEC_DEC_PARAM_QUERY_RESOLUTION_AHEAD
,
173 VCODEC_DEC_PARAM_QUERY_RESOLUTION
,
174 VCODEC_DEC_PARAM_QUERY_PREDICATION_TIME
,
175 VCODEC_DEC_PARAM_MEMORY_REQUIREMENT
,
176 VCODEC_DEC_PARAM_CAPABILITY
,
177 VCODEC_DEC_PARAM_NOT_BUFFERING
,
178 VCODEC_DEC_PARAM_BUFFERING
,
179 VCODEC_DEC_PARAM_BITRATE
,
180 VCODEC_DEC_PARAM_FRAMERATE
,
181 VCODEC_DEC_PARAM_EXCLUDE_BUF_NUM
,
182 VCODEC_DEC_PARAM_NO_OUTPUT_REORDERING
,
183 VCODEC_DEC_PARAM_FLUSH_BUFFER
,
184 VCODEC_DEC_PARAM_SET_DECRYPTION_MODE
,
185 VCODEC_DEC_PARAM_SET_DECODE_MODE
,
186 VCODEC_DEC_PARAM_GET_DECODE_MODE
,
187 VCODEC_DEC_PARAM_CTRL_VOS
,
188 VCODEC_DEC_PARAM_GET_SBSFLAG
,
189 VCODEC_DEC_PARAM_CONCEAL_LEVEL
,
190 VCODEC_DEC_PARAM_NUM_OF_HW_CTRL_THID
,
191 VCODEC_DEC_PARAM_GET_REG_HW_CTRL_THID
, /*Get registered HW control thread id , output structure : VCODEC_REG_HW_CTRL_THID_T*/
192 VCODEC_DEC_PARAM_SET_COLOR_FORMAT
,
193 //VCODEC_DEC_PARAM_SET_STRIDE_ALIGNMENT,
194 VCODEC_DEC_PARAM_SET_AVAILABLE_CPU_NUM
,
195 VCODEC_DEC_PARAM_SET_MCI
, //enable or disable MCI mechanism
196 NUM_OF_DEC_PARAM_TYPE
,
197 } VCODEC_DEC_PARAM_TYPE_T
;
201 VCODEC_DEC_DISPLAY_CONCEALED_FRAME_DURING_PLAYBACK
= 0x01,
202 VCODEC_DEC_DISPLAY_CONCEALED_FRAME_BEFORE_FIRST_I
= 0X02,
203 VCODEC_DEC_DISPLAY_CONCEALED_FRAME_AFTER_FIRST_I
= 0X04,
204 NUM_OF_DEC_CONCEAL_LEVEL_TYPE
,
205 } VCODEC_DEC_CONCEAL_LEVEL_TYPE_T
;
208 //VCODEC_DEC_QUERY_INFO_AVAILABLE_YUV, //Total available YUV buffer
209 //VCODEC_DEC_QUERY_INFO_TOTAL_YUV, //Total number of YUV buffer
210 //VCODEC_DEC_QUERY_INFO_AVAILABLE_DISPLAY_FRAME, //Total available display frame(without frame repeat)
211 //VCODEC_DEC_QUERY_INFO_REAL_AVAILABLE_DISPLAY_FRAME, //Total real available display frame(including frame repeat)
212 VCODEC_DEC_QUERY_INFO_OAL_FUNCTION
, //Query OAL Function pointer
213 VCODEC_DEC_QUERY_INFO_CURRENT_TIME
, //Current play time
214 VCODEC_DEC_QUERY_INFO_LAST_VIDEO_TIME
, // Last delivered frame time
215 //VCODEC_DEC_QUERY_INFO_OAL_FUNCTION_SMP, //Query OAL Function pointer
216 NUM_OF_QUERY_INFO_TYPE
217 } VCODEC_DEC_QUERY_INFO_TYPE_T
;
221 VCODEC_COLOR_FORMAT_T eColorFormat
;
222 unsigned int u4MaxWidth
;
223 unsigned int u4MaxHeight
;
224 unsigned int MaxVideoCodingResolution
;
225 } VCODEC_ENC_GENERAL_SETTING_T
;
229 VCODEC_COLOR_FORMAT_T eColorFormat
;
230 unsigned int u4MaxWidth
;
231 unsigned int u4MaxHeight
;
232 unsigned int MaxVideoCodingResolution
;
233 unsigned int complexityIndex
;
234 } VCODEC_ENC_MPEG4_SETTING_T
;
238 VCODEC_ENC_MPEG4_SETTING_T rMPEG4
;
239 VCODEC_ENC_GENERAL_SETTING_T rVT
;
240 VCODEC_ENC_GENERAL_SETTING_T rH264
;
241 VCODEC_ENC_GENERAL_SETTING_T rHEVC
;
242 VCODEC_ENC_GENERAL_SETTING_T rVP9
;
243 VCODEC_ENC_GENERAL_SETTING_T rVP8
;
244 } VCODEC_ENC_SETTING_T
;
248 unsigned char *pu1ParamStream
;
249 unsigned int u4ParamLength
;
250 unsigned int u4Width
;
251 unsigned int u4Height
;
252 } VCODEC_DEC_QUERY_FRAME_SIZE_TYPE_T
;
256 DISPLAY_CURRENT
, // Normal dispaly
257 REPEAT_LAST
, // Frame skipping , error handling
258 NOT_DISPLAY
, // for vp8, error handling
261 NOT_USED
, // H.264 multi-slice
262 DISPLAY_CURRENT_INTERLACE
, //interlace dispaly
263 NUM_OF_DISPLAY_FRAME_STATUS
264 } VCODEC_DEC_DISPLAY_FRAME_STATUS
;
268 int i4AspectRatioWidth
; //width aspect ratio
269 int i4AspectRatioHeight
; //height aspect ratio
270 //unsigned int u4IntraMBNum;
271 //unsigned int u4InterFMBNum;
272 //unsigned int u4InterBMBNum;
273 //unsigned int u4SkipMBNum;
275 } VCODEC_DEC_PRIVATE_OUTPUT_EXTRA_T
;
280 int fgUpdateTime
; //update time stamp
281 unsigned short u2FrameWidth
; //Full Frame Size
282 unsigned short u2FrameHeight
; //Full Frame Size
283 unsigned short u2ClipTop
;
284 unsigned short u2ClipBottom
;
285 unsigned short u2ClipLeft
;
286 unsigned short u2ClipRight
;
287 VCODEC_FRAME_TYPE_T eFrameType
;
288 VCODEC_BUFFER_T rYStartAddr
; /*YUV buffer start address, include padding up and left*/
289 VCODEC_BUFFER_T rUStartAddr
;
290 VCODEC_BUFFER_T rVStartAddr
;
291 VCODEC_DEC_DISPLAY_FRAME_STATUS eDisplayFrameStatus
;
293 } VCODEC_DEC_PRIVATE_OUTPUT_T
;
297 typedef void VCODEC_DEC_INPUT_DATA_T
;
301 INPUT_FLAG_STREAM_DATA_TYPE
= 0x01, /* Bit 0 = 1: Slice base data(non-frame base) ; 0: Frame base data*/
302 INPUT_FLAG_STARTTIME
= 0x02, /* seek start time at end of seek */
303 INPUT_FLAG_DECODEONLY
= 0x04, /* seek */
304 INPUT_FLAG_PARAMETERSET
= 0x08, /* H.264 for SPS,PPS issue,send first frame bitstream for set parameter */
305 INPUT_FLAG_CUSTOM_SETTING
= 0x10, /* Get max external memory size(VE)*/
306 INPUT_FLAG_DECODE_INTRA_ONLY
= 0x20, /* Only Decode Intra Frame */
307 INPUT_FLAG_OPENAPI
= 0x40, /* OPENAPI */
308 INPUT_FLAG_DECODE_MODE
= 0x80, /* Decode Mode */
309 INPUT_FLAG_LEGACY_MODE
= 0x100, /* legacy Mode */
311 } VCODEC_DEC_INPUT_FLAG_T
;
316 unsigned int eFlags
; // VCODEC_DEC_INPUT_FLAG_T
317 VCODEC_DEC_INPUT_DATA_T
*prInputData
; // MPEG4_DECODER_PAYLOAD_INFO_T, H264_DECODER_INPUT_PARAM_T, RM_DECODER_INPUT_PARAM_T, RM_DECODER_INIT_PARAM_T
318 VCODEC_BUFFER_T
*prBuffer
; // Input data address
319 unsigned int u4BuffSize
; // Input buffer total size
321 } VCODEC_DEC_INPUT_T
;
330 unsigned int u4Width
; //Full size 16 byte align
331 unsigned int u4Height
; //Full size 16 byte align
332 unsigned short u2ClipTop
;
333 unsigned short u2ClipBottom
;
334 unsigned short u2ClipLeft
;
335 unsigned short u2ClipRight
;
336 unsigned int u4Offset
; //Offset of YUV buffer start address
337 unsigned int u4ReduceLength
; //Padding size(End of YUV buffer pool)
338 unsigned char u1Alignment
; //YUV buffer address alignment
339 VCODEC_MEMORY_TYPE_T rYUVBUfferMemType
; //YUV buffer memory type
340 unsigned int u4MaxBufferNum
;
341 unsigned int u4ExtraBufferNum
;
343 } VCODEC_DEC_OUTPUT_BUFFER_PARAM_T
;
347 VCODEC_MEMORY_TYPE_T rBitStreamBufferMemType
; //bitstream buffer memory type
348 unsigned int u4MaxBufferNum
;
349 void *PrivateData
[4];
350 } VCODEC_DEC_INPUT_BUFFER_PARAM_T
;
354 VCODEC_BUFFER_T rYBuffer
;
355 VCODEC_BUFFER_T rUBuffer
;
356 VCODEC_BUFFER_T rVBuffer
;
357 } VCODEC_DEC_INPUT_YUV_INFO_T
;
360 #define MAX_BITSTREAM_BUFFER_INFO_NUM 10
361 #define MAX_REF_FREE_YUV_BUFFER_NUM 18
364 VCODEC_BUFFER_T
*prRetBitsBuf
; // for mt6575, mt6577
365 unsigned int u4ReturnInputCnt
;
366 VCODEC_BUFFER_T rReturnInput
[MAX_BITSTREAM_BUFFER_INFO_NUM
];
367 unsigned int u4RefFreeYUVBufCnt
;
368 VCODEC_DEC_INPUT_YUV_INFO_T parRefFreeYUVBuf
[MAX_REF_FREE_YUV_BUFFER_NUM
];
369 } VCODEC_DEC_OUTPUT_PARAM_T
;
374 unsigned int u4SupportWidth
;
375 unsigned int u4SupportHeight
;
376 unsigned int u4SupportResolution
;
377 unsigned int u4SupportProfile
;
378 unsigned int u4SupportLevel
;
379 } VCODEC_DEC_CAPABILITY_T
;
383 void (*pfnMalloc
)(IN HANDLE
/* hDrv */,
384 IN
unsigned int /* u4Size */,
385 IN
unsigned int /*u4AlignSize*/,
386 IN VCODEC_MEMORY_TYPE_T
/* fgCacheable */,
387 OUT VCODEC_BUFFER_T
* /* prBuf */
388 ); /* buffer address must cache line align */
390 void (*pfnIntMalloc
)(IN HANDLE
/* hDrv */,
391 IN
unsigned int /* u4Size */,
392 IN
unsigned int /*u4AlignSize*/,
393 OUT VCODEC_BUFFER_T
* /* pBuffer_adr */
396 void (*pfnFree
)(IN HANDLE
/* hDrv */,
397 IN VCODEC_BUFFER_T
* /* prBuf */
398 ); /* same memory type with malloc */
400 void (*pfnIntFree
)(IN HANDLE
/* hDrv */,
401 IN VCODEC_BUFFER_T
* /* pBuffer_adr */
404 VCODEC_DEC_ERROR_T(*pfnSetYUVBuffer
)(IN HANDLE
/* hDrv */,
405 IN VCODEC_DEC_OUTPUT_BUFFER_PARAM_T
* /* prYUVParam */
408 VCODEC_DEC_ERROR_T(*pfnGetYUVBuffer
)(IN HANDLE
/* hDrv */,
409 OUT VCODEC_DEC_INPUT_YUV_INFO_T
* /* prYUVBuf */
412 void (*pfnRefFreeYUVBuffer
)(IN HANDLE
/* hDrv */,
413 IN VCODEC_DEC_INPUT_YUV_INFO_T
* /* prYUVBuf */
416 VCODEC_DEC_ERROR_T(*pfnQueryInfo
)(IN HANDLE
/* hDrv */,
417 IN VCODEC_DEC_QUERY_INFO_TYPE_T
/* query id*/,
418 OUT
void * /* pvParamData*/ /* */
421 void (*pfnReturnBitstream
)(IN HANDLE
/* hDrv */,
422 IN VCODEC_BUFFER_T
* /* prBuffer */ /* Input buffer address */,
423 IN
unsigned int /* u4BuffSize */ /* Input buffer total size */
426 } VCODEC_DEC_CALLBACK_T
;
432 VCODEC_DEC_INPUT_T
*prInputData
;
433 VCODEC_DEC_INPUT_YUV_INFO_T
*prYUVBufAddr
; // prYUVBuf
434 } VIDEO_DECODER_INPUT_NC_T
;
440 VCODEC_DEC_ERROR_T(*pfnGetCodecRequired
)(IN VCODEC_DEC_INPUT_T
* /* prInput */ ,
441 OUT VCODEC_MEMORY_SIZE_T
* /* prMemSize */,
442 OUT VCODEC_DEC_OUTPUT_BUFFER_PARAM_T
* /* prBufferParameter*/,
443 OUT VCODEC_DEC_INPUT_BUFFER_PARAM_T
* /* prBitStreamParameter */,
444 INOUT
void * /* reserve */
448 /********************************************************
449 * wrapped for smart phone
450 ********************************************************/
451 VCODEC_DEC_ERROR_T(*pfnOpen
)(IN HANDLE
, /* hDrv */
452 IN VCODEC_DEC_CALLBACK_T
*, /* pfnCallback */
453 IN
void *, /* open setting */
454 OUT HANDLE
* , /* hCodec */
455 INOUT
void * /* reserve */
458 VCODEC_DEC_ERROR_T(*pfnClose
)(IN HANDLE
, /* hCodec */
459 INOUT
void * /* reserve */
462 VCODEC_DEC_ERROR_T(*pfnInit
)(IN HANDLE
, /* hCodec */
463 INOUT
void * /* reserve */
466 /********************************************************
467 * wrapped for smart phone
468 ********************************************************/
469 VCODEC_DEC_ERROR_T(*pfnDeInit
)(IN HANDLE
, /* hCodec */
470 IN HANDLE
, /* hWrap */
471 OUT VCODEC_DEC_OUTPUT_PARAM_T
** , /* for smart phone */
472 INOUT
void * /* reserve */
475 VCODEC_DEC_ERROR_T(*pfnGetParameter
)(IN HANDLE
, /* hCodec */
476 IN VCODEC_DEC_PARAM_TYPE_T
,
477 INOUT
void * /* pvParamData */
479 /********************************************************
480 * wrapped for smart phone
481 ********************************************************/
482 VCODEC_DEC_ERROR_T(*pfnSetParameter
)(IN HANDLE
, /* hCodec */
483 IN HANDLE
, /* hWrap */
484 IN VCODEC_DEC_PARAM_TYPE_T
, /* eParamType */
485 IN
void * , /* pvParamData */
486 INOUT
void * /* reserve */
489 /********************************************************
490 * wrapped for smart phone
491 ********************************************************/
492 VCODEC_DEC_ERROR_T(*pfnDecodeOneUnit
)(IN HANDLE
, /* hCodec */
493 IN HANDLE
, /* hWrap */
494 IN VIDEO_DECODER_INPUT_NC_T
*, /* prInput */
495 OUT VCODEC_DEC_OUTPUT_PARAM_T
** , /* for smart phone */
496 INOUT
void * /* reserve */
499 /********************************************************
500 * wrapped for smart phone
501 ********************************************************/
502 VCODEC_DEC_ERROR_T(*pfnGetNextDisplay
)(IN HANDLE
, /* hCodec */
503 IN HANDLE
, /* hWrap */
504 OUT VCODEC_DEC_PRIVATE_OUTPUT_T
* , /* prPrivOutput */
505 INOUT
void * /* reserve */
519 VCODEC_DEC_ERROR_T(*pfnGetCodecRequired
)(IN VCODEC_DEC_INPUT_T
* /* prInput */ ,
520 OUT VCODEC_MEMORY_SIZE_T
* /* prMemSize */,
521 OUT VCODEC_DEC_OUTPUT_BUFFER_PARAM_T
* /* prBufferParameter*/,
522 OUT VCODEC_DEC_INPUT_BUFFER_PARAM_T
* /*prBitStreamParameter */,
523 INOUT
void * /* reserve */
527 VCODEC_DEC_ERROR_T(*pfnOpen
)(IN HANDLE
/* hDrv */,
528 IN VCODEC_DEC_CALLBACK_T
* /* pfnCallback */,
529 IN
void * /* prOpenSetting */,
530 OUT HANDLE
* /* hCodec */ ,
531 INOUT
void * /* reserve */
534 VCODEC_DEC_ERROR_T(*pfnClose
)(IN HANDLE
/* hCodec */,
535 INOUT
void * /* reserve */
538 VCODEC_DEC_ERROR_T(*pfnInit
)(IN HANDLE
/* hCodec */,
539 INOUT
void * /* reserve */
542 VCODEC_DEC_ERROR_T(*pfnDeInit
)(IN HANDLE
/* hCodec */,
543 INOUT
void * /* reserve */
546 VCODEC_DEC_ERROR_T(*pfnGetParameter
)(IN HANDLE
/* hCodec */,
547 IN VCODEC_DEC_PARAM_TYPE_T
/* eParamType */,
548 INOUT
void * /* pvParamData */,
549 INOUT
void * /* reserve */
552 VCODEC_DEC_ERROR_T(*pfnSetParameter
)(IN HANDLE
/* hCodec */,
553 IN VCODEC_DEC_PARAM_TYPE_T
/* eParamType */,
554 IN
void * /* pvParamData */,
555 INOUT
void * /* reserve */
558 VCODEC_DEC_ERROR_T(*pfnDecodeOneUnit
)(IN HANDLE
/* hCodec */,
559 IN VCODEC_DEC_INPUT_T
* /* prInput */,
560 INOUT
void * /* reserve */
563 VCODEC_DEC_ERROR_T(*pfnGetNextDisplay
)(IN HANDLE
/* hCodec */,
564 OUT VCODEC_DEC_PRIVATE_OUTPUT_T
* /* prPrivOutput */,
565 INOUT
void * /* reserve */
575 VIDEO_DEC_API_T rVideoDecAPI
;
576 VCODEC_DEC_API_T
*pfnVcodecDecAPI
;
577 VCODEC_DEC_INPUT_YUV_INFO_T rGetYUVBuf
;
578 VCODEC_BUFFER_T rRetBitsBuf
;
579 VCODEC_DEC_OUTPUT_PARAM_T rDecoderOutputParam
;
580 unsigned int fgTookYUVBuff
;
582 } VIDEO_WRAP_HANDLE_T
;
585 #define VCODEC_ENC_MAX_PKTS_IN_SET 99
586 #define VCODEC_ENC_MAX_NALS_IN_SET 10
592 } VCODEC_ENC_CODEC_PACKET_INFO_T
;
595 // Note the first two items in the next structure must be (in order):
596 // 1. number of Packets
597 // 2. pointer to the packet info
600 unsigned int u4NumOfPkts
;
601 VCODEC_ENC_CODEC_PACKET_INFO_T arPktInfo
[VCODEC_ENC_MAX_PKTS_IN_SET
];
602 } VCODEC_ENC_PACKET_SET_T
;
608 void *u4Addr
; // p_payload
609 unsigned int u4Size
; // i_payload
610 } VCODEC_ENC_CODEC_NAL_INFO_T
;
614 unsigned int u4NumOfNals
;
615 VCODEC_ENC_CODEC_NAL_INFO_T arNalInfo
[VCODEC_ENC_MAX_NALS_IN_SET
];
616 } VCODEC_ENC_NAL_SET_T
;
624 NUM_OF_ENC_CODEC_TYPE
625 } VCODEC_ENC_CODEC_TYPE_T
;
629 VCODEC_FRAME_TYPE_T eFrameType
;
630 VCODEC_BUFFER_T rBitstreamAddr
; // added to merge remained individual parameters in the phototype
631 unsigned int u4BitstreamLength
;
634 VCODEC_ENC_CODEC_TYPE_T eCodecType
;
637 } VCODEC_ENC_GENERAL_OUTPUT_T
;
641 VCODEC_BUFFER_T rStartAddr
;
642 VCODEC_BUFFER_T rEndAddr
;
643 VCODEC_BUFFER_T rWriteAddr
;
644 VCODEC_BUFFER_T rReadAddr
;
645 unsigned int u4BufferLength
;
646 } VCODEC_ENC_BUFFER_INFO_T
;
651 INPUT_FLAG_YUVBUFFER
= 0x01,
652 INPUT_FLAG_NO_INPUT
= 0x02,
653 INPUT_FLAG_NO_MORE_INPUT
= 0x03,
655 } VCODEC_ENC_INPUT_FLAG_T
;
659 VCODEC_BUFFER_T rYUVBuffer
;
660 unsigned int u4Length
;
661 } VCODEC_ENC_INPUT_INFO_T
;
665 VCODEC_BUFFER_T rYBuffer
;
666 VCODEC_BUFFER_T rUBuffer
;
667 VCODEC_BUFFER_T rVBuffer
;
668 unsigned int u4Length
;
669 } VCODEC_ENC_INPUT_YUV_INFO_T
;
676 VCODEC_ENC_INPUT_FLAG_T eFlags
;
677 VCODEC_ENC_INPUT_INFO_T rInput
;
678 } VCODEC_ENC_INPUT_PARAM_T
;
683 VCODEC_ENC_INPUT_FLAG_T eFlags
;
684 VCODEC_ENC_INPUT_YUV_INFO_T rInput
;
686 } VCODEC_ENC_INPUT_YUV_PARAM_T
;
691 int fgSliceContained
;
692 } VCODEC_ENC_UPDATE_WP_INTO_T
;
696 VCODEC_ENC_ERROR_NONE
,
698 VCODEC_ENC_ASSERT_FAIL
,
699 VCODEC_ENC_BS_BUFFER_NOT_ENOUGH
,
700 VCODEC_ENC_INPUT_REJECT
,
701 VCODEC_ENC_PARAM_NOT_SUPPORT
,
702 NUM_OF_ENC_ERROR_TYPE
703 } VCODEC_ENC_ERROR_T
;
708 VCODEC_ENC_PARAM_MEMORY_REQUIREMENT
, //Query ext/int memory requirement for adaptation
709 VCODEC_ENC_PARAM_BITSTREAM_IN_CACHE
, //Query the prefer memory type of bitstream buffer, return true means cacheable buffer is preferred
710 VCODEC_ENC_PARAM_FRM_BUFFER_ALIGNMENT
, //Query the alignment needed on frame buffer for codec
711 VCODEC_ENC_PARAM_HOLD_RES_TILL_RELEASE_FRM
,
712 VCODEC_ENC_PARAM_IS_BLOCKBASED_YUV
,
713 VCODEC_ENC_PARAM_DECODER_CONFIGURATION_RECORD
,
714 VCODEC_ENC_PARAM_IF_ADAPTOR_MODIFY_TIMESTAMP
,
715 VCODEC_ENC_PARAM_WIDTH
,
716 VCODEC_ENC_PARAM_HEIGHT
,
717 VCODEC_ENC_PARAM_BITRATE
,
718 VCODEC_ENC_PARAM_FRAME_RATE
,
719 VCODEC_ENC_PARAM_FRAME_RATE_NUM
,
720 VCODEC_ENC_PARAM_FRAME_RATE_DEN
,
721 VCDOEC_ENC_PARAM_AUD
,
722 VCODEC_ENC_PARAM_REPEAD_HEADERS
,
723 VCODEC_ENC_PARAM_ANNEXB
,
724 VCODEC_ENC_PARAM_GEN_HEADER_FRM_RATE
,
725 VCODEC_ENC_PARAM_SHORT_HEADER
,
726 VCODEC_ENC_PARAM_SYNC_INTERVAL
,
727 VCODEC_ENC_PARAM_MAX_PKG_SIZE
,
728 VCODEC_ENC_PARAM_FORCE_ENCODE_I
,
729 VCODEC_ENC_PARAM_QUALITY
,
730 VCODEC_ENC_PARAM_SCENARIO
,
731 VCODEC_ENC_PARAM_CODEC_TYPE
,
732 VCODEC_ENC_PARAM_VT_RESTART
,
733 VCODEC_ENC_PARAM_ROTATE
,
734 VCODEC_ENC_PARAM_SET_CALLBACK
,
735 VCODEC_ENC_PARAM_SET_NO_MORE_INPUT
,
736 VCODEC_ENC_PARAM_NUM_OF_HW_CTRL_THID
,
737 VCODEC_ENC_PARAM_GET_REG_HW_CTRL_THID
, //Get registered HW control thread id , output structure : VCODEC_REG_HW_CTRL_THID_T
738 VCODEC_ENC_PARAM_SET_COLOR_FORMAT
,
739 VCODEC_ENC_PARAM_SET_YUV_STRIDE_ALIGNMENT
,
740 VCODEC_ENC_PARAM_SET_AVAILABLE_CPU_NUM
,
741 VCODEC_ENC_PARAM_SET_MCI
, //enable or disable MCI mechanism
742 VCODEC_ENC_PARAM_WPP
,
743 VCODEC_ENC_PARAM_CONSTQ
,
744 VCODEC_ENC_PARAM_RC_VERSION
,
745 VCODEC_ENC_PARAM_INIT_QP
,
746 VCODEC_ENC_PARAM_MAX_QP
,
747 VCODEC_ENC_PARAM_MIN_QP
,
748 VCODEC_ENC_PARAM_NUM_OF_SLICE
,
749 VCODEC_ENC_PARAM_PROFILE
,
750 VCODEC_ENC_PARAM_LEVEL
,
751 VCODEC_ENC_PARAM_THREADS
,
752 VCODEC_ENC_PARAM_VP8_TOKEN_PARTITIONS
,
753 VCODEC_ENC_PARAM_VP9_ENABLE_TILES
,
754 VCODEC_ENC_PARAM_VPX_ERR_RESILIENT
,
755 VCODEC_ENC_PARAM_VPX_NUMBER_OF_LAYERS
,
756 VCODEC_ENC_PARAM_VPX_MODE
,
757 VCODEC_ENC_PARAM_VPX_CPU_USED
,
758 VCODEC_ENC_PARAM_YUV_STRIDE
,
759 NUM_OF_ENC_PARAM_TYPE
760 } VCODEC_ENC_PARAM_TYPE_T
;
764 VCODEC_ENC_QUERY_INFO_TOTAL_FRAME_BUFFER
, // Total frame buffer size
765 VCODEC_ENC_QUERY_INFO_FRAMES_QUEUED
, // Number of frames waited to encoder
766 VCODEC_ENC_QUERY_INFO_VTBUFFER_FULLNESS_DENOM
, // Denominator of VT buffer fullness
767 VCODEC_ENC_QUERY_INFO_VTBUFFER_FULLNESS_NUM
, // Numerator of VT buffer fullness
768 VCODEC_ENC_QUERY_INFO_INIT_Q
, // Used by codec
769 VCODEC_ENC_QUERY_INFO_MIN_QP
, // Used by codec
770 VCODEC_ENC_QUERY_INFO_MAX_QP
, // Used by codec
771 VCODEC_ENC_QUERY_INFO_INTRA_VOP_RATE
, // Used by MED/codec
772 VCODEC_ENC_QUERY_INFO_ALGORITHM
, // Used by codec
773 VCODEC_ENC_QUERY_INFO_BIT_RATE
, // Used by MED/codec
774 VCODEC_ENC_QUERY_INFO_RATE_HARD_LIMIT
, // Used by codec
775 VCODEC_ENC_QUERY_INFO_RATE_BALANCE
, // Used by codec
776 VCODEC_ENC_QUERY_INFO_DYNAMIC_RANGE_REDUCTION
,
777 VCODEC_ENC_QUERY_INFO_IF_CUSTOMER_SET_TABLE
,
778 VCODEC_ENC_QUERY_INFO_DYNAMIC_RANGE_TABLE
,
779 VCODEC_ENC_QUERY_INFO_OAL_FUNCTION
,
780 VCODEC_ENC_QUERY_INFO_ENCODER_FRAME_RATE
, // Used by H.264 recoder
781 VCODEC_ENC_QUERY_INFO_TARGET_COMPLEXITY
, // Used by H.264 recoder
782 VCODEC_ENC_QUERY_INFO_THRESHOLD_AVG_LOW
, // Used by H.264 recoder
783 VCODEC_ENC_QUERY_INFO_THRESHOLD_AVG_HIGH
, // Used by H.264 recoder
784 VCODEC_ENC_QUERY_INFO_THRESHOLD_CUR_LOW
, // Used by H.264 recoder
785 VCODEC_ENC_QUERY_INFO_THRESHOLD_CUR_HIGH
, // Used by H.264 recoder
786 //VCODEC_ENC_QUERY_INFO_OAL_FUNCTION_SMP,
787 VCODEC_ENC_QUERY_INFO_VPX_CPU_USED
,
788 VCODEC_ENC_QUERY_INFO_VPX_MODE
,
789 VCODEC_ENC_QUERY_INFO_FIXED_QP
,
790 VCODEC_ENC_QUERY_INFO_SCENARIO
,
791 NUM_OF_ENC_QUERY_INFO_TYPE
792 } VCODEC_ENC_QUERY_INFO_TYPE_T
;
794 /**********************************************************************
799 **********************************************************************/
804 VCODEC_ENC_ROTATE_0
= 0,
805 VCODEC_ENC_ROTATE_90
= 1,
806 VCODEC_ENC_ROTATE_180
= 2,
807 VCODEC_ENC_ROTATE_270
= 3
808 } VCODEC_ENC_ROTATE_ANGLE_T
;
812 VCODEC_ENC_QUALITY_NONE
,
813 VCODEC_ENC_QUALITY_LOW
,
814 VCODEC_ENC_QUALITY_NORMAL
,
815 VCODEC_ENC_QUALITY_GOOD
,
816 VCODEC_ENC_QUALITY_FINE
,
817 VCODEC_ENC_QUALITY_CUSTOM
818 } VCODEC_ENC_QUALITY_T
;
822 VCODEC_ENC_CODEC_TYPE_NONE
,
823 VCODEC_ENC_CODEC_TYPE_MPEG4
,
824 VCODEC_ENC_CODEC_TYPE_H263
,
825 VCODEC_ENC_CODEC_TYPE_H264
826 } VCODEC_ENC_CODEC_T
;
831 void (*pfnMalloc
)(IN HANDLE
/* hDrv */,
832 IN
unsigned int /* u4Size */,
833 IN
unsigned int /*u4AlignSize*/,
834 IN VCODEC_MEMORY_TYPE_T
/* fgCacheable */,
835 OUT VCODEC_BUFFER_T
* /* prBuf */
836 ); /*buffer address must cache line align */
838 void (*pfnIntMalloc
)(IN HANDLE
/* hDrv */,
839 IN
unsigned int /* u4Size */,
840 IN
unsigned int /*u4AlignSize*/,
841 OUT VCODEC_BUFFER_T
* /* prBuffer_adr */
845 void (*pfnFree
)(IN HANDLE
/* hDrv */,
846 IN VCODEC_BUFFER_T
* /* prBuf */
847 ); /* same memory type with malloc */
850 void (*pfnIntFree
)(IN HANDLE
/* hDrv */,
851 IN VCODEC_BUFFER_T
* /* prBuffer_adr */
854 void (*pfnReleaseYUV
)(IN HANDLE
/* hDrv */,
855 IN VCODEC_BUFFER_T
* /* prYUVBuf */
858 void (*pfnPaused
)(IN HANDLE
/* hDrv */,
859 IN VCODEC_BUFFER_T
* /* prBitstreamBuf */
862 void (*pfnAllocateBitstreamBuffer
)(IN HANDLE
/* hDrv */,
863 OUT VCODEC_ENC_BUFFER_INFO_T
* /* prBitstreamBuf */
866 void (*pfnUpdateBitstreamWP
)(IN HANDLE
/* hDrv */,
867 IN VCODEC_ENC_UPDATE_WP_INTO_T
* /* prUpdateWritePointer */
869 VCODEC_ENC_ERROR_T(*pfnQueryInfo
)(IN HANDLE
/* hDrv */,
870 IN VCODEC_ENC_QUERY_INFO_TYPE_T
/* query id*/,
871 OUT
void * /* pvParamData*/
875 } VCODEC_ENC_CALLBACK_T
;
881 VCODEC_ENC_INPUT_FLAG_T eFlags
;
882 VCODEC_ENC_INPUT_INFO_T rInput
;
883 VCODEC_ENC_BUFFER_INFO_T pBuffInfo
;
884 VCODEC_COLOR_FORMAT_T eVEncFormat
;
885 unsigned int u4Width
;
886 unsigned int u4Height
;
887 unsigned int u4YStride
;
888 unsigned int u4UVStride
;
889 unsigned int u4SliceHeight
;
891 } VIDEO_ENCODER_INPUT_PARAM_NC_T
;
896 VCODEC_ENC_INPUT_FLAG_T eFlags
;
897 VCODEC_ENC_INPUT_YUV_INFO_T rInput
;
898 VCODEC_ENC_BUFFER_INFO_T pBuffInfo
;
899 VCODEC_COLOR_FORMAT_T eVEncFormat
;
900 unsigned int u4Width
;
901 unsigned int u4Height
;
902 unsigned int u4YStride
;
903 unsigned int u4UVStride
;
904 unsigned int u4SliceHeight
;
906 } VIDEO_ENCODER_INPUT_YUV_PARAM_NC_T
;
910 VCODEC_ENC_ERROR_T(*pfnGetMemoryRequired
)(IN VCODEC_ENC_SETTING_T
*rCodecFormat
,
911 OUT VCODEC_MEMORY_SIZE_T
*prExternalSize
914 /********************************************************
915 * wrapped for smart phone
916 ********************************************************/
917 VCODEC_ENC_ERROR_T(*pfnOpen
)(IN HANDLE hDrv
,
919 IN VCODEC_ENC_CALLBACK_T
* ,
923 VCODEC_ENC_ERROR_T(*pfnInit
)(IN HANDLE hCodec
926 VCODEC_ENC_ERROR_T(*pfnGetParameter
)(IN HANDLE hCodec
,
927 OUT VCODEC_ENC_PARAM_TYPE_T
, /*VIDEO_ENC_MEMORY_T,*/
931 VCODEC_ENC_ERROR_T(*pfnSetParameter
)(IN HANDLE hCodec
,
932 IN VCODEC_ENC_PARAM_TYPE_T
, /*VIDEO_ENCODER_QUALITY_T,VIDEO_ENCODER_CODEC_T,VIDEO_CODEC_ROTATE_ANGLE_T,*/
936 /********************************************************
937 * wrapped for smart phone
938 ********************************************************/
939 VCODEC_ENC_ERROR_T(*pfnGenerateHeader
)(IN HANDLE hCodec
,
941 IN VCODEC_ENC_BUFFER_INFO_T
*prBufferInfo
// for smart phone
944 /********************************************************
945 * wrapped for smart phone
946 ********************************************************/
947 VCODEC_ENC_ERROR_T(*pfnEncodeOneUnit
)(IN HANDLE hCodec
,
949 IN VIDEO_ENCODER_INPUT_YUV_PARAM_NC_T
*prEncoderInputParamNC
// for smart phone
952 VCODEC_ENC_ERROR_T(*pfnDeInit
)(IN HANDLE hCodec
955 VCODEC_ENC_ERROR_T(*pfnClose
)(IN HANDLE hCodec
958 VCODEC_ENC_ERROR_T(*pfnGetNextBitstream
)(IN HANDLE hCodec
,
959 OUT VCODEC_ENC_GENERAL_OUTPUT_T
*
968 VCODEC_ENC_ERROR_T(*pfnGetMemoryRequired
)(IN VCODEC_ENC_SETTING_T
*, /*prInput*/
969 OUT VCODEC_MEMORY_SIZE_T
* /*prExternalSize*/
972 VCODEC_ENC_ERROR_T(*pfnOpen
)(IN HANDLE
/* hDrv */,
973 IN VCODEC_ENC_CALLBACK_T
* /* pfnCallback */,
974 OUT HANDLE
* /* hCodec */
977 VCODEC_ENC_ERROR_T(*pfnInit
)(IN HANDLE
/* hCodec */
980 VCODEC_ENC_ERROR_T(*pfnGetParameter
)(IN HANDLE
/* hCodec */,
981 IN VCODEC_ENC_PARAM_TYPE_T
/*VIDEO_ENC_MEMORY_T,*/,
982 OUT
void * /* pvParamData */
985 VCODEC_ENC_ERROR_T(*pfnSetParameter
)(IN HANDLE
/* hCodec */,
986 IN VCODEC_ENC_PARAM_TYPE_T
/* rEncodeParam*/, /*VCODEC_ENC_QUALITY_T,VCODEC_ENC_CODEC_T,VIDEO_CODEC_ROTATE_ANGLE_T,*/
987 IN
void * /* pvParamData */
990 VCODEC_ENC_ERROR_T(*pfnGenerateHeader
)(IN HANDLE
/* hCodec */
993 VCODEC_ENC_ERROR_T(*pfnEncodeOneUnit
)(IN HANDLE
/* hCodec */,
994 IN
void * /*prInput*/ /*VCODEC_ENC_INPUT_YUV_INFO_T , VCODEC_ENC_INPUT_INFO_T*/
996 VCODEC_ENC_ERROR_T(*pfnDeInit
)(IN HANDLE
/* hCodec */
999 VCODEC_ENC_ERROR_T(*pfnClose
)(IN HANDLE
/* hCodec */
1002 VCODEC_ENC_ERROR_T(*pfnGetNextBitstream
)(IN HANDLE
/* hCodec */,
1003 OUT VCODEC_ENC_GENERAL_OUTPUT_T
* /* prPrivOutput*/
1009 VIDEO_ENC_API_T rVideoEncAPI
;
1010 VCODEC_ENC_API_T
*pfnVcodecEncAPI
;
1012 VCODEC_BUFFER_T rReleaseYUV
;
1013 VCODEC_ENC_BUFFER_INFO_T rEncoderBuffInfoNC
;
1014 } VIDEO_ENC_WRAP_HANDLE_T
;
1018 unsigned int u4TimeIncrResolution
;
1019 unsigned int u4BufferSize
;
1020 VCODEC_BUFFER_T
*prBuffer
;
1021 } MPEG4_VT_ENCODER_GEN_VT_HEADER_INPUT_T
;
1023 VCODEC_ENC_ERROR_T
MPEG4EncoderGenerateVTHeader(
1024 IN MPEG4_VT_ENCODER_GEN_VT_HEADER_INPUT_T
*prInput
,
1025 OUT
unsigned int *pu4EncodedSize
1033 #endif /* VCODEC_IF_H */