FFmpeg
hevcdec.h
Go to the documentation of this file.
1 /*
2  * HEVC video decoder
3  *
4  * Copyright (C) 2012 - 2013 Guillaume Martres
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
23 #ifndef AVCODEC_HEVCDEC_H
24 #define AVCODEC_HEVCDEC_H
25 
26 #include <stdatomic.h>
27 
28 #include "libavutil/buffer.h"
29 #include "libavutil/mem_internal.h"
30 
31 #include "avcodec.h"
32 #include "bswapdsp.h"
33 #include "cabac.h"
34 #include "dovi_rpu.h"
35 #include "get_bits.h"
36 #include "hevcpred.h"
37 #include "h2645_parse.h"
38 #include "hevc.h"
39 #include "hevc_ps.h"
40 #include "hevc_sei.h"
41 #include "hevcdsp.h"
42 #include "h274.h"
43 #include "threadframe.h"
44 #include "videodsp.h"
45 
46 #define SHIFT_CTB_WPP 2
47 
48 #define MAX_TB_SIZE 32
49 #define MAX_QP 51
50 #define DEFAULT_INTRA_TC_OFFSET 2
51 
52 #define HEVC_CONTEXTS 199
53 #define HEVC_STAT_COEFFS 4
54 
55 #define MRG_MAX_NUM_CANDS 5
56 
57 #define L0 0
58 #define L1 1
59 
60 #define EPEL_EXTRA_BEFORE 1
61 #define EPEL_EXTRA_AFTER 2
62 #define EPEL_EXTRA 3
63 #define QPEL_EXTRA_BEFORE 3
64 #define QPEL_EXTRA_AFTER 4
65 #define QPEL_EXTRA 7
66 
67 #define EDGE_EMU_BUFFER_STRIDE 80
68 
69 /**
70  * Value of the luma sample at position (x, y) in the 2D array tab.
71  */
72 #define SAMPLE(tab, x, y) ((tab)[(y) * s->sps->width + (x)])
73 #define SAMPLE_CTB(tab, x, y) ((tab)[(y) * min_cb_width + (x)])
74 
75 #define IS_IDR(s) ((s)->nal_unit_type == HEVC_NAL_IDR_W_RADL || (s)->nal_unit_type == HEVC_NAL_IDR_N_LP)
76 #define IS_BLA(s) ((s)->nal_unit_type == HEVC_NAL_BLA_W_RADL || (s)->nal_unit_type == HEVC_NAL_BLA_W_LP || \
77  (s)->nal_unit_type == HEVC_NAL_BLA_N_LP)
78 #define IS_IRAP(s) ((s)->nal_unit_type >= HEVC_NAL_BLA_W_LP && (s)->nal_unit_type <= HEVC_NAL_RSV_IRAP_VCL23)
79 
80 enum RPSType {
87 };
88 
89 enum PartMode {
91  PART_2NxN = 1,
92  PART_Nx2N = 2,
93  PART_NxN = 3,
98 };
99 
100 enum PredMode {
104 };
105 
107  PRED_L0 = 0,
110 };
111 
112 enum PredFlag {
113  PF_INTRA = 0,
117 };
118 
155 };
156 
157 enum SAOType {
162 };
163 
169 };
170 
171 enum ScanType {
175 };
176 
177 typedef struct HEVCCABACState {
181 
182 typedef struct LongTermRPS {
183  int poc[32];
184  uint8_t poc_msb_present[32];
185  uint8_t used[32];
186  uint8_t nb_refs;
187 } LongTermRPS;
188 
189 typedef struct RefPicList {
193  int nb_refs;
194 } RefPicList;
195 
196 typedef struct RefPicListTab {
198 } RefPicListTab;
199 
200 typedef struct SliceHeader {
201  unsigned int pps_id;
202 
203  ///< address (in raster order) of the first block in the current slice segment
204  unsigned int slice_segment_addr;
205  ///< address (in raster order) of the first block in the current slice
206  unsigned int slice_addr;
207 
209 
211 
216 
217  ///< RPS coded in the slice header itself is stored here
224  unsigned int list_entry_lx[2][32];
225 
229 
230  unsigned int nb_refs[2];
231 
234 
236  uint8_t disable_deblocking_filter_flag; ///< slice_header_disable_deblocking_filter_flag
239 
240  unsigned int collocated_ref_idx;
241 
245 
249 
251 
252  int beta_offset; ///< beta_offset_div2 * 2
253  int tc_offset; ///< tc_offset_div2 * 2
254 
255  uint8_t max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand
257 
259  int * offset;
260  int * size;
262 
263  int8_t slice_qp;
264 
267 
268  int16_t luma_weight_l0[16];
269  int16_t chroma_weight_l0[16][2];
270  int16_t chroma_weight_l1[16][2];
271  int16_t luma_weight_l1[16];
272 
273  int16_t luma_offset_l0[16];
274  int16_t chroma_offset_l0[16][2];
275 
276  int16_t luma_offset_l1[16];
277  int16_t chroma_offset_l1[16][2];
278 
280 } SliceHeader;
281 
282 typedef struct CodingUnit {
283  int x;
284  int y;
285 
286  enum PredMode pred_mode; ///< PredMode
287  enum PartMode part_mode; ///< PartMode
288 
289  // Inferred parameters
290  uint8_t intra_split_flag; ///< IntraSplitFlag
291  uint8_t max_trafo_depth; ///< MaxTrafoDepth
293 } CodingUnit;
294 
295 typedef struct Mv {
296  int16_t x; ///< horizontal component of motion vector
297  int16_t y; ///< vertical component of motion vector
298 } Mv;
299 
300 typedef struct MvField {
302  int8_t ref_idx[2];
303  int8_t pred_flag;
304 } MvField;
305 
306 typedef struct NeighbourAvailable {
309  int cand_up;
314 
315 typedef struct PredictionUnit {
316  int mpm_idx;
318  uint8_t intra_pred_mode[4];
320  uint8_t merge_flag;
321  uint8_t intra_pred_mode_c[4];
322  uint8_t chroma_mode_c[4];
324 
325 typedef struct TransformUnit {
327 
329 
330  // Inferred parameters;
338  uint8_t cross_pf;
339 } TransformUnit;
340 
341 typedef struct DBParams {
344 } DBParams;
345 
346 #define HEVC_FRAME_FLAG_OUTPUT (1 << 0)
347 #define HEVC_FRAME_FLAG_SHORT_REF (1 << 1)
348 #define HEVC_FRAME_FLAG_LONG_REF (1 << 2)
349 #define HEVC_FRAME_FLAG_BUMPING (1 << 3)
350 
351 #define HEVC_SEQUENCE_COUNTER_MASK 0xff
352 #define HEVC_SEQUENCE_COUNTER_INVALID (HEVC_SEQUENCE_COUNTER_MASK + 1)
353 
354 typedef struct HEVCFrame {
358  int needs_fg; /* 1 if grain needs to be applied by the decoder */
359  MvField *tab_mvf; ///< RefStruct reference
361  RefPicListTab **rpl_tab; ///< RefStruct reference
363  int poc;
364 
365  RefPicListTab *rpl; ///< RefStruct reference
367 
368  void *hwaccel_picture_private; ///< RefStruct reference
369 
370  /**
371  * A sequence counter, so that old frames are output first
372  * after a POC reset
373  */
374  uint16_t sequence;
375 
376  /**
377  * A combination of HEVC_FRAME_FLAG_*
378  */
379  uint8_t flags;
380 } HEVCFrame;
381 
382 typedef struct HEVCLocalContext {
384 
386 
387  uint8_t first_qp_group;
388 
389  void *logctx;
390  const struct HEVCContext *parent;
391 
394 
395  /**
396  * This is a pointer to the common CABAC state.
397  * In case entropy_coding_sync_enabled_flag is set,
398  * the CABAC state after decoding the second CTU in a row is
399  * stored here and used to initialize the CABAC state before
400  * decoding the first CTU in the next row.
401  * This is the basis for WPP and in case slice-threading is used,
402  * the next row is decoded by another thread making this state
403  * shared between threads.
404  */
406 
407  int8_t qp_y;
408  int8_t curr_qp_y;
409 
410  int qPy_pred;
411 
413 
414  uint8_t ctb_left_flag;
415  uint8_t ctb_up_flag;
420  /* +7 is for subpixel interpolation, *2 for high bit depths */
422  /* The extended size between the new edge emu buffer is abused by SAO */
425 
426  int ct_depth;
430 
431 #define BOUNDARY_LEFT_SLICE (1 << 0)
432 #define BOUNDARY_LEFT_TILE (1 << 1)
433 #define BOUNDARY_UPPER_SLICE (1 << 2)
434 #define BOUNDARY_UPPER_TILE (1 << 3)
435  /* properties of the boundary of the current CTB for the purposes
436  * of the deblocking filter */
439 
440 typedef struct HEVCContext {
441  const AVClass *c; // needed by private avoptions
443 
446 
447  uint8_t threads_type;
448  uint8_t threads_number;
449 
450  int width;
451  int height;
452 
453  /** 1 if the independent slice segment header was successfully parsed */
455 
458  uint8_t *sao_pixel_buffer_h[3];
459  uint8_t *sao_pixel_buffer_v[3];
460 
463  struct AVMD5 *md5_ctx;
464 
467 
468  ///< candidate references for the current frame
470 
475  int temporal_id; ///< temporal_id_plus1 - 1
479  int poc;
480  int pocTid0;
481  int slice_idx; ///< number of the slice being currently decoded
482  int eos; ///< current packet contains an EOS/EOB NAL
483  int last_eos; ///< last packet contains an EOS/EOB NAL
484  int max_ra;
485  int bs_width;
487  int overlap;
488 
491 
497  int8_t *qp_y_tab;
498  uint8_t *horizontal_bs;
499  uint8_t *vertical_bs;
500 
502 
503  // CU
504  uint8_t *skip_flag;
505  uint8_t *tab_ct_depth;
506  // PU
507  uint8_t *tab_ipm;
508 
509  uint8_t *cbf_luma; // cbf_luma of colocated TU
510  uint8_t *is_pcm;
511 
512  // CTB-level flags affecting loop filter operation
514 
515  /** used on BE to byteswap the lines for checksumming */
516  uint8_t *checksum_buf;
518 
519  /**
520  * Sequence counters for decoded and output frames, so that old
521  * frames are output first after a POC reset
522  */
523  uint16_t seq_decode;
524  uint16_t seq_output;
525 
526  /** The target for the common_cabac_state of the local contexts. */
528 
531 
532  const uint8_t *data;
533 
535  // type of the first VCL NAL of the current frame
537 
538  int is_nalff; ///< this flag is != 0 if bitstream is encapsulated
539  ///< as a format defined in 14496-15
541 
542  int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4)
544 
546 
547  AVBufferRef *rpu_buf; ///< 0 or 1 Dolby Vision RPUs.
548  DOVIContext dovi_ctx; ///< Dolby Vision decoding context
549 } HEVCContext;
550 
551 /**
552  * Mark all frames in DPB as unused for reference.
553  */
555 
556 /**
557  * Drop all frames currently in DPB.
558  */
560 
562  int x0, int y0);
563 
564 /**
565  * Construct the reference picture sets for the current frame.
566  */
568 
569 /**
570  * Construct the reference picture list(s) for the current slice.
571  */
573 
574 void ff_hevc_save_states(HEVCLocalContext *lc, int ctb_addr_ts);
575 int ff_hevc_cabac_init(HEVCLocalContext *lc, int ctb_addr_ts);
584 int ff_hevc_skip_flag_decode(HEVCLocalContext *lc, int x0, int y0,
585  int x_cb, int y_cb);
588  int x0, int y0);
589 int ff_hevc_part_mode_decode(HEVCLocalContext *lc, int log2_cb_size);
597 int ff_hevc_inter_pred_idc_decode(HEVCLocalContext *lc, int nPbW, int nPbH);
598 int ff_hevc_ref_idx_lx_decode(HEVCLocalContext *lc, int num_ref_idx_lx);
601 int ff_hevc_split_transform_flag_decode(HEVCLocalContext *lc, int log2_trafo_size);
602 int ff_hevc_cbf_cb_cr_decode(HEVCLocalContext *lc, int trafo_depth);
603 int ff_hevc_cbf_luma_decode(HEVCLocalContext *lc, int trafo_depth);
606 
607 /**
608  * Get the number of candidate references for the current frame.
609  */
611 
612 int ff_hevc_set_new_ref(HEVCContext *s, AVFrame **frame, int poc);
613 
615 {
616  switch (type) {
617  case HEVC_NAL_TRAIL_N:
618  case HEVC_NAL_TSA_N:
619  case HEVC_NAL_STSA_N:
620  case HEVC_NAL_RADL_N:
621  case HEVC_NAL_RASL_N:
622  case HEVC_NAL_VCL_N10:
623  case HEVC_NAL_VCL_N12:
624  case HEVC_NAL_VCL_N14:
625  return 1;
626  default: break;
627  }
628  return 0;
629 }
630 
631 /**
632  * Find next frame in output order and put a reference to it in frame.
633  * @return 1 if a frame was output, 0 otherwise
634  */
636 
638 
640 
641 void ff_hevc_set_neighbour_available(HEVCLocalContext *lc, int x0, int y0,
642  int nPbW, int nPbH);
643 void ff_hevc_luma_mv_merge_mode(HEVCLocalContext *lc, int x0, int y0,
644  int nPbW, int nPbH, int log2_cb_size,
645  int part_idx, int merge_idx, MvField *mv);
646 void ff_hevc_luma_mv_mvp_mode(HEVCLocalContext *lc, int x0, int y0,
647  int nPbW, int nPbH, int log2_cb_size,
648  int part_idx, int merge_idx,
649  MvField *mv, int mvp_lx_flag, int LX);
650 void ff_hevc_hls_filter(HEVCLocalContext *lc, int x, int y, int ctb_size);
651 void ff_hevc_hls_filters(HEVCLocalContext *lc, int x_ctb, int y_ctb, int ctb_size);
652 void ff_hevc_set_qPy(HEVCLocalContext *lc, int xBase, int yBase,
653  int log2_cb_size);
655  int log2_trafo_size);
660 void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0,
661  int log2_trafo_size, enum ScanType scan_idx,
662  int c_idx);
663 
664 void ff_hevc_hls_mvd_coding(HEVCLocalContext *lc, int x0, int y0, int log2_cb_size);
665 
666 extern const uint8_t ff_hevc_qpel_extra_before[4];
667 extern const uint8_t ff_hevc_qpel_extra_after[4];
668 extern const uint8_t ff_hevc_qpel_extra[4];
669 
670 #endif /* AVCODEC_HEVCDEC_H */
HEVCLocalContext::na
NeighbourAvailable na
Definition: hevcdec.h:429
HEVCContext::seq_decode
uint16_t seq_decode
Sequence counters for decoded and output frames, so that old frames are output first after a POC rese...
Definition: hevcdec.h:523
HEVCContext::temporal_id
int temporal_id
temporal_id_plus1 - 1
Definition: hevcdec.h:475
ff_hevc_cabac_init
int ff_hevc_cabac_init(HEVCLocalContext *lc, int ctb_addr_ts)
Definition: hevc_cabac.c:464
HEVC_NAL_RADL_N
@ HEVC_NAL_RADL_N
Definition: hevc.h:35
SliceHeader::beta_offset
int beta_offset
beta_offset_div2 * 2
Definition: hevcdec.h:252
HEVCContext::skip_flag
uint8_t * skip_flag
Definition: hevcdec.h:504
bswapdsp.h
DBParams
Definition: hevcdec.h:341
ff_hevc_get_ref_list
const RefPicList * ff_hevc_get_ref_list(const HEVCContext *s, const HEVCFrame *frame, int x0, int y0)
Definition: hevc_refs.c:56
HEVCContext::filter_slice_edges
uint8_t * filter_slice_edges
Definition: hevcdec.h:513
HEVCLocalContext
Definition: hevcdec.h:382
HEVCFrame::flags
uint8_t flags
A combination of HEVC_FRAME_FLAG_*.
Definition: hevcdec.h:379
SliceHeader::slice_act_cr_qp_offset
int slice_act_cr_qp_offset
Definition: hevcdec.h:248
HEVCFrame::tf
ThreadFrame tf
Definition: hevcdec.h:357
INTRA_ANGULAR_28
@ INTRA_ANGULAR_28
Definition: hevcdec.h:148
h2645_parse.h
SliceHeader::chroma_offset_l1
int16_t chroma_offset_l1[16][2]
Definition: hevcdec.h:277
LT_FOLL
@ LT_FOLL
Definition: hevcdec.h:85
HEVCContext::seq_output
uint16_t seq_output
Definition: hevcdec.h:524
SAO_EO_45D
@ SAO_EO_45D
Definition: hevcdec.h:168
cabac.h
HEVCSliceType
HEVCSliceType
Definition: hevc.h:95
HEVCContext::nuh_layer_id
int nuh_layer_id
Definition: hevcdec.h:543
INTRA_ANGULAR_29
@ INTRA_ANGULAR_29
Definition: hevcdec.h:149
ff_hevc_bump_frame
void ff_hevc_bump_frame(HEVCContext *s)
Definition: hevc_refs.c:248
PART_NxN
@ PART_NxN
Definition: hevcdec.h:93
mem_internal.h
INTRA_ANGULAR_30
@ INTRA_ANGULAR_30
Definition: hevcdec.h:150
SliceHeader::slice_act_y_qp_offset
int slice_act_y_qp_offset
Definition: hevcdec.h:246
INTRA_ANGULAR_34
@ INTRA_ANGULAR_34
Definition: hevcdec.h:154
INTRA_ANGULAR_27
@ INTRA_ANGULAR_27
Definition: hevcdec.h:147
SAO_APPLIED
@ SAO_APPLIED
Definition: hevcdec.h:161
SAO_BAND
@ SAO_BAND
Definition: hevcdec.h:159
INTRA_ANGULAR_2
@ INTRA_ANGULAR_2
Definition: hevcdec.h:122
HEVCContext::slice_initialized
uint8_t slice_initialized
1 if the independent slice segment header was successfully parsed
Definition: hevcdec.h:454
ff_hevc_res_scale_sign_flag
int ff_hevc_res_scale_sign_flag(HEVCLocalContext *lc, int idx)
Definition: hevc_cabac.c:871
HEVCLocalContext::ctb_up_flag
uint8_t ctb_up_flag
Definition: hevcdec.h:415
CodingUnit
Definition: hevcdec.h:282
HEVCFrame::needs_fg
int needs_fg
Definition: hevcdec.h:358
mv
static const int8_t mv[256][2]
Definition: 4xm.c:80
SliceHeader::num_entry_point_offsets
int num_entry_point_offsets
Definition: hevcdec.h:261
HEVC_NAL_STSA_N
@ HEVC_NAL_STSA_N
Definition: hevc.h:33
HEVCFrame::frame_grain
AVFrame * frame_grain
Definition: hevcdec.h:356
PART_2NxnU
@ PART_2NxnU
Definition: hevcdec.h:94
HEVCContext::md5_ctx
struct AVMD5 * md5_ctx
Definition: hevcdec.h:463
HEVCContext::deblock
DBParams * deblock
Definition: hevcdec.h:473
ff_hevc_flush_dpb
void ff_hevc_flush_dpb(HEVCContext *s)
Drop all frames currently in DPB.
Definition: hevc_refs.c:75
ff_hevc_part_mode_decode
int ff_hevc_part_mode_decode(HEVCLocalContext *lc, int log2_cb_size)
Definition: hevc_cabac.c:670
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:340
ff_hevc_hls_filter
void ff_hevc_hls_filter(HEVCLocalContext *lc, int x, int y, int ctb_size)
Definition: hevc_filter.c:851
ff_hevc_sao_type_idx_decode
int ff_hevc_sao_type_idx_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:528
HEVCFrame::tab_mvf
MvField * tab_mvf
RefStruct reference.
Definition: hevcdec.h:359
TransformUnit::cu_qp_delta
int cu_qp_delta
Definition: hevcdec.h:326
ScanType
ScanType
Definition: hevcdec.h:171
ff_hevc_intra_chroma_pred_mode_decode
int ff_hevc_intra_chroma_pred_mode_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:735
HEVC_NAL_TSA_N
@ HEVC_NAL_TSA_N
Definition: hevc.h:31
HEVCFrame::hwaccel_picture_private
void * hwaccel_picture_private
RefStruct reference.
Definition: hevcdec.h:368
NeighbourAvailable::cand_left
int cand_left
Definition: hevcdec.h:308
NeighbourAvailable::cand_up
int cand_up
Definition: hevcdec.h:309
ff_hevc_qpel_extra_before
const uint8_t ff_hevc_qpel_extra_before[4]
INTRA_DC
@ INTRA_DC
Definition: hevcdec.h:121
HEVCContext::collocated_ref
HEVCFrame * collocated_ref
Definition: hevcdec.h:477
HEVCContext::no_rasl_output_flag
int no_rasl_output_flag
Definition: hevcdec.h:490
NeighbourAvailable::cand_up_right
int cand_up_right
Definition: hevcdec.h:311
Mv::y
int16_t y
vertical component of motion vector
Definition: hevcdec.h:297
HEVCContext::checksum_buf_size
int checksum_buf_size
Definition: hevcdec.h:517
SAO_EDGE
@ SAO_EDGE
Definition: hevcdec.h:160
atomic_int
intptr_t atomic_int
Definition: stdatomic.h:55
SliceHeader::slice_temporal_mvp_enabled_flag
uint8_t slice_temporal_mvp_enabled_flag
Definition: hevcdec.h:228
ff_hevc_rem_intra_luma_pred_mode_decode
int ff_hevc_rem_intra_luma_pred_mode_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:725
TransformUnit::is_cu_qp_delta_coded
uint8_t is_cu_qp_delta_coded
Definition: hevcdec.h:334
HEVC_NAL_RASL_N
@ HEVC_NAL_RASL_N
Definition: hevc.h:37
MODE_INTRA
@ MODE_INTRA
Definition: hevcdec.h:102
HEVCContext::output_frame
AVFrame * output_frame
Definition: hevcdec.h:457
HEVCContext::sao_pixel_buffer_h
uint8_t * sao_pixel_buffer_h[3]
Definition: hevcdec.h:458
HEVCContext::data
const uint8_t * data
Definition: hevcdec.h:532
SliceHeader::slice_loop_filter_across_slices_enabled_flag
uint8_t slice_loop_filter_across_slices_enabled_flag
Definition: hevcdec.h:237
ff_hevc_sao_eo_class_decode
int ff_hevc_sao_eo_class_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:563
HEVCLocalContext::ctb_up_left_flag
uint8_t ctb_up_left_flag
Definition: hevcdec.h:417
HEVCContext::bdsp
BswapDSPContext bdsp
Definition: hevcdec.h:495
ff_hevc_cu_qp_delta_abs
int ff_hevc_cu_qp_delta_abs(HEVCLocalContext *lc)
Definition: hevc_cabac.c:596
DPB
Decoded Picture Buffer (DPB).
Definition: vaapi_h264.c:82
ff_hevc_ref_idx_lx_decode
int ff_hevc_ref_idx_lx_decode(HEVCLocalContext *lc, int num_ref_idx_lx)
Definition: hevc_cabac.c:772
HEVCContext::checksum_buf
uint8_t * checksum_buf
used on BE to byteswap the lines for checksumming
Definition: hevcdec.h:516
INTRA_ANGULAR_9
@ INTRA_ANGULAR_9
Definition: hevcdec.h:129
RefPicList
Definition: hevcdec.h:189
ff_hevc_output_frame
int ff_hevc_output_frame(HEVCContext *s, AVFrame *frame, int flush)
Find next frame in output order and put a reference to it in frame.
Definition: hevc_refs.c:180
PF_INTRA
@ PF_INTRA
Definition: hevcdec.h:113
INTRA_ANGULAR_10
@ INTRA_ANGULAR_10
Definition: hevcdec.h:130
ff_hevc_cbf_luma_decode
int ff_hevc_cbf_luma_decode(HEVCLocalContext *lc, int trafo_depth)
Definition: hevc_cabac.c:841
MODE_SKIP
@ MODE_SKIP
Definition: hevcdec.h:103
HEVCLocalContext::end_of_tiles_x
int end_of_tiles_x
Definition: hevcdec.h:418
CodingUnit::x
int x
Definition: hevcdec.h:283
SAOType
SAOType
Definition: hevcdec.h:157
PART_2Nx2N
@ PART_2Nx2N
Definition: hevcdec.h:90
ff_hevc_cbf_cb_cr_decode
int ff_hevc_cbf_cb_cr_decode(HEVCLocalContext *lc, int trafo_depth)
Definition: hevc_cabac.c:836
HEVCLocalContext::ctb_up_right_flag
uint8_t ctb_up_right_flag
Definition: hevcdec.h:416
HEVCLocalContext::common_cabac_state
HEVCCABACState * common_cabac_state
This is a pointer to the common CABAC state.
Definition: hevcdec.h:405
SAO_EO_135D
@ SAO_EO_135D
Definition: hevcdec.h:167
PRED_BI
@ PRED_BI
Definition: hevcdec.h:109
HEVCContext::frame
AVFrame * frame
Definition: hevcdec.h:456
ff_hevc_cu_qp_delta_sign_flag
int ff_hevc_cu_qp_delta_sign_flag(HEVCLocalContext *lc)
Definition: hevc_cabac.c:623
DOVIContext
Definition: dovi_rpu.h:31
ff_hevc_end_of_slice_flag_decode
int ff_hevc_end_of_slice_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:570
INTRA_ANGULAR_3
@ INTRA_ANGULAR_3
Definition: hevcdec.h:123
PredictionUnit::intra_pred_mode_c
uint8_t intra_pred_mode_c[4]
Definition: hevcdec.h:321
PredictionUnit
Definition: hevcdec.h:315
HEVCContext::tab_mvf_pool
struct FFRefStructPool * tab_mvf_pool
Definition: hevcdec.h:465
InterPredIdc
InterPredIdc
Definition: hevcdec.h:106
MODE_INTER
@ MODE_INTER
Definition: hevcdec.h:101
GetBitContext
Definition: get_bits.h:108
SliceHeader::luma_log2_weight_denom
uint8_t luma_log2_weight_denom
Definition: hevcdec.h:265
HEVCLocalContext::pu
PredictionUnit pu
Definition: hevcdec.h:428
HEVCContext::is_decoded
int is_decoded
Definition: hevcdec.h:489
TransformUnit::res_scale_val
int res_scale_val
Definition: hevcdec.h:328
SliceHeader::short_term_ref_pic_set_size
int short_term_ref_pic_set_size
Definition: hevcdec.h:219
type
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 type
Definition: writing_filters.txt:86
dovi_rpu.h
SliceHeader::long_term_ref_pic_set_size
int long_term_ref_pic_set_size
Definition: hevcdec.h:222
RefPicList::nb_refs
int nb_refs
Definition: hevcdec.h:193
HEVCContext::h274db
H274FilmGrainDatabase h274db
Definition: hevcdec.h:496
HEVCContext::bs_width
int bs_width
Definition: hevcdec.h:485
AVMD5
Definition: md5.c:42
ff_hevc_cu_chroma_qp_offset_idx
int ff_hevc_cu_chroma_qp_offset_idx(HEVCLocalContext *lc)
Definition: hevc_cabac.c:633
SliceHeader::slice_segment_addr
unsigned int slice_segment_addr
address (in raster order) of the first block in the current slice
Definition: hevcdec.h:204
HEVCContext::apply_defdispwin
int apply_defdispwin
Definition: hevcdec.h:540
ff_hevc_luma_mv_mvp_mode
void ff_hevc_luma_mv_mvp_mode(HEVCLocalContext *lc, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int part_idx, int merge_idx, MvField *mv, int mvp_lx_flag, int LX)
Definition: hevc_mvs.c:583
TransformUnit::intra_pred_mode
int intra_pred_mode
Definition: hevcdec.h:331
hevcpred.h
SliceHeader::cabac_init_flag
uint8_t cabac_init_flag
Definition: hevcdec.h:235
DBParams::beta_offset
int beta_offset
Definition: hevcdec.h:342
HEVCLocalContext::curr_qp_y
int8_t curr_qp_y
Definition: hevcdec.h:408
DBParams::tc_offset
int tc_offset
Definition: hevcdec.h:343
INTRA_ANGULAR_23
@ INTRA_ANGULAR_23
Definition: hevcdec.h:143
HEVCContext::tab_ipm
uint8_t * tab_ipm
Definition: hevcdec.h:507
HEVCContext::max_ra
int max_ra
Definition: hevcdec.h:484
HEVCLocalContext::parent
const struct HEVCContext * parent
Definition: hevcdec.h:390
s
#define s(width, name)
Definition: cbs_vp9.c:198
NeighbourAvailable::cand_bottom_left
int cand_bottom_left
Definition: hevcdec.h:307
ff_hevc_save_states
void ff_hevc_save_states(HEVCLocalContext *lc, int ctb_addr_ts)
Definition: hevc_cabac.c:402
HEVCContext::c
const AVClass * c
Definition: hevcdec.h:441
HEVCContext::rps
RefPicList rps[5]
Definition: hevcdec.h:469
SAO_NOT_APPLIED
@ SAO_NOT_APPLIED
Definition: hevcdec.h:158
HEVCContext::last_eos
int last_eos
last packet contains an EOS/EOB NAL
Definition: hevcdec.h:483
HEVC_NAL_VCL_N14
@ HEVC_NAL_VCL_N14
Definition: hevc.h:43
SliceHeader::luma_offset_l1
int16_t luma_offset_l1[16]
Definition: hevcdec.h:276
INTRA_ANGULAR_14
@ INTRA_ANGULAR_14
Definition: hevcdec.h:134
HEVC_NAL_VCL_N12
@ HEVC_NAL_VCL_N12
Definition: hevc.h:41
HEVCContext::slice_idx
int slice_idx
number of the slice being currently decoded
Definition: hevcdec.h:481
ff_hevc_nal_is_nonref
static av_always_inline int ff_hevc_nal_is_nonref(enum HEVCNALUnitType type)
Definition: hevcdec.h:614
ff_hevc_set_new_ref
int ff_hevc_set_new_ref(HEVCContext *s, AVFrame **frame, int poc)
Definition: hevc_refs.c:130
HEVCSEI
Definition: hevc_sei.h:81
ff_hevc_frame_rps
int ff_hevc_frame_rps(HEVCContext *s)
Construct the reference picture sets for the current frame.
Definition: hevc_refs.c:473
INTRA_ANGULAR_12
@ INTRA_ANGULAR_12
Definition: hevcdec.h:132
SliceHeader::slice_rps
ShortTermRPS slice_rps
Definition: hevcdec.h:220
ff_hevc_qpel_extra
const uint8_t ff_hevc_qpel_extra[4]
HEVCPredContext
Definition: hevcpred.h:31
HEVCFrame::rpl
RefPicListTab * rpl
RefStruct reference.
Definition: hevcdec.h:365
RPSType
RPSType
Definition: hevcdec.h:80
get_bits.h
ff_hevc_deblocking_boundary_strengths
void ff_hevc_deblocking_boundary_strengths(HEVCLocalContext *lc, int x0, int y0, int log2_trafo_size)
Definition: hevc_filter.c:723
INTRA_ANGULAR_18
@ INTRA_ANGULAR_18
Definition: hevcdec.h:138
RefPicList::ref
struct HEVCFrame * ref[HEVC_MAX_REFS]
Definition: hevcdec.h:190
HEVCContext::height
int height
Definition: hevcdec.h:451
ff_hevc_hls_residual_coding
void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, int x0, int y0, int log2_trafo_size, enum ScanType scan_idx, int c_idx)
Definition: hevc_cabac.c:991
SliceHeader::size
int * size
Definition: hevcdec.h:260
FFRefStructPool
FFRefStructPool is an API for a thread-safe pool of objects managed via the RefStruct API.
Definition: refstruct.c:183
SliceHeader::collocated_list
uint8_t collocated_list
Definition: hevcdec.h:238
HEVCContext::ref
HEVCFrame * ref
Definition: hevcdec.h:476
SliceHeader::luma_offset_l0
int16_t luma_offset_l0[16]
Definition: hevcdec.h:273
NeighbourAvailable::cand_up_right_sap
int cand_up_right_sap
Definition: hevcdec.h:312
INTRA_ANGULAR_26
@ INTRA_ANGULAR_26
Definition: hevcdec.h:146
SliceHeader::chroma_weight_l1
int16_t chroma_weight_l1[16][2]
Definition: hevcdec.h:270
CodingUnit::max_trafo_depth
uint8_t max_trafo_depth
MaxTrafoDepth.
Definition: hevcdec.h:291
SliceHeader::slice_ctb_addr_rs
int slice_ctb_addr_rs
Definition: hevcdec.h:279
frame
static AVFrame * frame
Definition: demux_decode.c:54
HEVC_NAL_VCL_N10
@ HEVC_NAL_VCL_N10
Definition: hevc.h:39
HEVCContext::nal_unit_type
enum HEVCNALUnitType nal_unit_type
Definition: hevcdec.h:474
SliceHeader::pic_output_flag
uint8_t pic_output_flag
Definition: hevcdec.h:214
hevcdsp.h
threadframe.h
HEVCFrame::refPicList
RefPicList * refPicList
Definition: hevcdec.h:360
PredictionUnit::rem_intra_luma_pred_mode
int rem_intra_luma_pred_mode
Definition: hevcdec.h:317
INTRA_ANGULAR_11
@ INTRA_ANGULAR_11
Definition: hevcdec.h:131
HEVCContext::sei
HEVCSEI sei
Definition: hevcdec.h:462
HEVCContext::enable_parallel_tiles
int enable_parallel_tiles
Definition: hevcdec.h:529
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
INTRA_ANGULAR_15
@ INTRA_ANGULAR_15
Definition: hevcdec.h:135
HEVCCABACState::state
uint8_t state[HEVC_CONTEXTS]
Definition: hevcdec.h:178
HEVCContext::width
int width
Definition: hevcdec.h:450
INTRA_ANGULAR_22
@ INTRA_ANGULAR_22
Definition: hevcdec.h:142
HEVCLocalContext::tmp
int16_t tmp[MAX_PB_SIZE *MAX_PB_SIZE]
Definition: hevcdec.h:424
ff_hevc_merge_flag_decode
int ff_hevc_merge_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:757
LongTermRPS::poc
int poc[32]
Definition: hevcdec.h:183
HEVCContext::qp_y_tab
int8_t * qp_y_tab
Definition: hevcdec.h:497
CodingUnit::cu_transquant_bypass_flag
uint8_t cu_transquant_bypass_flag
Definition: hevcdec.h:292
HEVCLocalContext::first_qp_group
uint8_t first_qp_group
Definition: hevcdec.h:387
HEVCContext::cbf_luma
uint8_t * cbf_luma
Definition: hevcdec.h:509
HEVCFrame::rpl_tab
RefPicListTab ** rpl_tab
RefStruct reference.
Definition: hevcdec.h:361
flush
void(* flush)(AVBSFContext *ctx)
Definition: dts2pts.c:367
HEVCContext::threads_type
uint8_t threads_type
Definition: hevcdec.h:447
LongTermRPS::poc_msb_present
uint8_t poc_msb_present[32]
Definition: hevcdec.h:184
ff_hevc_split_transform_flag_decode
int ff_hevc_split_transform_flag_decode(HEVCLocalContext *lc, int log2_trafo_size)
Definition: hevc_cabac.c:831
HEVCContext::film_grain_warning_shown
int film_grain_warning_shown
Definition: hevcdec.h:545
PART_Nx2N
@ PART_Nx2N
Definition: hevcdec.h:92
RefPicListTab
Definition: hevcdec.h:196
h274.h
HEVCContext::is_nalff
int is_nalff
this flag is != 0 if bitstream is encapsulated as a format defined in 14496-15
Definition: hevcdec.h:538
SliceHeader::nb_refs
unsigned int nb_refs[2]
Definition: hevcdec.h:230
Mv::x
int16_t x
horizontal component of motion vector
Definition: hevcdec.h:296
INTRA_ANGULAR_5
@ INTRA_ANGULAR_5
Definition: hevcdec.h:125
PF_BI
@ PF_BI
Definition: hevcdec.h:116
HEVCContext::poc
int poc
Definition: hevcdec.h:479
INTRA_ANGULAR_16
@ INTRA_ANGULAR_16
Definition: hevcdec.h:136
SCAN_HORIZ
@ SCAN_HORIZ
Definition: hevcdec.h:173
TransformUnit
Definition: hevcdec.h:325
HEVCLocalContext::edge_emu_buffer
uint8_t edge_emu_buffer[(MAX_PB_SIZE+7) *EDGE_EMU_BUFFER_STRIDE *2]
Definition: hevcdec.h:421
ff_hevc_sao_offset_abs_decode
int ff_hevc_sao_offset_abs_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:548
LongTermRPS::used
uint8_t used[32]
Definition: hevcdec.h:185
SliceHeader::colour_plane_id
uint8_t colour_plane_id
RPS coded in the slice header itself is stored here.
Definition: hevcdec.h:215
PART_nLx2N
@ PART_nLx2N
Definition: hevcdec.h:96
HEVCContext::nal_length_size
int nal_length_size
Number of bytes used for nal length (1, 2 or 4)
Definition: hevcdec.h:542
SliceHeader::dependent_slice_segment_flag
uint8_t dependent_slice_segment_flag
Definition: hevcdec.h:213
ff_hevc_luma_mv_merge_mode
void ff_hevc_luma_mv_merge_mode(HEVCLocalContext *lc, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int part_idx, int merge_idx, MvField *mv)
Definition: hevc_mvs.c:480
SliceHeader::slice_act_cb_qp_offset
int slice_act_cb_qp_offset
Definition: hevcdec.h:247
ST_FOLL
@ ST_FOLL
Definition: hevcdec.h:83
HEVCContext::bs_height
int bs_height
Definition: hevcdec.h:486
SliceHeader::first_slice_in_pic_flag
uint8_t first_slice_in_pic_flag
Definition: hevcdec.h:212
HEVCLocalContext::ctb_left_flag
uint8_t ctb_left_flag
Definition: hevcdec.h:414
H274FilmGrainDatabase
Definition: h274.h:34
ff_hevc_cu_transquant_bypass_flag_decode
int ff_hevc_cu_transquant_bypass_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:575
HEVCContext::sao
SAOParams * sao
Definition: hevcdec.h:472
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Definition: mem_internal.h:109
RefPicList::isLongTerm
int isLongTerm[HEVC_MAX_REFS]
Definition: hevcdec.h:192
ff_hevc_skip_flag_decode
int ff_hevc_skip_flag_decode(HEVCLocalContext *lc, int x0, int y0, int x_cb, int y_cb)
Definition: hevc_cabac.c:580
INTRA_ANGULAR_17
@ INTRA_ANGULAR_17
Definition: hevcdec.h:137
ff_hevc_unref_frame
void ff_hevc_unref_frame(HEVCFrame *frame, int flags)
Definition: hevc_refs.c:33
ff_hevc_mpm_idx_decode
int ff_hevc_mpm_idx_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:717
INTRA_PLANAR
@ INTRA_PLANAR
Definition: hevcdec.h:120
HEVCLocalContext::cabac_state
uint8_t cabac_state[HEVC_CONTEXTS]
Definition: hevcdec.h:383
PART_2NxnD
@ PART_2NxnD
Definition: hevcdec.h:95
HEVCContext::tab_slice_address
int32_t * tab_slice_address
Definition: hevcdec.h:501
PartMode
PartMode
Definition: hevcdec.h:89
SCAN_VERT
@ SCAN_VERT
Definition: hevcdec.h:174
SliceHeader::collocated_ref_idx
unsigned int collocated_ref_idx
Definition: hevcdec.h:240
SliceHeader::entry_point_offset
unsigned * entry_point_offset
Definition: hevcdec.h:258
TransformUnit::chroma_mode_c
int chroma_mode_c
Definition: hevcdec.h:333
HEVC_MAX_REFS
@ HEVC_MAX_REFS
Definition: hevc.h:119
SliceHeader::short_term_ref_pic_set_sps_flag
int short_term_ref_pic_set_sps_flag
Definition: hevcdec.h:218
SliceHeader::no_output_of_prior_pics_flag
uint8_t no_output_of_prior_pics_flag
Definition: hevcdec.h:227
HEVCContext::pocTid0
int pocTid0
Definition: hevcdec.h:480
MvField
Definition: hevcdec.h:300
buffer.h
PF_L1
@ PF_L1
Definition: hevcdec.h:115
HEVCContext::tab_ct_depth
uint8_t * tab_ct_depth
Definition: hevcdec.h:505
HEVC_STAT_COEFFS
#define HEVC_STAT_COEFFS
Definition: hevcdec.h:53
HEVCDSPContext
Definition: hevcdsp.h:47
HEVCContext::dovi_ctx
DOVIContext dovi_ctx
Dolby Vision decoding context.
Definition: hevcdec.h:548
SliceHeader::chroma_weight_l0
int16_t chroma_weight_l0[16][2]
Definition: hevcdec.h:269
ff_hevc_no_residual_syntax_flag_decode
int ff_hevc_no_residual_syntax_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:793
HEVCContext::horizontal_bs
uint8_t * horizontal_bs
Definition: hevcdec.h:498
HEVCContext::ps
HEVCParamSets ps
Definition: hevcdec.h:461
TransformUnit::cu_qp_offset_cb
int8_t cu_qp_offset_cb
Definition: hevcdec.h:336
SliceHeader::chroma_log2_weight_denom
int16_t chroma_log2_weight_denom
Definition: hevcdec.h:266
MvField::pred_flag
int8_t pred_flag
Definition: hevcdec.h:303
HEVCLocalContext::ct_depth
int ct_depth
Definition: hevcdec.h:426
INTRA_ANGULAR_7
@ INTRA_ANGULAR_7
Definition: hevcdec.h:127
PART_nRx2N
@ PART_nRx2N
Definition: hevcdec.h:97
SliceHeader::slice_cb_qp_offset
int slice_cb_qp_offset
Definition: hevcdec.h:243
SliceHeader
Definition: hevcdec.h:200
HEVCFrame::frame
AVFrame * frame
Definition: hevcdec.h:355
INTRA_ANGULAR_8
@ INTRA_ANGULAR_8
Definition: hevcdec.h:128
ff_hevc_inter_pred_idc_decode
int ff_hevc_inter_pred_idc_decode(HEVCLocalContext *lc, int nPbW, int nPbH)
Definition: hevc_cabac.c:762
HEVCContext::cabac
HEVCCABACState cabac
The target for the common_cabac_state of the local contexts.
Definition: hevcdec.h:527
HEVCContext::avctx
AVCodecContext * avctx
Definition: hevcdec.h:442
SliceHeader::slice_sample_adaptive_offset_flag
uint8_t slice_sample_adaptive_offset_flag[3]
Definition: hevcdec.h:232
hevc_ps.h
INTRA_ANGULAR_32
@ INTRA_ANGULAR_32
Definition: hevcdec.h:152
INTRA_ANGULAR_21
@ INTRA_ANGULAR_21
Definition: hevcdec.h:141
HEVCFrame
Definition: hevcdec.h:354
NeighbourAvailable::cand_up_left
int cand_up_left
Definition: hevcdec.h:310
INTRA_ANGULAR_6
@ INTRA_ANGULAR_6
Definition: hevcdec.h:126
ff_hevc_sao_merge_flag_decode
int ff_hevc_sao_merge_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:523
ff_hevc_hls_filters
void ff_hevc_hls_filters(HEVCLocalContext *lc, int x_ctb, int y_ctb, int ctb_size)
Definition: hevc_filter.c:888
HEVCLocalContext::gb
GetBitContext gb
Definition: hevcdec.h:392
HEVCFrame::nb_rpl_elems
int nb_rpl_elems
Definition: hevcdec.h:366
MAX_PB_SIZE
#define MAX_PB_SIZE
Definition: hevcdsp.h:32
HEVCLocalContext::logctx
void * logctx
Definition: hevcdec.h:389
HEVCFrame::ctb_count
int ctb_count
Definition: hevcdec.h:362
SliceHeader::offset
int * offset
Definition: hevcdec.h:259
HEVCFrame::sequence
uint16_t sequence
A sequence counter, so that old frames are output first after a POC reset.
Definition: hevcdec.h:374
HEVCContext::pkt
H2645Packet pkt
Definition: hevcdec.h:534
SliceHeader::mvd_l1_zero_flag
uint8_t mvd_l1_zero_flag
Definition: hevcdec.h:233
av_always_inline
#define av_always_inline
Definition: attributes.h:49
PF_L0
@ PF_L0
Definition: hevcdec.h:114
EDGE_EMU_BUFFER_STRIDE
#define EDGE_EMU_BUFFER_STRIDE
Definition: hevcdec.h:67
INTRA_ANGULAR_19
@ INTRA_ANGULAR_19
Definition: hevcdec.h:139
ff_hevc_pred_mode_decode
int ff_hevc_pred_mode_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:644
HEVCLocalContext::qp_y
int8_t qp_y
Definition: hevcdec.h:407
ff_hevc_qpel_extra_after
const uint8_t ff_hevc_qpel_extra_after[4]
HEVCNALUnitType
HEVCNALUnitType
Table 7-1 – NAL unit type codes and NAL unit type classes in T-REC-H.265-201802.
Definition: hevc.h:28
SAO_EO_HORIZ
@ SAO_EO_HORIZ
Definition: hevcdec.h:165
SliceHeader::chroma_offset_l0
int16_t chroma_offset_l0[16][2]
Definition: hevcdec.h:274
SliceHeader::list_entry_lx
unsigned int list_entry_lx[2][32]
Definition: hevcdec.h:224
HEVCLocalContext::stat_coeff
uint8_t stat_coeff[HEVC_STAT_COEFFS]
Definition: hevcdec.h:385
HEVCFrame::poc
int poc
Definition: hevcdec.h:363
HEVCContext::HEVClcList
HEVCLocalContext ** HEVClcList
Definition: hevcdec.h:444
SAOEOClass
SAOEOClass
Definition: hevcdec.h:164
hevc.h
SAOParams
Definition: hevcdsp.h:34
SliceHeader::short_term_rps
const ShortTermRPS * short_term_rps
Definition: hevcdec.h:221
avcodec.h
SliceHeader::cu_chroma_qp_offset_enabled_flag
uint8_t cu_chroma_qp_offset_enabled_flag
Definition: hevcdec.h:250
HEVCContext::first_nal_type
enum HEVCNALUnitType first_nal_type
Definition: hevcdec.h:536
HEVCContext::overlap
int overlap
Definition: hevcdec.h:487
NeighbourAvailable
Definition: hevcdec.h:306
PRED_L1
@ PRED_L1
Definition: hevcdec.h:108
PredictionUnit::mvd
Mv mvd
Definition: hevcdec.h:319
IntraPredMode
IntraPredMode
Definition: hevcdec.h:119
ST_CURR_BEF
@ ST_CURR_BEF
Definition: hevcdec.h:81
SliceHeader::disable_deblocking_filter_flag
uint8_t disable_deblocking_filter_flag
slice_header_disable_deblocking_filter_flag
Definition: hevcdec.h:236
HEVCLocalContext::edge_emu_buffer2
uint8_t edge_emu_buffer2[(MAX_PB_SIZE+7) *EDGE_EMU_BUFFER_STRIDE *2]
Definition: hevcdec.h:423
HEVCContext::HEVClc
HEVCLocalContext * HEVClc
Definition: hevcdec.h:445
SliceHeader::max_num_merge_cand
uint8_t max_num_merge_cand
5 - 5_minus_max_num_merge_cand
Definition: hevcdec.h:255
SliceHeader::luma_weight_l0
int16_t luma_weight_l0[16]
Definition: hevcdec.h:268
ff_hevc_merge_idx_decode
int ff_hevc_merge_idx_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:746
HEVCLocalContext::boundary_flags
int boundary_flags
Definition: hevcdec.h:437
HEVC_NAL_TRAIL_N
@ HEVC_NAL_TRAIL_N
Definition: hevc.h:29
LongTermRPS
Definition: hevcdec.h:182
SliceHeader::slice_type
enum HEVCSliceType slice_type
Definition: hevcdec.h:208
LT_CURR
@ LT_CURR
Definition: hevcdec.h:84
AVCodecContext
main external API structure.
Definition: avcodec.h:445
HEVCContext::threads_number
uint8_t threads_number
Definition: hevcdec.h:448
INTRA_ANGULAR_25
@ INTRA_ANGULAR_25
Definition: hevcdec.h:145
ff_hevc_hls_mvd_coding
void ff_hevc_hls_mvd_coding(HEVCLocalContext *lc, int x0, int y0, int log2_cb_size)
Definition: hevc_cabac.c:1501
SliceHeader::slice_qp
int8_t slice_qp
Definition: hevcdec.h:263
ThreadFrame
Definition: threadframe.h:27
PredMode
PredMode
Definition: hevcdec.h:100
PredictionUnit::merge_flag
uint8_t merge_flag
Definition: hevcdec.h:320
NB_RPS_TYPE
@ NB_RPS_TYPE
Definition: hevcdec.h:86
SliceHeader::slice_cr_qp_offset
int slice_cr_qp_offset
Definition: hevcdec.h:244
HEVCContext
Definition: hevcdec.h:440
ff_hevc_prev_intra_luma_pred_flag_decode
int ff_hevc_prev_intra_luma_pred_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:712
CodingUnit::pred_mode
enum PredMode pred_mode
PredMode.
Definition: hevcdec.h:286
HEVCContext::rpl_tab_pool
struct FFRefStructPool * rpl_tab_pool
candidate references for the current frame
Definition: hevcdec.h:466
SliceHeader::pic_order_cnt_lsb
int pic_order_cnt_lsb
Definition: hevcdec.h:210
HEVCContext::rpu_buf
AVBufferRef * rpu_buf
0 or 1 Dolby Vision RPUs.
Definition: hevcdec.h:547
HEVCLocalContext::qPy_pred
int qPy_pred
Definition: hevcdec.h:410
SCAN_DIAG
@ SCAN_DIAG
Definition: hevcdec.h:172
SliceHeader::rpl_modification_flag
uint8_t rpl_modification_flag[2]
Definition: hevcdec.h:226
ShortTermRPS
Definition: hevc_ps.h:71
SAO_EO_VERT
@ SAO_EO_VERT
Definition: hevcdec.h:166
ff_hevc_split_coding_unit_flag_decode
int ff_hevc_split_coding_unit_flag_decode(HEVCLocalContext *lc, int ct_depth, int x0, int y0)
Definition: hevc_cabac.c:649
ff_hevc_sao_offset_sign_decode
int ff_hevc_sao_offset_sign_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:558
RefPicList::list
int list[HEVC_MAX_REFS]
Definition: hevcdec.h:191
HEVCLocalContext::tu
TransformUnit tu
Definition: hevcdec.h:412
ff_hevc_log2_res_scale_abs
int ff_hevc_log2_res_scale_abs(HEVCLocalContext *lc, int idx)
Definition: hevc_cabac.c:861
VideoDSPContext
Definition: videodsp.h:40
CodingUnit::y
int y
Definition: hevcdec.h:284
HEVCContext::vdsp
VideoDSPContext vdsp
Definition: hevcdec.h:494
MvField::mv
Mv mv[2]
mvL0, vvL1
Definition: hevcdec.h:301
INTRA_ANGULAR_24
@ INTRA_ANGULAR_24
Definition: hevcdec.h:144
Mv
Definition: hevcdec.h:295
MvField::ref_idx
int8_t ref_idx[2]
refIdxL0, refIdxL1
Definition: hevcdec.h:302
PRED_L0
@ PRED_L0
Definition: hevcdec.h:107
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
HEVCCABACState::stat_coeff
uint8_t stat_coeff[HEVC_STAT_COEFFS]
Definition: hevcdec.h:179
INTRA_ANGULAR_31
@ INTRA_ANGULAR_31
Definition: hevcdec.h:151
ff_hevc_slice_rpl
int ff_hevc_slice_rpl(HEVCContext *s)
Construct the reference picture list(s) for the current slice.
Definition: hevc_refs.c:306
HEVCContext::eos
int eos
current packet contains an EOS/EOB NAL
Definition: hevcdec.h:482
ff_hevc_set_qPy
void ff_hevc_set_qPy(HEVCLocalContext *lc, int xBase, int yBase, int log2_cb_size)
Definition: hevc_filter.c:119
HEVCContext::vertical_bs
uint8_t * vertical_bs
Definition: hevcdec.h:499
ff_hevc_sao_band_position_decode
int ff_hevc_sao_band_position_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:538
ST_CURR_AFT
@ ST_CURR_AFT
Definition: hevcdec.h:82
CodingUnit::part_mode
enum PartMode part_mode
PartMode.
Definition: hevcdec.h:287
INTRA_ANGULAR_4
@ INTRA_ANGULAR_4
Definition: hevcdec.h:124
SliceHeader::tc_offset
int tc_offset
tc_offset_div2 * 2
Definition: hevcdec.h:253
LongTermRPS::nb_refs
uint8_t nb_refs
Definition: hevcdec.h:186
PredFlag
PredFlag
Definition: hevcdec.h:112
TransformUnit::cross_pf
uint8_t cross_pf
Definition: hevcdec.h:338
HEVCLocalContext::cu
CodingUnit cu
Definition: hevcdec.h:427
HEVCContext::sao_pixel_buffer_v
uint8_t * sao_pixel_buffer_v[3]
Definition: hevcdec.h:459
SliceHeader::pps_id
unsigned int pps_id
address (in raster order) of the first block in the current slice segment
Definition: hevcdec.h:201
videodsp.h
SliceHeader::luma_weight_l1
int16_t luma_weight_l1[16]
Definition: hevcdec.h:271
HEVCContext::sh
SliceHeader sh
Definition: hevcdec.h:471
ff_hevc_set_neighbour_available
void ff_hevc_set_neighbour_available(HEVCLocalContext *lc, int x0, int y0, int nPbW, int nPbH)
Definition: hevc_mvs.c:43
int32_t
int32_t
Definition: audioconvert.c:56
PredictionUnit::mpm_idx
int mpm_idx
Definition: hevcdec.h:316
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:474
HEVCContext::wpp_err
atomic_int wpp_err
Definition: hevcdec.h:530
INTRA_ANGULAR_33
@ INTRA_ANGULAR_33
Definition: hevcdec.h:153
ff_hevc_frame_nb_refs
int ff_hevc_frame_nb_refs(const HEVCContext *s)
Get the number of candidate references for the current frame.
Definition: hevc_refs.c:535
PredictionUnit::chroma_mode_c
uint8_t chroma_mode_c[4]
Definition: hevcdec.h:322
PredictionUnit::intra_pred_mode
uint8_t intra_pred_mode[4]
Definition: hevcdec.h:318
HEVCContext::hpc
HEVCPredContext hpc
Definition: hevcdec.h:492
BswapDSPContext
Definition: bswapdsp.h:24
TransformUnit::is_cu_chroma_qp_offset_coded
uint8_t is_cu_chroma_qp_offset_coded
Definition: hevcdec.h:335
ff_hevc_pcm_flag_decode
int ff_hevc_pcm_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:707
SliceHeader::slice_qp_delta
int slice_qp_delta
Definition: hevcdec.h:242
SliceHeader::slice_addr
unsigned int slice_addr
Definition: hevcdec.h:206
SliceHeader::use_integer_mv_flag
uint8_t use_integer_mv_flag
Definition: hevcdec.h:256
HEVCCABACState
Definition: hevcdec.h:177
HEVCContext::is_pcm
uint8_t * is_pcm
Definition: hevcdec.h:510
TransformUnit::intra_pred_mode_c
int intra_pred_mode_c
Definition: hevcdec.h:332
HEVCContext::hevcdsp
HEVCDSPContext hevcdsp
Definition: hevcdec.h:493
INTRA_ANGULAR_20
@ INTRA_ANGULAR_20
Definition: hevcdec.h:140
INTRA_ANGULAR_13
@ INTRA_ANGULAR_13
Definition: hevcdec.h:133
HEVCLocalContext::end_of_tiles_y
int end_of_tiles_y
Definition: hevcdec.h:419
H2645Packet
Definition: h2645_parse.h:82
CodingUnit::intra_split_flag
uint8_t intra_split_flag
IntraSplitFlag.
Definition: hevcdec.h:290
hevc_sei.h
ff_hevc_mvp_lx_flag_decode
int ff_hevc_mvp_lx_flag_decode(HEVCLocalContext *lc)
Definition: hevc_cabac.c:788
ff_hevc_clear_refs
void ff_hevc_clear_refs(HEVCContext *s)
Mark all frames in DPB as unused for reference.
Definition: hevc_refs.c:66
CABACContext
Definition: cabac.h:41
PART_2NxN
@ PART_2NxN
Definition: hevcdec.h:91
SliceHeader::long_term_rps
LongTermRPS long_term_rps
Definition: hevcdec.h:223
ff_hevc_cu_chroma_qp_offset_flag
int ff_hevc_cu_chroma_qp_offset_flag(HEVCLocalContext *lc)
Definition: hevc_cabac.c:628
HEVCLocalContext::cc
CABACContext cc
Definition: hevcdec.h:393
TransformUnit::cu_qp_offset_cr
int8_t cu_qp_offset_cr
Definition: hevcdec.h:337
HEVCParamSets
Definition: hevc_ps.h:438
HEVC_CONTEXTS
#define HEVC_CONTEXTS
Definition: hevcdec.h:52
RefPicListTab::refPicList
RefPicList refPicList[2]
Definition: hevcdec.h:197