/* 
 | 
 * Copyright 2020 Rockchip Electronics Co. LTD 
 | 
 * 
 | 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 | 
 * you may not use this file except in compliance with the License. 
 | 
 * You may obtain a copy of the License at 
 | 
 * 
 | 
 *      http://www.apache.org/licenses/LICENSE-2.0 
 | 
 * 
 | 
 * Unless required by applicable law or agreed to in writing, software 
 | 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 | 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 | 
 * See the License for the specific language governing permissions and 
 | 
 * limitations under the License. 
 | 
 */ 
 | 
  
 | 
#ifndef __MPP_DEC_CFG_H__ 
 | 
#define __MPP_DEC_CFG_H__ 
 | 
  
 | 
#include "mpp_frame.h" 
 | 
#include "rk_vdec_cmd.h" 
 | 
  
 | 
typedef enum MppDecCfgChange_e { 
 | 
    MPP_DEC_CFG_CHANGE_TYPE             = (1 << 0), 
 | 
    MPP_DEC_CFG_CHANGE_CODING           = (1 << 1), 
 | 
    MPP_DEC_CFG_CHANGE_HW_TYPE          = (1 << 2), 
 | 
    MPP_DEC_CFG_CHANGE_BATCH_MODE       = (1 << 3), 
 | 
  
 | 
    MPP_DEC_CFG_CHANGE_OUTPUT_FORMAT    = (1 << 8), 
 | 
    MPP_DEC_CFG_CHANGE_FAST_OUT         = (1 << 9), 
 | 
    MPP_DEC_CFG_CHANGE_FAST_PARSE       = (1 << 10), 
 | 
    MPP_DEC_CFG_CHANGE_SPLIT_PARSE      = (1 << 11), 
 | 
    MPP_DEC_CFG_CHANGE_INTERNAL_PTS     = (1 << 12), 
 | 
    MPP_DEC_CFG_CHANGE_SORT_PTS         = (1 << 13), 
 | 
    MPP_DEC_CFG_CHANGE_DISABLE_ERROR    = (1 << 14), 
 | 
    MPP_DEC_CFG_CHANGE_ENABLE_VPROC     = (1 << 15), 
 | 
    MPP_DEC_CFG_CHANGE_ENABLE_FAST_PLAY = (1 << 16), 
 | 
  
 | 
    MPP_DEC_CFG_CHANGE_ALL              = (0xFFFFFFFF), 
 | 
} MppDecCfgChange; 
 | 
  
 | 
typedef struct MppDecBaseCfg_t { 
 | 
    RK_U64              change; 
 | 
  
 | 
    MppCtxType          type; 
 | 
    MppCodingType       coding; 
 | 
    RK_S32              hw_type; 
 | 
    RK_U32              batch_mode; 
 | 
  
 | 
    MppFrameFormat      out_fmt; 
 | 
    RK_U32              fast_out; 
 | 
    RK_U32              fast_parse; 
 | 
    RK_U32              split_parse; 
 | 
    RK_U32              internal_pts; 
 | 
    RK_U32              sort_pts; 
 | 
    RK_U32              disable_error; 
 | 
    RK_U32              enable_vproc; 
 | 
    RK_U32              enable_fast_play; 
 | 
} MppDecBaseCfg; 
 | 
  
 | 
typedef enum MppDecCbCfgChange_e { 
 | 
    MPP_DEC_CB_CFG_CHANGE_PKT_RDY       = (1 << 0), 
 | 
    MPP_DEC_CB_CFG_CHANGE_FRM_RDY       = (1 << 1), 
 | 
  
 | 
    MPP_DEC_CB_CFG_CHANGE_ALL           = (0xFFFFFFFF), 
 | 
} MppDecCbCfgChange; 
 | 
  
 | 
typedef struct MppDecCbCfg_t { 
 | 
    RK_U64              change; 
 | 
  
 | 
    /* notify packet process done and can accept new packet */ 
 | 
    MppExtCbFunc        pkt_rdy_cb; 
 | 
    MppExtCbCtx         pkt_rdy_ctx; 
 | 
    RK_S32              pkt_rdy_cmd; 
 | 
  
 | 
    /* notify frame ready for output */ 
 | 
    MppExtCbFunc        frm_rdy_cb; 
 | 
    MppExtCbCtx         frm_rdy_ctx; 
 | 
    RK_S32              frm_rdy_cmd; 
 | 
} MppDecCbCfg; 
 | 
  
 | 
typedef struct MppDecStatusCfg_t { 
 | 
    RK_U32              hal_support_fast_mode; 
 | 
    RK_U32              hal_task_count; 
 | 
    RK_U32              vproc_task_count; 
 | 
} MppDecStatusCfg; 
 | 
  
 | 
typedef struct MppDecCfgSet_t { 
 | 
    MppDecBaseCfg       base; 
 | 
    MppDecStatusCfg     status; 
 | 
    MppDecCbCfg         cb; 
 | 
} MppDecCfgSet; 
 | 
  
 | 
/* 
 | 
 * MppDecCfgApi is the function set for configure MppDecCfgSet by name 
 | 
 */ 
 | 
typedef struct MppDecCfgApi_t { 
 | 
    const char          *name; 
 | 
    RK_S32              type_set; 
 | 
    RK_S32              type_get; 
 | 
    void                *api_set; 
 | 
    void                *api_get; 
 | 
} MppDecCfgApi; 
 | 
  
 | 
#endif /* __MPP_DEC_CFG_H__ */ 
 |