cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vdec_drv_if.h (3147B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (c) 2016 MediaTek Inc.
      4 * Author: PC Chen <pc.chen@mediatek.com>
      5 *		   Tiffany Lin <tiffany.lin@mediatek.com>
      6 */
      7
      8#ifndef _VDEC_DRV_IF_H_
      9#define _VDEC_DRV_IF_H_
     10
     11#include "mtk_vcodec_drv.h"
     12#include "mtk_vcodec_dec.h"
     13#include "mtk_vcodec_util.h"
     14
     15
     16/**
     17 * enum vdec_fb_status  - decoder frame buffer status
     18 * @FB_ST_NORMAL: initial state
     19 * @FB_ST_DISPLAY: frame buffer is ready to be displayed
     20 * @FB_ST_FREE: frame buffer is not used by decoder any more
     21 */
     22enum vdec_fb_status {
     23	FB_ST_NORMAL		= 0,
     24	FB_ST_DISPLAY		= (1 << 0),
     25	FB_ST_FREE		= (1 << 1)
     26};
     27
     28/* For GET_PARAM_DISP_FRAME_BUFFER and GET_PARAM_FREE_FRAME_BUFFER,
     29 * the caller does not own the returned buffer. The buffer will not be
     30 *				released before vdec_if_deinit.
     31 * GET_PARAM_DISP_FRAME_BUFFER	: get next displayable frame buffer,
     32 *				struct vdec_fb**
     33 * GET_PARAM_FREE_FRAME_BUFFER	: get non-referenced framebuffer, vdec_fb**
     34 * GET_PARAM_PIC_INFO		: get picture info, struct vdec_pic_info*
     35 * GET_PARAM_CROP_INFO		: get crop info, struct v4l2_crop*
     36 * GET_PARAM_DPB_SIZE		: get dpb size, unsigned int*
     37 */
     38enum vdec_get_param_type {
     39	GET_PARAM_DISP_FRAME_BUFFER,
     40	GET_PARAM_FREE_FRAME_BUFFER,
     41	GET_PARAM_PIC_INFO,
     42	GET_PARAM_CROP_INFO,
     43	GET_PARAM_DPB_SIZE
     44};
     45
     46/**
     47 * struct vdec_fb_node  - decoder frame buffer node
     48 * @list	: list to hold this node
     49 * @fb	: point to frame buffer (vdec_fb), fb could point to frame buffer and
     50 *	working buffer this is for maintain buffers in different state
     51 */
     52struct vdec_fb_node {
     53	struct list_head list;
     54	struct vdec_fb *fb;
     55};
     56
     57extern const struct vdec_common_if vdec_h264_if;
     58extern const struct vdec_common_if vdec_h264_slice_if;
     59extern const struct vdec_common_if vdec_h264_slice_multi_if;
     60extern const struct vdec_common_if vdec_vp8_if;
     61extern const struct vdec_common_if vdec_vp8_slice_if;
     62extern const struct vdec_common_if vdec_vp9_if;
     63extern const struct vdec_common_if vdec_vp9_slice_lat_if;
     64
     65/**
     66 * vdec_if_init() - initialize decode driver
     67 * @ctx	: [in] v4l2 context
     68 * @fourcc	: [in] video format fourcc, V4L2_PIX_FMT_H264/VP8/VP9..
     69 */
     70int vdec_if_init(struct mtk_vcodec_ctx *ctx, unsigned int fourcc);
     71
     72/**
     73 * vdec_if_deinit() - deinitialize decode driver
     74 * @ctx	: [in] v4l2 context
     75 *
     76 */
     77void vdec_if_deinit(struct mtk_vcodec_ctx *ctx);
     78
     79/**
     80 * vdec_if_decode() - trigger decode
     81 * @ctx	: [in] v4l2 context
     82 * @bs	: [in] input bitstream
     83 * @fb	: [in] frame buffer to store decoded frame, when null means parse
     84 *	header only
     85 * @res_chg	: [out] resolution change happens if current bs have different
     86 *	picture width/height
     87 * Note: To flush the decoder when reaching EOF, set input bitstream as NULL.
     88 *
     89 * Return: 0 on success. -EIO on unrecoverable error.
     90 */
     91int vdec_if_decode(struct mtk_vcodec_ctx *ctx, struct mtk_vcodec_mem *bs,
     92		   struct vdec_fb *fb, bool *res_chg);
     93
     94/**
     95 * vdec_if_get_param() - get driver's parameter
     96 * @ctx	: [in] v4l2 context
     97 * @type	: [in] input parameter type
     98 * @out	: [out] buffer to store query result
     99 */
    100int vdec_if_get_param(struct mtk_vcodec_ctx *ctx, enum vdec_get_param_type type,
    101		      void *out);
    102
    103#endif