xref: /rockchip-linux_mpp/mpp/legacy/vpu_api_legacy.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  * Copyright 2015 Rockchip Electronics Co. LTD
3*437bfbebSnyanmisaka  *
4*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
5*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
6*437bfbebSnyanmisaka  * You may obtain a copy of the License at
7*437bfbebSnyanmisaka  *
8*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
9*437bfbebSnyanmisaka  *
10*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
11*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
12*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
14*437bfbebSnyanmisaka  * limitations under the License.
15*437bfbebSnyanmisaka  */
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka #ifndef __VPU_API_LEGACY_H__
18*437bfbebSnyanmisaka #define __VPU_API_LEGACY_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include <stdio.h>
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka #include "vpu_api.h"
23*437bfbebSnyanmisaka #include "rk_mpi.h"
24*437bfbebSnyanmisaka #include "rk_venc_cfg.h"
25*437bfbebSnyanmisaka 
26*437bfbebSnyanmisaka #include "vpu_api_mlvec.h"
27*437bfbebSnyanmisaka 
28*437bfbebSnyanmisaka #define OMX_BUFFERFLAG_EOS              0x00000001
29*437bfbebSnyanmisaka 
30*437bfbebSnyanmisaka #define VPU_API_DBG_FUNCTION            (0x00000001)
31*437bfbebSnyanmisaka #define VPU_API_DBG_INPUT               (0x00000010)
32*437bfbebSnyanmisaka #define VPU_API_DBG_OUTPUT              (0x00000020)
33*437bfbebSnyanmisaka #define VPU_API_DBG_CONTROL             (0x00000040)
34*437bfbebSnyanmisaka 
35*437bfbebSnyanmisaka #define vpu_api_dbg(flag, fmt, ...)     _mpp_dbg(vpu_api_debug, flag, fmt, ## __VA_ARGS__)
36*437bfbebSnyanmisaka #define vpu_api_dbg_f(flag, fmt, ...)   _mpp_dbg_f(vpu_api_debug, flag, fmt, ## __VA_ARGS__)
37*437bfbebSnyanmisaka 
38*437bfbebSnyanmisaka #define vpu_api_dbg_func(fmt, ...)      vpu_api_dbg_f(VPU_API_DBG_FUNCTION, fmt, ## __VA_ARGS__)
39*437bfbebSnyanmisaka #define vpu_api_dbg_input(fmt, ...)     vpu_api_dbg_f(VPU_API_DBG_INPUT, fmt, ## __VA_ARGS__)
40*437bfbebSnyanmisaka #define vpu_api_dbg_output(fmt, ...)    vpu_api_dbg_f(VPU_API_DBG_OUTPUT, fmt, ## __VA_ARGS__)
41*437bfbebSnyanmisaka #define vpu_api_dbg_ctrl(fmt, ...)      vpu_api_dbg_f(VPU_API_DBG_CONTROL, fmt, ## __VA_ARGS__)
42*437bfbebSnyanmisaka 
43*437bfbebSnyanmisaka extern RK_U32 vpu_api_debug;
44*437bfbebSnyanmisaka 
45*437bfbebSnyanmisaka typedef enum {
46*437bfbebSnyanmisaka     INPUT_FORMAT_MAP,
47*437bfbebSnyanmisaka } PerformCmd;
48*437bfbebSnyanmisaka 
49*437bfbebSnyanmisaka class VpuApiLegacy
50*437bfbebSnyanmisaka {
51*437bfbebSnyanmisaka public:
52*437bfbebSnyanmisaka     VpuApiLegacy();
53*437bfbebSnyanmisaka     ~VpuApiLegacy();
54*437bfbebSnyanmisaka 
55*437bfbebSnyanmisaka     RK_S32 init(VpuCodecContext *ctx, RK_U8 *extraData, RK_U32 extra_size);
56*437bfbebSnyanmisaka     RK_S32 flush(VpuCodecContext *ctx);
57*437bfbebSnyanmisaka 
58*437bfbebSnyanmisaka     RK_S32 decode(VpuCodecContext *ctx, VideoPacket_t *pkt, DecoderOut_t *aDecOut);
59*437bfbebSnyanmisaka     RK_S32 decode_sendstream(VideoPacket_t *pkt);
60*437bfbebSnyanmisaka     RK_S32 decode_getoutframe(VpuCodecContext *ctx, DecoderOut_t *aDecOut);
61*437bfbebSnyanmisaka     RK_S32 preProcessPacket(VpuCodecContext *ctx, VideoPacket_t *pkt);
62*437bfbebSnyanmisaka 
63*437bfbebSnyanmisaka     RK_S32 encode(VpuCodecContext *ctx, EncInputStream_t *aEncInStrm, EncoderOut_t *aEncOut);
64*437bfbebSnyanmisaka     RK_S32 encoder_sendframe(VpuCodecContext *ctx, EncInputStream_t *aEncInStrm);
65*437bfbebSnyanmisaka     RK_S32 encoder_getstream(VpuCodecContext *ctx, EncoderOut_t *aEncOut);
66*437bfbebSnyanmisaka 
67*437bfbebSnyanmisaka     RK_S32 perform(PerformCmd cmd, RK_S32 *data);
68*437bfbebSnyanmisaka     RK_S32 control(VpuCodecContext *ctx, VPU_API_CMD cmd, void *param);
69*437bfbebSnyanmisaka 
70*437bfbebSnyanmisaka public:
71*437bfbebSnyanmisaka     FrameRdyCB frm_rdy_cb;
72*437bfbebSnyanmisaka 
73*437bfbebSnyanmisaka private:
74*437bfbebSnyanmisaka     VPU_GENERIC vpug;
75*437bfbebSnyanmisaka     MppCtx mpp_ctx;
76*437bfbebSnyanmisaka     MppApi *mpi;
77*437bfbebSnyanmisaka     RK_U32 init_ok;
78*437bfbebSnyanmisaka     RK_U32 frame_count;
79*437bfbebSnyanmisaka     RK_U32 set_eos;
80*437bfbebSnyanmisaka     MppFrame frm_info;
81*437bfbebSnyanmisaka 
82*437bfbebSnyanmisaka     /* encoder parameters */
83*437bfbebSnyanmisaka     MppBufferGroup memGroup;
84*437bfbebSnyanmisaka     MppFrameFormat format;
85*437bfbebSnyanmisaka 
86*437bfbebSnyanmisaka     RK_U32 mInputTimeOutMs;
87*437bfbebSnyanmisaka 
88*437bfbebSnyanmisaka     RK_S32 fd_input;
89*437bfbebSnyanmisaka     RK_S32 fd_output;
90*437bfbebSnyanmisaka 
91*437bfbebSnyanmisaka     RK_U32 mEosSet;
92*437bfbebSnyanmisaka 
93*437bfbebSnyanmisaka     EncParameter_t enc_param;
94*437bfbebSnyanmisaka     MppEncCfg enc_cfg;
95*437bfbebSnyanmisaka     MppPacket enc_hdr_pkt;
96*437bfbebSnyanmisaka     void *enc_hdr_buf;
97*437bfbebSnyanmisaka     RK_S32 enc_hdr_buf_size;
98*437bfbebSnyanmisaka 
99*437bfbebSnyanmisaka     /* for mlvec */
100*437bfbebSnyanmisaka     VpuApiMlvec mlvec;
101*437bfbebSnyanmisaka     VpuApiMlvecDynamicCfg mlvec_dy_cfg;
102*437bfbebSnyanmisaka 
103*437bfbebSnyanmisaka     RK_S32 dec_out_frm_struct_type;
104*437bfbebSnyanmisaka };
105*437bfbebSnyanmisaka 
106*437bfbebSnyanmisaka #endif /*__VPU_API_LEGACY_H__*/
107