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

// SPDX-License-Identifier: GPL-2.0
/*
 * Rockchip Video Decoder VP9 backend
 *
 * Copyright (C) 2019 Collabora, Ltd.
 *	Boris Brezillon <[email protected]>
 * Copyright (C) 2021 Collabora, Ltd.
 *	Andrzej Pietrasiewicz <[email protected]>
 *
 * Copyright (C) 2016 Rockchip Electronics Co., Ltd.
 *	Alpha Lin <[email protected]>
 */

/*
 * For following the vp9 spec please start reading this driver
 * code from rkvdec_vp9_run() followed by rkvdec_vp9_done().
 */

#include <linux/kernel.h>
#include <linux/vmalloc.h>
#include <media/v4l2-mem2mem.h>
#include <media/v4l2-vp9.h>

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

#define RKVDEC_VP9_PROBE_SIZE
#define RKVDEC_VP9_COUNT_SIZE
#define RKVDEC_VP9_MAX_SEGMAP_SIZE

struct rkvdec_vp9_intra_mode_probs {};

struct rkvdec_vp9_intra_only_frame_probs {};

struct rkvdec_vp9_inter_frame_probs {};

struct rkvdec_vp9_probs {};

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

struct rkvdec_vp9_refs_counts {};

struct rkvdec_vp9_inter_frame_symbol_counts {};

struct rkvdec_vp9_intra_frame_symbol_counts {};

struct rkvdec_vp9_run {};

struct rkvdec_vp9_frame_info {};

struct rkvdec_vp9_ctx {};

static void write_coeff_plane(const u8 coef[6][6][3], u8 *coeff_plane)
{}

static void init_intra_only_probs(struct rkvdec_ctx *ctx,
				  const struct rkvdec_vp9_run *run)
{}

static void init_inter_probs(struct rkvdec_ctx *ctx,
			     const struct rkvdec_vp9_run *run)
{}

static void init_probs(struct rkvdec_ctx *ctx,
		       const struct rkvdec_vp9_run *run)
{}

struct rkvdec_vp9_ref_reg {};

static struct rkvdec_vp9_ref_reg ref_regs[] =;

static struct rkvdec_decoded_buffer *
get_ref_buf(struct rkvdec_ctx *ctx, struct vb2_v4l2_buffer *dst, u64 timestamp)
{}

static dma_addr_t get_mv_base_addr(struct rkvdec_decoded_buffer *buf)
{}

static void config_ref_registers(struct rkvdec_ctx *ctx,
				 const struct rkvdec_vp9_run *run,
				 struct rkvdec_decoded_buffer *ref_buf,
				 struct rkvdec_vp9_ref_reg *ref_reg)
{}

static void config_seg_registers(struct rkvdec_ctx *ctx, unsigned int segid)
{}

static void update_dec_buf_info(struct rkvdec_decoded_buffer *buf,
				const struct v4l2_ctrl_vp9_frame *dec_params)
{}

static void update_ctx_cur_info(struct rkvdec_vp9_ctx *vp9_ctx,
				struct rkvdec_decoded_buffer *buf,
				const struct v4l2_ctrl_vp9_frame *dec_params)
{}

static void update_ctx_last_info(struct rkvdec_vp9_ctx *vp9_ctx)
{}

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

static int validate_dec_params(struct rkvdec_ctx *ctx,
			       const struct v4l2_ctrl_vp9_frame *dec_params)
{}

static int rkvdec_vp9_run_preamble(struct rkvdec_ctx *ctx,
				   struct rkvdec_vp9_run *run)
{}

static int rkvdec_vp9_run(struct rkvdec_ctx *ctx)
{}

#define copy_tx_and_skip(p1, p2)

static void rkvdec_vp9_done(struct rkvdec_ctx *ctx,
			    struct vb2_v4l2_buffer *src_buf,
			    struct vb2_v4l2_buffer *dst_buf,
			    enum vb2_buffer_state result)
{}

static void rkvdec_init_v4l2_vp9_count_tbl(struct rkvdec_ctx *ctx)
{}

static int rkvdec_vp9_start(struct rkvdec_ctx *ctx)
{}

static void rkvdec_vp9_stop(struct rkvdec_ctx *ctx)
{}

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

const struct rkvdec_coded_fmt_ops rkvdec_vp9_fmt_ops =;