linux/drivers/staging/media/rkvdec/rkvdec-h264.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Rockchip Video Decoder H264 backend
 *
 * Copyright (C) 2019 Collabora, Ltd.
 *	Boris Brezillon <[email protected]>
 *
 * Copyright (C) 2016 Rockchip Electronics Co., Ltd.
 *	Jeffy Chen <[email protected]>
 */

#include <media/v4l2-h264.h>
#include <media/v4l2-mem2mem.h>

#include "rkvdec.h"
#include "rkvdec-regs.h"

/* Size with u32 units. */
#define RKV_CABAC_INIT_BUFFER_SIZE
#define RKV_RPS_SIZE
#define RKV_ERROR_INFO_SIZE

#define RKVDEC_NUM_REFLIST

struct rkvdec_h264_scaling_list {};

struct rkvdec_sps_pps_packet {};

struct rkvdec_ps_field {};

#define PS_FIELD(_offset, _len)

#define SEQ_PARAMETER_SET_ID
#define PROFILE_IDC
#define CONSTRAINT_SET3_FLAG
#define CHROMA_FORMAT_IDC
#define BIT_DEPTH_LUMA
#define BIT_DEPTH_CHROMA
#define QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG
#define LOG2_MAX_FRAME_NUM_MINUS4
#define MAX_NUM_REF_FRAMES
#define PIC_ORDER_CNT_TYPE
#define LOG2_MAX_PIC_ORDER_CNT_LSB_MINUS4
#define DELTA_PIC_ORDER_ALWAYS_ZERO_FLAG
#define PIC_WIDTH_IN_MBS
#define PIC_HEIGHT_IN_MBS
#define FRAME_MBS_ONLY_FLAG
#define MB_ADAPTIVE_FRAME_FIELD_FLAG
#define DIRECT_8X8_INFERENCE_FLAG
#define MVC_EXTENSION_ENABLE
#define NUM_VIEWS
#define VIEW_ID(i)
#define NUM_ANCHOR_REFS_L(i)
#define ANCHOR_REF_L(i)
#define NUM_NON_ANCHOR_REFS_L(i)
#define NON_ANCHOR_REFS_L(i)
#define PIC_PARAMETER_SET_ID
#define PPS_SEQ_PARAMETER_SET_ID
#define ENTROPY_CODING_MODE_FLAG
#define BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT_FLAG
#define NUM_REF_IDX_L_DEFAULT_ACTIVE_MINUS1(i)
#define WEIGHTED_PRED_FLAG
#define WEIGHTED_BIPRED_IDC
#define PIC_INIT_QP_MINUS26
#define PIC_INIT_QS_MINUS26
#define CHROMA_QP_INDEX_OFFSET
#define DEBLOCKING_FILTER_CONTROL_PRESENT_FLAG
#define CONSTRAINED_INTRA_PRED_FLAG
#define REDUNDANT_PIC_CNT_PRESENT
#define TRANSFORM_8X8_MODE_FLAG
#define SECOND_CHROMA_QP_INDEX_OFFSET
#define SCALING_LIST_ENABLE_FLAG
#define SCALING_LIST_ADDRESS
#define IS_LONG_TERM(i)

#define DPB_OFFS(i, j)
#define DPB_INFO(i, j)
#define BOTTOM_FLAG(i, j)
#define VIEW_INDEX_OFF(i, j)

/* Data structure describing auxiliary buffer format. */
struct rkvdec_h264_priv_tbl {};

struct rkvdec_h264_reflists {};

struct rkvdec_h264_run {};

struct rkvdec_h264_ctx {};

#define CABAC_ENTRY(ctxidx, idc0_m, idc0_n, idc1_m, idc1_n,		\
	    idc2_m, idc2_n, intra_m, intra_n)

/*
 * Constant CABAC table.
 * Built from the tables described in section '9.3.1.1 Initialisation process
 * for context variables' of the H264 spec.
 */
static const s8 rkvdec_h264_cabac_table[4][464][2] =;

static void set_ps_field(u32 *buf, struct rkvdec_ps_field field, u32 value)
{}

static void assemble_hw_pps(struct rkvdec_ctx *ctx,
			    struct rkvdec_h264_run *run)
{}

static void lookup_ref_buf_idx(struct rkvdec_ctx *ctx,
			       struct rkvdec_h264_run *run)
{}

static void assemble_hw_rps(struct rkvdec_ctx *ctx,
			    struct v4l2_h264_reflist_builder *builder,
			    struct rkvdec_h264_run *run)
{}

static void assemble_hw_scaling_list(struct rkvdec_ctx *ctx,
				     struct rkvdec_h264_run *run)
{}

/*
 * dpb poc related registers table
 */
static const u32 poc_reg_tbl_top_field[16] =;

static const u32 poc_reg_tbl_bottom_field[16] =;

static void config_registers(struct rkvdec_ctx *ctx,
			     struct rkvdec_h264_run *run)
{}

#define RKVDEC_H264_MAX_DEPTH_IN_BYTES

static int rkvdec_h264_adjust_fmt(struct rkvdec_ctx *ctx,
				  struct v4l2_format *f)
{}

static int rkvdec_h264_validate_sps(struct rkvdec_ctx *ctx,
				    const struct v4l2_ctrl_h264_sps *sps)
{}

static int rkvdec_h264_start(struct rkvdec_ctx *ctx)
{}

static void rkvdec_h264_stop(struct rkvdec_ctx *ctx)
{}

static void rkvdec_h264_run_preamble(struct rkvdec_ctx *ctx,
				     struct rkvdec_h264_run *run)
{}

static int rkvdec_h264_run(struct rkvdec_ctx *ctx)
{}

static int rkvdec_h264_try_ctrl(struct rkvdec_ctx *ctx, struct v4l2_ctrl *ctrl)
{}

const struct rkvdec_coded_fmt_ops rkvdec_h264_fmt_ops =;