#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 { … };
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 = …;