FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
hevcdec.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/common.h"
#include "libavutil/display.h"
#include "libavutil/internal.h"
#include "libavutil/mastering_display_metadata.h"
#include "libavutil/md5.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/stereo3d.h"
#include "bswapdsp.h"
#include "bytestream.h"
#include "cabac_functions.h"
#include "golomb.h"
#include "hevc.h"
#include "hevc_data.h"
#include "hevcdec.h"
#include "profiles.h"

Go to the source code of this file.

Macros

#define HWACCEL_MAX   (CONFIG_HEVC_DXVA2_HWACCEL + CONFIG_HEVC_D3D11VA_HWACCEL + CONFIG_HEVC_VAAPI_HWACCEL + CONFIG_HEVC_VDPAU_HWACCEL)
 
#define CTB(tab, x, y)   ((tab)[(y) * s->ps.sps->ctb_width + (x)])
 
#define SET_SAO(elem, value)
 
#define SUBDIVIDE(x, y, idx)
 
#define POS(c_idx, x, y)
 
#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 (HEVCContext *s, GetBitContext *gb)
 
static int decode_lt_rps (HEVCContext *s, LongTermRPS *rps, GetBitContext *gb)
 
static void export_stream_params (AVCodecContext *avctx, const HEVCParamSets *ps, const HEVCSPS *sps)
 
static int set_sps (HEVCContext *s, const HEVCSPS *sps, enum AVPixelFormat pix_fmt)
 
static int hls_slice_header (HEVCContext *s)
 
static void hls_sao_param (HEVCContext *s, int rx, int ry)
 
static int hls_cross_component_pred (HEVCContext *s, int idx)
 
static int hls_transform_unit (HEVCContext *s, 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 (HEVCContext *s, int x0, int y0, int log2_cb_size)
 
static int hls_transform_tree (HEVCContext *s, 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 (HEVCContext *s, int x0, int y0, int log2_cb_size)
 
static void luma_mc_uni (HEVCContext *s, uint8_t *dst, ptrdiff_t dststride, 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 (HEVCContext *s, uint8_t *dst, ptrdiff_t dststride, AVFrame *ref0, const Mv *mv0, int x_off, int y_off, int block_w, int block_h, 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 (HEVCContext *s, uint8_t *dst0, ptrdiff_t dststride, uint8_t *src0, ptrdiff_t srcstride, int reflist, int x_off, int y_off, int block_w, int block_h, 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 (HEVCContext *s, uint8_t *dst0, ptrdiff_t dststride, AVFrame *ref0, AVFrame *ref1, int x_off, int y_off, int block_w, int block_h, struct MvField *current_mv, int cidx)
 8.5.3.2.2.2 Chroma sample bidirectional interpolation process More...
 
static void hevc_await_progress (HEVCContext *s, HEVCFrame *ref, const Mv *mv, int y0, int height)
 
static void hevc_luma_mv_mvp_mode (HEVCContext *s, 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 (HEVCContext *s, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int partIdx, int idx)
 
static int luma_intra_pred_mode (HEVCContext *s, 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 (HEVCContext *s, int x0, int y0, int log2_cb_size, int ct_depth)
 
static void intra_prediction_unit (HEVCContext *s, int x0, int y0, int log2_cb_size)
 
static void intra_prediction_unit_default_value (HEVCContext *s, int x0, int y0, int log2_cb_size)
 
static int hls_coding_unit (HEVCContext *s, int x0, int y0, int log2_cb_size)
 
static int hls_coding_quadtree (HEVCContext *s, int x0, int y0, int log2_cb_size, int cb_depth)
 
static void hls_decode_neighbour (HEVCContext *s, int x_ctb, int y_ctb, int ctb_addr_ts)
 
static int hls_decode_entry (AVCodecContext *avctxt, void *isFilterThread)
 
static int hls_slice_data (HEVCContext *s)
 
static int hls_decode_entry_wpp (AVCodecContext *avctxt, void *input_ctb_row, int job, int self_id)
 
static int hls_slice_data_wpp (HEVCContext *s, const H2645NAL *nal)
 
static int set_side_data (HEVCContext *s)
 
static int hevc_frame_start (HEVCContext *s)
 
static int decode_nal_unit (HEVCContext *s, const H2645NAL *nal)
 
static int decode_nal_units (HEVCContext *s, const uint8_t *buf, int length)
 
static void print_md5 (void *log_ctx, int level, uint8_t md5[16])
 
static int verify_md5 (HEVCContext *s, AVFrame *frame)
 
static int hevc_decode_extradata (HEVCContext *s, uint8_t *buf, int length, int first)
 
static int hevc_decode_frame (AVCodecContext *avctx, void *data, int *got_output, AVPacket *avpkt)
 
static int hevc_ref_frame (HEVCContext *s, HEVCFrame *dst, HEVCFrame *src)
 
static av_cold int hevc_decode_free (AVCodecContext *avctx)
 
static av_cold int hevc_init_context (AVCodecContext *avctx)
 
static int hevc_update_thread_context (AVCodecContext *dst, const AVCodecContext *src)
 
static av_cold int hevc_decode_init (AVCodecContext *avctx)
 
static av_cold int hevc_init_thread_copy (AVCodecContext *avctx)
 
static void hevc_decode_flush (AVCodecContext *avctx)
 

Variables

const uint8_t ff_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
 
AVCodec ff_hevc_decoder
 

Macro Definition Documentation

#define HWACCEL_MAX   (CONFIG_HEVC_DXVA2_HWACCEL + CONFIG_HEVC_D3D11VA_HWACCEL + CONFIG_HEVC_VAAPI_HWACCEL + CONFIG_HEVC_VDPAU_HWACCEL)

Referenced by set_sps().

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

Definition at line 853 of file hevcdec.c.

Referenced by hls_sao_param().

#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)
const char * s
Definition: avisynth_c.h:768
#define CTB(tab, x, y)
Definition: hevcdec.c:853
GLsizei GLboolean const GLfloat * value
Definition: opengl_enc.c:109
if(ret< 0)
Definition: vf_mcdeint.c:282

Definition at line 855 of file hevcdec.c.

Referenced by hls_sao_param().

#define SUBDIVIDE (   x,
  y,
  idx 
)
Value:
do { \
ret = hls_transform_tree(s, 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)
const char * s
Definition: avisynth_c.h:768
static int hls_transform_tree(HEVCContext *s, 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:1178
return
if(ret< 0)
Definition: vf_mcdeint.c:282

Referenced by hls_transform_tree().

#define POS (   c_idx,
  x,
 
)
Value:
&s->frame->data[c_idx][((y) >> s->ps.sps->vshift[c_idx]) * s->frame->linesize[c_idx] + \
(((x) >> s->ps.sps->hshift[c_idx]) << s->ps.sps->pixel_shift)]
const char * s
Definition: avisynth_c.h:768

Referenced by hls_prediction_unit().

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

Definition at line 3410 of file hevcdec.c.

Definition at line 3411 of file hevcdec.c.

Function Documentation

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 57 of file hevcdec.c.

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

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

Definition at line 85 of file hevcdec.c.

Referenced by set_sps().

static int pred_weight_table ( HEVCContext s,
GetBitContext gb 
)
static

Definition at line 141 of file hevcdec.c.

Referenced by hls_slice_header().

static int decode_lt_rps ( HEVCContext s,
LongTermRPS rps,
GetBitContext gb 
)
static

Definition at line 247 of file hevcdec.c.

Referenced by hls_slice_header().

static void export_stream_params ( AVCodecContext avctx,
const HEVCParamSets ps,
const HEVCSPS sps 
)
static

Definition at line 305 of file hevcdec.c.

Referenced by hevc_decode_extradata(), and set_sps().

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

Definition at line 351 of file hevcdec.c.

Referenced by hevc_update_thread_context(), and hls_slice_header().

static int hls_slice_header ( HEVCContext s)
static

Definition at line 448 of file hevcdec.c.

Referenced by decode_nal_unit().

static void hls_sao_param ( HEVCContext s,
int  rx,
int  ry 
)
static

Definition at line 867 of file hevcdec.c.

Referenced by hls_decode_entry(), and hls_decode_entry_wpp().

static int hls_cross_component_pred ( HEVCContext s,
int  idx 
)
static

Definition at line 941 of file hevcdec.c.

Referenced by hls_transform_unit().

static int hls_transform_unit ( HEVCContext s,
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 957 of file hevcdec.c.

Referenced by hls_transform_tree().

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

Definition at line 1163 of file hevcdec.c.

Referenced by hls_coding_unit(), and hls_transform_tree().

static int hls_transform_tree ( HEVCContext s,
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 1178 of file hevcdec.c.

Referenced by hls_coding_unit().

static int hls_pcm_sample ( HEVCContext s,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 1301 of file hevcdec.c.

Referenced by hls_coding_unit().

static void luma_mc_uni ( HEVCContext s,
uint8_t dst,
ptrdiff_t  dststride,
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 1358 of file hevcdec.c.

Referenced by hls_prediction_unit().

static void luma_mc_bi ( HEVCContext s,
uint8_t dst,
ptrdiff_t  dststride,
AVFrame ref0,
const Mv mv0,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
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 1419 of file hevcdec.c.

Referenced by hls_prediction_unit().

static void chroma_mc_uni ( HEVCContext s,
uint8_t dst0,
ptrdiff_t  dststride,
uint8_t src0,
ptrdiff_t  srcstride,
int  reflist,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
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 1510 of file hevcdec.c.

Referenced by hls_prediction_unit().

static void chroma_mc_bi ( HEVCContext s,
uint8_t dst0,
ptrdiff_t  dststride,
AVFrame ref0,
AVFrame ref1,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
struct 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 1575 of file hevcdec.c.

Referenced by hls_prediction_unit().

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

Definition at line 1665 of file hevcdec.c.

Referenced by hls_prediction_unit().

static void hevc_luma_mv_mvp_mode ( HEVCContext s,
int  x0,
int  y0,
int  nPbW,
int  nPbH,
int  log2_cb_size,
int  part_idx,
int  merge_idx,
MvField mv 
)
static

Definition at line 1674 of file hevcdec.c.

Referenced by hls_prediction_unit().

static void hls_prediction_unit ( HEVCContext s,
int  x0,
int  y0,
int  nPbW,
int  nPbH,
int  log2_cb_size,
int  partIdx,
int  idx 
)
static

Definition at line 1719 of file hevcdec.c.

Referenced by hls_coding_unit().

static int luma_intra_pred_mode ( HEVCContext s,
int  x0,
int  y0,
int  pu_size,
int  prev_intra_luma_pred_flag 
)
static

8.4.1

Definition at line 1845 of file hevcdec.c.

Referenced by intra_prediction_unit().

static av_always_inline void set_ct_depth ( HEVCContext s,
int  x0,
int  y0,
int  log2_cb_size,
int  ct_depth 
)
static

Definition at line 1925 of file hevcdec.c.

Referenced by hls_coding_unit().

static void intra_prediction_unit ( HEVCContext s,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 1942 of file hevcdec.c.

Referenced by hls_coding_unit().

static void intra_prediction_unit_default_value ( HEVCContext s,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 2010 of file hevcdec.c.

Referenced by hls_coding_unit().

static int hls_coding_unit ( HEVCContext s,
int  x0,
int  y0,
int  log2_cb_size 
)
static

Definition at line 2033 of file hevcdec.c.

Referenced by hls_coding_quadtree().

static int hls_coding_quadtree ( HEVCContext s,
int  x0,
int  y0,
int  log2_cb_size,
int  cb_depth 
)
static

Definition at line 2196 of file hevcdec.c.

Referenced by hls_decode_entry(), and hls_decode_entry_wpp().

static void hls_decode_neighbour ( HEVCContext s,
int  x_ctb,
int  y_ctb,
int  ctb_addr_ts 
)
static

Definition at line 2281 of file hevcdec.c.

Referenced by hls_decode_entry(), and hls_decode_entry_wpp().

static int hls_decode_entry ( AVCodecContext avctxt,
void isFilterThread 
)
static

Definition at line 2330 of file hevcdec.c.

Referenced by hls_slice_data().

static int hls_slice_data ( HEVCContext s)
static

Definition at line 2386 of file hevcdec.c.

Referenced by decode_nal_unit().

static int hls_decode_entry_wpp ( AVCodecContext avctxt,
void input_ctb_row,
int  job,
int  self_id 
)
static

Definition at line 2397 of file hevcdec.c.

Referenced by hls_slice_data_wpp().

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

Definition at line 2474 of file hevcdec.c.

Referenced by decode_nal_unit().

static int set_side_data ( HEVCContext s)
static

Definition at line 2572 of file hevcdec.c.

Referenced by hevc_frame_start().

static int hevc_frame_start ( HEVCContext s)
static

Definition at line 2683 of file hevcdec.c.

Referenced by decode_nal_unit().

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

Definition at line 2742 of file hevcdec.c.

Referenced by decode_nal_units().

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

Definition at line 2884 of file hevcdec.c.

Referenced by hevc_decode_extradata(), and hevc_decode_frame().

static void print_md5 ( void log_ctx,
int  level,
uint8_t  md5[16] 
)
static

Definition at line 2925 of file hevcdec.c.

Referenced by verify_md5().

static int verify_md5 ( HEVCContext s,
AVFrame frame 
)
static

Definition at line 2932 of file hevcdec.c.

Referenced by hevc_decode_frame().

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

Definition at line 2998 of file hevcdec.c.

Referenced by hevc_decode_frame(), and hevc_decode_init().

static int hevc_decode_frame ( AVCodecContext avctx,
void data,
int got_output,
AVPacket avpkt 
)
static

Definition at line 3070 of file hevcdec.c.

static int hevc_ref_frame ( HEVCContext s,
HEVCFrame dst,
HEVCFrame src 
)
static

Definition at line 3133 of file hevcdec.c.

Referenced by hevc_update_thread_context().

static av_cold int hevc_decode_free ( AVCodecContext avctx)
static

Definition at line 3174 of file hevcdec.c.

Referenced by hevc_decode_init(), and hevc_init_context().

static av_cold int hevc_init_context ( AVCodecContext avctx)
static

Definition at line 3226 of file hevcdec.c.

Referenced by hevc_decode_init(), hevc_init_thread_copy(), and hevc_update_thread_context().

static int hevc_update_thread_context ( AVCodecContext dst,
const AVCodecContext src 
)
static

Definition at line 3274 of file hevcdec.c.

static av_cold int hevc_decode_init ( AVCodecContext avctx)
static

Definition at line 3350 of file hevcdec.c.

static av_cold int hevc_init_thread_copy ( AVCodecContext avctx)
static

Definition at line 3388 of file hevcdec.c.

static void hevc_decode_flush ( AVCodecContext avctx)
static

Definition at line 3402 of file hevcdec.c.

Variable Documentation

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

Definition at line 45 of file hevcdec.c.

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

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 1938 of file hevcdec.c.

Referenced by intra_prediction_unit().

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 },
}
#define NULL
Definition: coverity.c:32
#define PAR
Definition: hevcdec.c:3411
#define OFFSET(x)
Definition: hevcdec.c:3410

Definition at line 3413 of file hevcdec.c.

const AVClass hevc_decoder_class
static
Initial value:
= {
.class_name = "HEVC decoder",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
av_default_item_name
static const AVOption options[]
Definition: hevcdec.c:3413

Definition at line 3421 of file hevcdec.c.

AVCodec ff_hevc_decoder
Initial value:
= {
.name = "hevc",
.long_name = NULL_IF_CONFIG_SMALL("HEVC (High Efficiency Video Coding)"),
.priv_data_size = sizeof(HEVCContext),
.priv_class = &hevc_decoder_class,
.close = hevc_decode_free,
.update_thread_context = hevc_update_thread_context,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
}
static void flush(AVCodecContext *avctx)
static int init_thread_copy(AVCodecContext *avctx)
Definition: tta.c:392
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static const AVClass hevc_decoder_class
Definition: hevcdec.c:3421
static void hevc_decode_flush(AVCodecContext *avctx)
Definition: hevcdec.c:3402
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
Definition: avcodec.h:1019
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
Definition: internal.h:40
const AVProfile ff_hevc_profiles[]
Definition: profiles.c:78
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:179
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition: avcodec.h:1057
static int hevc_decode_frame(AVCodecContext *avctx, void *data, int *got_output, AVPacket *avpkt)
Definition: hevcdec.c:3070
static av_cold int hevc_decode_init(AVCodecContext *avctx)
Definition: hevcdec.c:3350
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
Definition: avcodec.h:1061
static const AVProfile profiles[]
static int hevc_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
Definition: hevcdec.c:3274
static int decode(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
Definition: ffmpeg.c:2257
static av_cold int hevc_init_thread_copy(AVCodecContext *avctx)
Definition: hevcdec.c:3388
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: avcodec.h:994
static av_cold int hevc_decode_free(AVCodecContext *avctx)
Definition: hevcdec.c:3174

Definition at line 3428 of file hevcdec.c.