aboutsummaryrefslogtreecommitdiff
path: root/include/linux/vcodec/hevcd_if.h
blob: fe61ad528ff7550f6c2090beb97d55d0af43eb61 (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
#ifndef _HEVC_DECODE_IF_H_
#define _HEVC_DECODE_IF_H_

//#include "hevcd.h"
//#include "hevc_common_if.h"
#include "vcodec_if_v2.h"
#include "vcodec_dec_demuxer_if_v2.h"
#define MAX_DECODE_BUFFERS 15
#define _FILE_IO_
//extern int frame_num;
typedef struct
{

    void (*hevc_pfnMalloc)(IN HANDLE                             /* hDrv */,
                           IN unsigned int                       /* u4Size */,
                           IN unsigned int                       /*u4AlignSize*/,
                           IN VCODEC_MEMORY_TYPE_T               /* fgCacheable */,
                           OUT VCODEC_BUFFER_T *                 /* prBuf */
                          );  /* buffer address must cache line align */

    void (*pfnFree)(IN HANDLE                             /* hDrv */,
                    IN VCODEC_BUFFER_T *                   /* prBuf */
                   );  /* same memory type with malloc */

} hevcd_callback_t;

typedef struct
{
    unsigned char *buffer_origin;
    unsigned char *luma;
    unsigned char *cb, *cr;
    int y_stride, uv_stride;
    int width, height;
    int ref_count;
} decode_picture_buffer_info_t;


typedef struct
{
    unsigned char *start_address;
    int           length;
} HEVC_ACCESS_UNIT_T;

#define MAX_ACCESS_UNIT_NUMBER    32

typedef struct
{
    HEVC_ACCESS_UNIT_T  au_list[MAX_ACCESS_UNIT_NUMBER];
    int                 au_number;

} HEVC_DECODE_INP_T;

typedef struct
{
    unsigned char *y;
    unsigned char *u;
    unsigned char *v;

    int y_stride;
    int uv_stride;

    int width;
    int height;
} HEVC_DECODE_PICTURE_T;

typedef struct
{
    int width;
    int height;
} HEVC_PICTURE_INFO_T;


VCODEC_DEC_ERROR_T HEVCDecoderGetMemoryRequired(VCODEC_DEC_INPUT_T *prInput, VCODEC_MEMORY_SIZE_T *prMemeorySize, VCODEC_DEC_OUTPUT_BUFFER_PARAM_T *prYUVBufferParameter, OUT   VCODEC_MEMORY_TYPE_T *prBitStreamBufferMemType);
VCODEC_DEC_ERROR_T HEVCDecoderGetMemoryRequiredExtend(VCODEC_DEC_INPUT_T *prInput, VCODEC_MEMORY_SIZE_T *prMemeorySize, VCODEC_DEC_OUTPUT_BUFFER_PARAM_T *prYUVBufferParameter, OUT   VCODEC_DEC_INPUT_BUFFER_PARAM_T *prBitStreamParam, INOUT void *prExtra);
VCODEC_DEC_ERROR_T HEVCDecoderInitAdapt(IN HANDLE hCodec);
VCODEC_DEC_ERROR_T HEVCDecoderDeInitAdapt(IN HANDLE hCodec);
VCODEC_DEC_ERROR_T HEVCDecoderOpenAdapt(IN HANDLE                             hDrv ,
                                        IN VCODEC_DEC_CALLBACK_T               *pfnCallback,
                                        IN void                              *prOpenSetting,
                                        OUT HANDLE                           *hCodec
                                       );
VCODEC_DEC_ERROR_T HEVCDecoderStartAdapt(IN HANDLE hCodec, IN VCODEC_DEC_INPUT_T *prBufferHeader);
VCODEC_DEC_ERROR_T HEVCDecoderCloseAdapt(IN HANDLE hCodec);
VCODEC_DEC_ERROR_T HEVCDecoderGetNextDisplay(IN HANDLE hCodec, OUT VCODEC_DEC_PRIVATE_OUTPUT_T *prPrivateOutput);
VCODEC_DEC_ERROR_T HEVCDecoderGetParameterAdapt(IN HANDLE hCodec, IN VCODEC_DEC_PARAM_TYPE_T eCmd, INOUT void *pParam);
VCODEC_DEC_ERROR_T HEVCDecoderSetParameterAdapt(IN HANDLE hCodec, IN VCODEC_DEC_PARAM_TYPE_T eCmd, INOUT void *pParam);

extern VCODEC_DEC_API_T *GetHEVCDecoderAPI(void);

VCODEC_DEC_API_T *GetHEVCDecoderAPI(void);


#endif