FFmpeg
Macros | Functions | Variables
hevcdec.c File Reference
#include "config_components.h"
#include "libavutil/attributes.h"
#include "libavutil/avstring.h"
#include "libavutil/common.h"
#include "libavutil/film_grain_params.h"
#include "libavutil/internal.h"
#include "libavutil/md5.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/timecode.h"
#include "aom_film_grain.h"
#include "bswapdsp.h"
#include "cabac_functions.h"
#include "codec_internal.h"
#include "decode.h"
#include "golomb.h"
#include "hevc.h"
#include "parse.h"
#include "hevcdec.h"
#include "hwaccel_internal.h"
#include "hwconfig.h"
#include "internal.h"
#include "profiles.h"
#include "progressframe.h"
#include "refstruct.h"
#include "thread.h"

Go to the source code of this file.

Macros

#define HWACCEL_MAX
 
#define CTB(tab, x, y)   ((tab)[(y) * sps->ctb_width + (x)])
 
#define SET_SAO(elem, value)
 
#define SUBDIVIDE(x, y, idx)
 
#define POS(c_idx, x, y)
 
#define MD5_PRI   "%016" PRIx64 "%016" PRIx64
 
#define MD5_PRI_ARG(buf)   AV_RB64(buf), AV_RB64((const uint8_t*)(buf) + 8)
 
#define OFFSET(x)   offsetof(HEVCContext, x)
 
#define PAR   (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM)
 

Functions

static void pic_arrays_free (HEVCContext *s)
 NOTE: Each function hls_foo correspond to the function foo in the specification (HLS stands for High Level Syntax). More...
 
static int pic_arrays_init (HEVCContext *s, const HEVCSPS *sps)
 
static int pred_weight_table (SliceHeader *sh, void *logctx, const HEVCSPS *sps, GetBitContext *gb)
 
static int decode_lt_rps (const HEVCSPS *sps, LongTermRPS *rps, GetBitContext *gb, int cur_poc, int poc_lsb)
 
static void export_stream_params (HEVCContext *s, const HEVCSPS *sps)
 
static int export_stream_params_from_sei (HEVCContext *s)
 
static enum AVPixelFormat get_format (HEVCContext *s, const HEVCSPS *sps)
 
static int set_sps (HEVCContext *s, const HEVCSPS *sps, enum AVPixelFormat pix_fmt)
 
static int hls_slice_header (SliceHeader *sh, const HEVCContext *s, GetBitContext *gb)
 
static void hls_sao_param (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int rx, int ry)
 
static int hls_cross_component_pred (HEVCLocalContext *lc, int idx)
 
static int hls_transform_unit (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int x0, int y0, int xBase, int yBase, int cb_xBase, int cb_yBase, int log2_cb_size, int log2_trafo_size, int blk_idx, int cbf_luma, int *cbf_cb, int *cbf_cr)
 
static void set_deblocking_bypass (const HEVCContext *s, const HEVCSPS *sps, int x0, int y0, int log2_cb_size)
 
static int hls_transform_tree (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int x0, int y0, int xBase, int yBase, int cb_xBase, int cb_yBase, int log2_cb_size, int log2_trafo_size, int trafo_depth, int blk_idx, const int *base_cbf_cb, const int *base_cbf_cr)
 
static int hls_pcm_sample (HEVCLocalContext *lc, const HEVCPPS *pps, int x0, int y0, int log2_cb_size)
 
static void luma_mc_uni (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, uint8_t *dst, ptrdiff_t dststride, const AVFrame *ref, const Mv *mv, int x_off, int y_off, int block_w, int block_h, int luma_weight, int luma_offset)
 8.5.3.2.2.1 Luma sample unidirectional interpolation process More...
 
static void luma_mc_bi (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, uint8_t *dst, ptrdiff_t dststride, const AVFrame *ref0, const Mv *mv0, int x_off, int y_off, int block_w, int block_h, const AVFrame *ref1, const Mv *mv1, struct MvField *current_mv)
 8.5.3.2.2.1 Luma sample bidirectional interpolation process More...
 
static void chroma_mc_uni (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, uint8_t *dst0, ptrdiff_t dststride, const uint8_t *src0, ptrdiff_t srcstride, int reflist, int x_off, int y_off, int block_w, int block_h, const struct MvField *current_mv, int chroma_weight, int chroma_offset)
 8.5.3.2.2.2 Chroma sample uniprediction interpolation process More...
 
static void chroma_mc_bi (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, uint8_t *dst0, ptrdiff_t dststride, const AVFrame *ref0, const AVFrame *ref1, int x_off, int y_off, int block_w, int block_h, const MvField *current_mv, int cidx)
 8.5.3.2.2.2 Chroma sample bidirectional interpolation process More...
 
static void hevc_await_progress (const HEVCContext *s, const HEVCFrame *ref, const Mv *mv, int y0, int height)
 
static void hevc_luma_mv_mvp_mode (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int part_idx, int merge_idx, MvField *mv)
 
static void hls_prediction_unit (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int partIdx, int idx)
 
static int luma_intra_pred_mode (HEVCLocalContext *lc, const HEVCSPS *sps, int x0, int y0, int pu_size, int prev_intra_luma_pred_flag)
 8.4.1 More...
 
static av_always_inline void set_ct_depth (const HEVCSPS *sps, uint8_t *tab_ct_depth, int x0, int y0, int log2_cb_size, int ct_depth)
 
static void intra_prediction_unit (HEVCLocalContext *lc, const HEVCSPS *sps, int x0, int y0, int log2_cb_size)
 
static void intra_prediction_unit_default_value (HEVCLocalContext *lc, const HEVCSPS *sps, int x0, int y0, int log2_cb_size)
 
static int hls_coding_unit (HEVCLocalContext *lc, const HEVCContext *s, const HEVCPPS *pps, const HEVCSPS *sps, int x0, int y0, int log2_cb_size)
 
static int hls_coding_quadtree (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int x0, int y0, int log2_cb_size, int cb_depth)
 
static void hls_decode_neighbour (HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int x_ctb, int y_ctb, int ctb_addr_ts)
 
static int hls_decode_entry (HEVCContext *s, GetBitContext *gb)
 
static int hls_decode_entry_wpp (AVCodecContext *avctx, void *hevc_lclist, int job, int self_id)
 
static int hls_slice_data_wpp (HEVCContext *s, const H2645NAL *nal)
 
static int decode_slice_data (HEVCContext *s, const H2645NAL *nal, GetBitContext *gb)
 
static int set_side_data (HEVCContext *s)
 
static int hevc_frame_start (HEVCContext *s)
 
static int verify_md5 (HEVCContext *s, AVFrame *frame)
 
static int hevc_frame_end (HEVCContext *s)
 
static int decode_slice (HEVCContext *s, const H2645NAL *nal, GetBitContext *gb)
 
static int decode_nal_unit (HEVCContext *s, const H2645NAL *nal)
 
static int decode_nal_units (HEVCContext *s, const uint8_t *buf, int length)
 
static int hevc_decode_extradata (HEVCContext *s, uint8_t *buf, int length, int first)
 
static int hevc_decode_frame (AVCodecContext *avctx, AVFrame *rframe, int *got_output, AVPacket *avpkt)
 
static int hevc_ref_frame (HEVCFrame *dst, const HEVCFrame *src)
 
static av_cold int hevc_decode_free (AVCodecContext *avctx)
 
static av_cold int hevc_init_context (AVCodecContext *avctx)
 
static av_cold int hevc_decode_init (AVCodecContext *avctx)
 
static void hevc_decode_flush (AVCodecContext *avctx)
 

Variables

static const uint8_t hevc_pel_weight [65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 }
 
static const uint8_t tab_mode_idx []
 
static const AVOption options []
 
static const AVClass hevc_decoder_class
 
const FFCodec ff_hevc_decoder
 

Macro Definition Documentation

◆ HWACCEL_MAX

#define HWACCEL_MAX
Value:
(CONFIG_HEVC_DXVA2_HWACCEL + \
CONFIG_HEVC_D3D11VA_HWACCEL * 2 + \
CONFIG_HEVC_D3D12VA_HWACCEL + \
CONFIG_HEVC_NVDEC_HWACCEL + \
CONFIG_HEVC_VAAPI_HWACCEL + \
CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL + \
CONFIG_HEVC_VDPAU_HWACCEL + \
CONFIG_HEVC_VULKAN_HWACCEL)

◆ CTB

#define CTB (   tab,
  x,
 
)    ((tab)[(y) * sps->ctb_width + (x)])

Definition at line 989 of file hevcdec.c.

◆ SET_SAO

#define SET_SAO (   elem,
  value 
)
Value:
do { \
if (!sao_merge_up_flag && !sao_merge_left_flag) \
sao->elem = value; \
else if (sao_merge_left_flag) \
sao->elem = CTB(s->sao, rx-1, ry).elem; \
else if (sao_merge_up_flag) \
sao->elem = CTB(s->sao, rx, ry-1).elem; \
else \
sao->elem = 0; \
} while (0)

Definition at line 991 of file hevcdec.c.

◆ SUBDIVIDE

#define SUBDIVIDE (   x,
  y,
  idx 
)
Value:
do { \
ret = hls_transform_tree(lc, pps, sps, \
x, y, x0, y0, cb_xBase, cb_yBase, log2_cb_size, \
log2_trafo_size - 1, trafo_depth + 1, idx, \
cbf_cb, cbf_cr); \
if (ret < 0) \
return ret; \
} while (0)

◆ POS

#define POS (   c_idx,
  x,
 
)
Value:
&s->cur_frame->f->data[c_idx][((y) >> sps->vshift[c_idx]) * linesize[c_idx] + \
(((x) >> sps->hshift[c_idx]) << sps->pixel_shift)]

◆ MD5_PRI

#define MD5_PRI   "%016" PRIx64 "%016" PRIx64

◆ MD5_PRI_ARG

#define MD5_PRI_ARG (   buf)    AV_RB64(buf), AV_RB64((const uint8_t*)(buf) + 8)

◆ OFFSET

#define OFFSET (   x)    offsetof(HEVCContext, x)

Definition at line 3703 of file hevcdec.c.

◆ PAR

Definition at line 3704 of file hevcdec.c.

Function Documentation

◆ pic_arrays_free()

static void pic_arrays_free ( HEVCContext s)
static

NOTE: Each function hls_foo correspond to the function foo in the specification (HLS stands for High Level Syntax).

Section 5.7

Definition at line 68 of file hevcdec.c.

Referenced by hevc_decode_free(), pic_arrays_init(), and set_sps().

◆ pic_arrays_init()

static int pic_arrays_init ( HEVCContext s,
const HEVCSPS sps 
)
static

Definition at line 92 of file hevcdec.c.

Referenced by set_sps().

◆ pred_weight_table()

static int pred_weight_table ( SliceHeader sh,
void *  logctx,
const HEVCSPS sps,
GetBitContext gb 
)
static

Definition at line 146 of file hevcdec.c.

Referenced by hls_slice_header().

◆ decode_lt_rps()

static int decode_lt_rps ( const HEVCSPS sps,
LongTermRPS rps,
GetBitContext gb,
int  cur_poc,
int  poc_lsb 
)
static

Definition at line 263 of file hevcdec.c.

Referenced by hls_slice_header().

◆ export_stream_params()

static void export_stream_params ( HEVCContext s,
const HEVCSPS sps 
)
static

Definition at line 320 of file hevcdec.c.

Referenced by hevc_decode_extradata(), and set_sps().

◆ export_stream_params_from_sei()

static int export_stream_params_from_sei ( HEVCContext s)
static

Definition at line 376 of file hevcdec.c.

Referenced by hevc_decode_extradata(), and hevc_frame_start().

◆ get_format()

static enum AVPixelFormat get_format ( HEVCContext s,
const HEVCSPS sps 
)
static

Definition at line 396 of file hevcdec.c.

Referenced by hevc_frame_start().

◆ set_sps()

static int set_sps ( HEVCContext s,
const HEVCSPS sps,
enum AVPixelFormat  pix_fmt 
)
static

Definition at line 529 of file hevcdec.c.

Referenced by hevc_frame_start().

◆ hls_slice_header()

static int hls_slice_header ( SliceHeader sh,
const HEVCContext s,
GetBitContext gb 
)
static

Definition at line 592 of file hevcdec.c.

Referenced by decode_slice().

◆ hls_sao_param()

static void hls_sao_param ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
int  rx,
int  ry 
)
static

Definition at line 1003 of file hevcdec.c.

Referenced by hls_decode_entry(), and hls_decode_entry_wpp().

◆ hls_cross_component_pred()

static int hls_cross_component_pred ( HEVCLocalContext lc,
int  idx 
)
static

Definition at line 1079 of file hevcdec.c.

Referenced by hls_transform_unit().

◆ hls_transform_unit()

static int hls_transform_unit ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
int  x0,
int  y0,
int  xBase,
int  yBase,
int  cb_xBase,
int  cb_yBase,
int  log2_cb_size,
int  log2_trafo_size,
int  blk_idx,
int  cbf_luma,
int cbf_cb,
int cbf_cr 
)
static

Definition at line 1095 of file hevcdec.c.

Referenced by hls_transform_tree().

◆ set_deblocking_bypass()

static void set_deblocking_bypass ( const HEVCContext s,
const HEVCSPS sps,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 1306 of file hevcdec.c.

Referenced by hls_coding_unit(), and hls_transform_tree().

◆ hls_transform_tree()

static int hls_transform_tree ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
int  x0,
int  y0,
int  xBase,
int  yBase,
int  cb_xBase,
int  cb_yBase,
int  log2_cb_size,
int  log2_trafo_size,
int  trafo_depth,
int  blk_idx,
const int base_cbf_cb,
const int base_cbf_cr 
)
static

Definition at line 1322 of file hevcdec.c.

Referenced by hls_coding_unit().

◆ hls_pcm_sample()

static int hls_pcm_sample ( HEVCLocalContext lc,
const HEVCPPS pps,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 1449 of file hevcdec.c.

Referenced by hls_coding_unit().

◆ luma_mc_uni()

static void luma_mc_uni ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
uint8_t *  dst,
ptrdiff_t  dststride,
const AVFrame ref,
const Mv mv,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
int  luma_weight,
int  luma_offset 
)
static

8.5.3.2.2.1 Luma sample unidirectional interpolation process

Parameters
sHEVC decoding context
dsttarget buffer for block data at block position
dststridestride of the dst buffer
refreference picture buffer at origin (0, 0)
mvmotion vector (relative to block position) to get pixel data from
x_offhorizontal position of block from origin (0, 0)
y_offvertical position of block from origin (0, 0)
block_wwidth of block
block_hheight of block
luma_weightweighting factor applied to the luma prediction
luma_offsetadditive offset applied to the luma prediction value

Definition at line 1508 of file hevcdec.c.

Referenced by hls_prediction_unit().

◆ luma_mc_bi()

static void luma_mc_bi ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
uint8_t *  dst,
ptrdiff_t  dststride,
const AVFrame ref0,
const Mv mv0,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
const AVFrame ref1,
const Mv mv1,
struct MvField current_mv 
)
static

8.5.3.2.2.1 Luma sample bidirectional interpolation process

Parameters
sHEVC decoding context
dsttarget buffer for block data at block position
dststridestride of the dst buffer
ref0reference picture0 buffer at origin (0, 0)
mv0motion vector0 (relative to block position) to get pixel data from
x_offhorizontal position of block from origin (0, 0)
y_offvertical position of block from origin (0, 0)
block_wwidth of block
block_hheight of block
ref1reference picture1 buffer at origin (0, 0)
mv1motion vector1 (relative to block position) to get pixel data from
current_mvcurrent motion vector structure

Definition at line 1572 of file hevcdec.c.

Referenced by hls_prediction_unit().

◆ chroma_mc_uni()

static void chroma_mc_uni ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
uint8_t *  dst0,
ptrdiff_t  dststride,
const uint8_t *  src0,
ptrdiff_t  srcstride,
int  reflist,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
const struct MvField current_mv,
int  chroma_weight,
int  chroma_offset 
)
static

8.5.3.2.2.2 Chroma sample uniprediction interpolation process

Parameters
sHEVC decoding context
dst1target buffer for block data at block position (U plane)
dst2target buffer for block data at block position (V plane)
dststridestride of the dst1 and dst2 buffers
refreference picture buffer at origin (0, 0)
mvmotion vector (relative to block position) to get pixel data from
x_offhorizontal position of block from origin (0, 0)
y_offvertical position of block from origin (0, 0)
block_wwidth of block
block_hheight of block
chroma_weightweighting factor applied to the chroma prediction
chroma_offsetadditive offset applied to the chroma prediction value

Definition at line 1666 of file hevcdec.c.

Referenced by hls_prediction_unit().

◆ chroma_mc_bi()

static void chroma_mc_bi ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
uint8_t *  dst0,
ptrdiff_t  dststride,
const AVFrame ref0,
const AVFrame ref1,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
const MvField current_mv,
int  cidx 
)
static

8.5.3.2.2.2 Chroma sample bidirectional interpolation process

Parameters
sHEVC decoding context
dsttarget buffer for block data at block position
dststridestride of the dst buffer
ref0reference picture0 buffer at origin (0, 0)
mv0motion vector0 (relative to block position) to get pixel data from
x_offhorizontal position of block from origin (0, 0)
y_offvertical position of block from origin (0, 0)
block_wwidth of block
block_hheight of block
ref1reference picture1 buffer at origin (0, 0)
mv1motion vector1 (relative to block position) to get pixel data from
current_mvcurrent motion vector structure
cidxchroma component(cb, cr)

Definition at line 1736 of file hevcdec.c.

Referenced by hls_prediction_unit().

◆ hevc_await_progress()

static void hevc_await_progress ( const HEVCContext s,
const HEVCFrame ref,
const Mv mv,
int  y0,
int  height 
)
static

Definition at line 1829 of file hevcdec.c.

Referenced by hls_prediction_unit().

◆ hevc_luma_mv_mvp_mode()

static void hevc_luma_mv_mvp_mode ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
int  x0,
int  y0,
int  nPbW,
int  nPbH,
int  log2_cb_size,
int  part_idx,
int  merge_idx,
MvField mv 
)
static

Definition at line 1839 of file hevcdec.c.

Referenced by hls_prediction_unit().

◆ hls_prediction_unit()

static void hls_prediction_unit ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
int  x0,
int  y0,
int  nPbW,
int  nPbH,
int  log2_cb_size,
int  partIdx,
int  idx 
)
static

Definition at line 1886 of file hevcdec.c.

Referenced by hls_coding_unit().

◆ luma_intra_pred_mode()

static int luma_intra_pred_mode ( HEVCLocalContext lc,
const HEVCSPS sps,
int  x0,
int  y0,
int  pu_size,
int  prev_intra_luma_pred_flag 
)
static

8.4.1

Definition at line 2014 of file hevcdec.c.

Referenced by intra_prediction_unit().

◆ set_ct_depth()

static av_always_inline void set_ct_depth ( const HEVCSPS sps,
uint8_t *  tab_ct_depth,
int  x0,
int  y0,
int  log2_cb_size,
int  ct_depth 
)
static

Definition at line 2095 of file hevcdec.c.

Referenced by hls_coding_unit().

◆ intra_prediction_unit()

static void intra_prediction_unit ( HEVCLocalContext lc,
const HEVCSPS sps,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 2113 of file hevcdec.c.

Referenced by hls_coding_unit().

◆ intra_prediction_unit_default_value()

static void intra_prediction_unit_default_value ( HEVCLocalContext lc,
const HEVCSPS sps,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 2181 of file hevcdec.c.

Referenced by hls_coding_unit().

◆ hls_coding_unit()

static int hls_coding_unit ( HEVCLocalContext lc,
const HEVCContext s,
const HEVCPPS pps,
const HEVCSPS sps,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 2205 of file hevcdec.c.

Referenced by hls_coding_quadtree().

◆ hls_coding_quadtree()

static int hls_coding_quadtree ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
int  x0,
int  y0,
int  log2_cb_size,
int  cb_depth 
)
static

Definition at line 2390 of file hevcdec.c.

Referenced by hls_decode_entry(), and hls_decode_entry_wpp().

◆ hls_decode_neighbour()

static void hls_decode_neighbour ( HEVCLocalContext lc,
const HEVCPPS pps,
const HEVCSPS sps,
int  x_ctb,
int  y_ctb,
int  ctb_addr_ts 
)
static

Definition at line 2477 of file hevcdec.c.

Referenced by hls_decode_entry(), and hls_decode_entry_wpp().

◆ hls_decode_entry()

static int hls_decode_entry ( HEVCContext s,
GetBitContext gb 
)
static

Definition at line 2527 of file hevcdec.c.

Referenced by decode_slice_data().

◆ hls_decode_entry_wpp()

static int hls_decode_entry_wpp ( AVCodecContext avctx,
void *  hevc_lclist,
int  job,
int  self_id 
)
static

Definition at line 2580 of file hevcdec.c.

Referenced by hls_slice_data_wpp().

◆ hls_slice_data_wpp()

static int hls_slice_data_wpp ( HEVCContext s,
const H2645NAL nal 
)
static

Definition at line 2666 of file hevcdec.c.

Referenced by decode_slice_data().

◆ decode_slice_data()

static int decode_slice_data ( HEVCContext s,
const H2645NAL nal,
GetBitContext gb 
)
static

Definition at line 2768 of file hevcdec.c.

Referenced by decode_slice().

◆ set_side_data()

static int set_side_data ( HEVCContext s)
static

Definition at line 2820 of file hevcdec.c.

Referenced by hevc_frame_start().

◆ hevc_frame_start()

static int hevc_frame_start ( HEVCContext s)
static

Definition at line 2907 of file hevcdec.c.

Referenced by decode_slice().

◆ verify_md5()

static int verify_md5 ( HEVCContext s,
AVFrame frame 
)
static

Definition at line 3040 of file hevcdec.c.

Referenced by hevc_frame_end().

◆ hevc_frame_end()

static int hevc_frame_end ( HEVCContext s)
static

Definition at line 3109 of file hevcdec.c.

Referenced by decode_nal_units().

◆ decode_slice()

static int decode_slice ( HEVCContext s,
const H2645NAL nal,
GetBitContext gb 
)
static

Definition at line 3155 of file hevcdec.c.

Referenced by decode_nal_unit(), and decode_slice_data().

◆ decode_nal_unit()

static int decode_nal_unit ( HEVCContext s,
const H2645NAL nal 
)
static

Definition at line 3199 of file hevcdec.c.

Referenced by decode_nal_units().

◆ decode_nal_units()

static int decode_nal_units ( HEVCContext s,
const uint8_t *  buf,
int  length 
)
static

Definition at line 3286 of file hevcdec.c.

Referenced by hevc_decode_frame().

◆ hevc_decode_extradata()

static int hevc_decode_extradata ( HEVCContext s,
uint8_t *  buf,
int  length,
int  first 
)
static

Definition at line 3379 of file hevcdec.c.

Referenced by hevc_decode_frame(), and hevc_decode_init().

◆ hevc_decode_frame()

static int hevc_decode_frame ( AVCodecContext avctx,
AVFrame rframe,
int got_output,
AVPacket avpkt 
)
static

Definition at line 3406 of file hevcdec.c.

◆ hevc_ref_frame()

static int hevc_ref_frame ( HEVCFrame dst,
const HEVCFrame src 
)
static

Definition at line 3452 of file hevcdec.c.

◆ hevc_decode_free()

static av_cold int hevc_decode_free ( AVCodecContext avctx)
static

Definition at line 3483 of file hevcdec.c.

◆ hevc_init_context()

static av_cold int hevc_init_context ( AVCodecContext avctx)
static

Definition at line 3523 of file hevcdec.c.

Referenced by hevc_decode_init().

◆ hevc_decode_init()

static av_cold int hevc_decode_init ( AVCodecContext avctx)
static

Definition at line 3648 of file hevcdec.c.

◆ hevc_decode_flush()

static void hevc_decode_flush ( AVCodecContext avctx)
static

Definition at line 3690 of file hevcdec.c.

Variable Documentation

◆ hevc_pel_weight

const uint8_t hevc_pel_weight[65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 }
static

Definition at line 56 of file hevcdec.c.

Referenced by chroma_mc_bi(), chroma_mc_uni(), luma_mc_bi(), and luma_mc_uni().

◆ tab_mode_idx

const uint8_t tab_mode_idx[]
static
Initial value:
= {
0, 1, 2, 2, 2, 2, 3, 5, 7, 8, 10, 12, 13, 15, 17, 18, 19, 20,
21, 22, 23, 23, 24, 24, 25, 25, 26, 27, 27, 28, 28, 29, 29, 30, 31}

Definition at line 2109 of file hevcdec.c.

Referenced by intra_prediction_unit().

◆ options

const AVOption options[]
static
Initial value:
= {
{ "apply_defdispwin", "Apply default display window from VUI", OFFSET(apply_defdispwin),
AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, PAR },
{ "strict-displaywin", "stricly apply default display window size", OFFSET(apply_defdispwin),
AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, PAR },
{ NULL },
}

Definition at line 3706 of file hevcdec.c.

◆ hevc_decoder_class

const AVClass hevc_decoder_class
static
Initial value:
= {
.class_name = "HEVC decoder",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 3714 of file hevcdec.c.

◆ ff_hevc_decoder

const FFCodec ff_hevc_decoder

Definition at line 3721 of file hevcdec.c.

s
#define s(width, name)
Definition: cbs_vp9.c:198
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
CTB
#define CTB(tab, x, y)
Definition: hevcdec.c:989
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:237
PAR
#define PAR
Definition: hevcdec.c:3704
options
static const AVOption options[]
Definition: hevcdec.c:3706
value
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default value
Definition: writing_filters.txt:86
ret
ret
Definition: filter_design.txt:187
sps
static int FUNC() sps(CodedBitstreamContext *ctx, RWContext *rw, H264RawSPS *current)
Definition: cbs_h264_syntax_template.c:260
pps
uint64_t pps
Definition: dovi_rpuenc.c:35
hls_transform_tree
static int hls_transform_tree(HEVCLocalContext *lc, const HEVCPPS *pps, const HEVCSPS *sps, int x0, int y0, int xBase, int yBase, int cb_xBase, int cb_yBase, int log2_cb_size, int log2_trafo_size, int trafo_depth, int blk_idx, const int *base_cbf_cb, const int *base_cbf_cr)
Definition: hevcdec.c:1322
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:261
OFFSET
#define OFFSET(x)
Definition: hevcdec.c:3703