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_HEVC_HEVCDEC_H
24 #define AVCODEC_HEVC_HEVCDEC_H
25 
26 #include <stdatomic.h>
27 
28 #include "libavutil/buffer.h"
29 #include "libavutil/mem_internal.h"
30 
31 #include "libavcodec/avcodec.h"
32 #include "libavcodec/bswapdsp.h"
33 #include "libavcodec/cabac.h"
34 #include "libavcodec/dovi_rpu.h"
35 #include "libavcodec/get_bits.h"
36 #include "libavcodec/h2645_parse.h"
37 #include "libavcodec/h274.h"
39 #include "libavcodec/videodsp.h"
40 
41 #include "dsp.h"
42 #include "hevc.h"
43 #include "pred.h"
44 #include "ps.h"
45 #include "sei.h"
46 
47 #define SHIFT_CTB_WPP 2
48 
49 #define MAX_TB_SIZE 32
50 #define MAX_QP 51
51 #define DEFAULT_INTRA_TC_OFFSET 2
52 
53 #define HEVC_CONTEXTS 199
54 #define HEVC_STAT_COEFFS 4
55 
56 #define MRG_MAX_NUM_CANDS 5
57 
58 #define L0 0
59 #define L1 1
60 
61 #define EPEL_EXTRA_BEFORE 1
62 #define EPEL_EXTRA_AFTER 2
63 #define EPEL_EXTRA 3
64 #define QPEL_EXTRA_BEFORE 3
65 #define QPEL_EXTRA_AFTER 4
66 #define QPEL_EXTRA 7
67 
68 #define EDGE_EMU_BUFFER_STRIDE 80
69 
70 /**
71  * Value of the luma sample at position (x, y) in the 2D array tab.
72  */
73 #define SAMPLE(tab, x, y) ((tab)[(y) * s->sps->width + (x)])
74 #define SAMPLE_CTB(tab, x, y) ((tab)[(y) * min_cb_width + (x)])
75 
76 #define IS_IDR(s) ((s)->nal_unit_type == HEVC_NAL_IDR_W_RADL || (s)->nal_unit_type == HEVC_NAL_IDR_N_LP)
77 #define IS_BLA(s) ((s)->nal_unit_type == HEVC_NAL_BLA_W_RADL || (s)->nal_unit_type == HEVC_NAL_BLA_W_LP || \
78  (s)->nal_unit_type == HEVC_NAL_BLA_N_LP)
79 #define IS_IRAP(s) ((s)->nal_unit_type >= HEVC_NAL_BLA_W_LP && (s)->nal_unit_type <= HEVC_NAL_RSV_IRAP_VCL23)
80 
81 enum RPSType {
88 };
89 
90 enum PartMode {
92  PART_2NxN = 1,
93  PART_Nx2N = 2,
94  PART_NxN = 3,
99 };
100 
101 enum PredMode {
105 };
106 
108  PRED_L0 = 0,
111 };
112 
113 enum PredFlag {
114  PF_INTRA = 0,
118 };
119 
156 };
157 
158 enum SAOType {
163 };
164 
170 };
171 
172 enum ScanType {
176 };
177 
178 typedef struct HEVCCABACState {
182 
183 typedef struct LongTermRPS {
184  int poc[32];
185  uint8_t poc_msb_present[32];
186  uint8_t used[32];
187  uint8_t nb_refs;
188 } LongTermRPS;
189 
190 typedef struct RefPicList {
194  int nb_refs;
195 } RefPicList;
196 
197 typedef struct RefPicListTab {
199 } RefPicListTab;
200 
201 typedef struct SliceHeader {
202  unsigned int pps_id;
203 
204  ///< address (in raster order) of the first block in the current slice segment
205  unsigned int slice_segment_addr;
206  ///< address (in raster order) of the first block in the current slice
207  unsigned int slice_addr;
208 
210 
212  int poc;
213 
218 
219  ///< RPS coded in the slice header itself is stored here
226  unsigned int list_entry_lx[2][32];
227 
231 
232  unsigned int nb_refs[2];
233 
236 
238  uint8_t disable_deblocking_filter_flag; ///< slice_header_disable_deblocking_filter_flag
241 
242  unsigned int collocated_ref_idx;
243 
247 
251 
253 
254  int beta_offset; ///< beta_offset_div2 * 2
255  int tc_offset; ///< tc_offset_div2 * 2
256 
257  uint8_t max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand
259 
261  int * offset;
262  int * size;
264 
265  int8_t slice_qp;
266 
269 
270  int16_t luma_weight_l0[16];
271  int16_t chroma_weight_l0[16][2];
272  int16_t chroma_weight_l1[16][2];
273  int16_t luma_weight_l1[16];
274 
275  int16_t luma_offset_l0[16];
276  int16_t chroma_offset_l0[16][2];
277 
278  int16_t luma_offset_l1[16];
279  int16_t chroma_offset_l1[16][2];
280 
282  unsigned data_offset;
283 } SliceHeader;
284 
285 typedef struct CodingUnit {
286  int x;
287  int y;
288 
289  enum PredMode pred_mode; ///< PredMode
290  enum PartMode part_mode; ///< PartMode
291 
292  // Inferred parameters
293  uint8_t intra_split_flag; ///< IntraSplitFlag
294  uint8_t max_trafo_depth; ///< MaxTrafoDepth
296 } CodingUnit;
297 
298 typedef struct Mv {
299  int16_t x; ///< horizontal component of motion vector
300  int16_t y; ///< vertical component of motion vector
301 } Mv;
302 
303 typedef struct MvField {
305  int8_t ref_idx[2];
306  int8_t pred_flag;
307 } MvField;
308 
309 typedef struct NeighbourAvailable {
312  int cand_up;
317 
318 typedef struct PredictionUnit {
319  int mpm_idx;
321  uint8_t intra_pred_mode[4];
323  uint8_t merge_flag;
324  uint8_t intra_pred_mode_c[4];
325  uint8_t chroma_mode_c[4];
327 
328 typedef struct TransformUnit {
330 
332 
333  // Inferred parameters;
341  uint8_t cross_pf;
342 } TransformUnit;
343 
344 typedef struct DBParams {
347 } DBParams;
348 
349 #define HEVC_FRAME_FLAG_OUTPUT (1 << 0)
350 #define HEVC_FRAME_FLAG_SHORT_REF (1 << 1)
351 #define HEVC_FRAME_FLAG_LONG_REF (1 << 2)
352 #define HEVC_FRAME_FLAG_BUMPING (1 << 3)
353 
354 #define HEVC_SEQUENCE_COUNTER_MASK 0xff
355 #define HEVC_SEQUENCE_COUNTER_INVALID (HEVC_SEQUENCE_COUNTER_MASK + 1)
356 
357 typedef struct HEVCFrame {
358  union {
359  struct {
361  };
363  };
365  int needs_fg; /* 1 if grain needs to be applied by the decoder */
366  MvField *tab_mvf; ///< RefStruct reference
368  RefPicListTab **rpl_tab; ///< RefStruct reference
370  int poc;
371 
372  RefPicListTab *rpl; ///< RefStruct reference
374 
375  void *hwaccel_picture_private; ///< RefStruct reference
376 
377  /**
378  * A sequence counter, so that old frames are output first
379  * after a POC reset
380  */
381  uint16_t sequence;
382 
383  /**
384  * A combination of HEVC_FRAME_FLAG_*
385  */
386  uint8_t flags;
387 } HEVCFrame;
388 
389 typedef struct HEVCLocalContext {
391 
393 
394  uint8_t first_qp_group;
395 
396  void *logctx;
397  const struct HEVCContext *parent;
398 
400 
401  /**
402  * This is a pointer to the common CABAC state.
403  * In case entropy_coding_sync_enabled_flag is set,
404  * the CABAC state after decoding the second CTU in a row is
405  * stored here and used to initialize the CABAC state before
406  * decoding the first CTU in the next row.
407  * This is the basis for WPP and in case slice-threading is used,
408  * the next row is decoded by another thread making this state
409  * shared between threads.
410  */
412 
413  int8_t qp_y;
414  int8_t curr_qp_y;
415 
416  int qPy_pred;
417 
419 
420  uint8_t ctb_left_flag;
421  uint8_t ctb_up_flag;
426  /* +7 is for subpixel interpolation, *2 for high bit depths */
428  /* The extended size between the new edge emu buffer is abused by SAO */
431 
432  int ct_depth;
436 
437 #define BOUNDARY_LEFT_SLICE (1 << 0)
438 #define BOUNDARY_LEFT_TILE (1 << 1)
439 #define BOUNDARY_UPPER_SLICE (1 << 2)
440 #define BOUNDARY_UPPER_TILE (1 << 3)
441  /* properties of the boundary of the current CTB for the purposes
442  * of the deblocking filter */
444 
445  // an array of these structs is used for per-thread state - pad its size
446  // to avoid false sharing
447  char padding[128];
449 
450 typedef struct HEVCContext {
451  const AVClass *c; // needed by private avoptions
453 
455  unsigned nb_local_ctx;
456 
457  /** 1 if the independent slice segment header was successfully parsed */
459 
461  uint8_t *sao_pixel_buffer_h[3];
462  uint8_t *sao_pixel_buffer_v[3];
463 
466  struct AVMD5 *md5_ctx;
467 
470 
471  ///< candidate references for the current frame
473 
474  const HEVCPPS *pps; ///< RefStruct reference
479  int temporal_id; ///< temporal_id_plus1 - 1
483  int poc;
484  int poc_tid0;
485  int slice_idx; ///< number of the slice being currently decoded
486  int eos; ///< current packet contains an EOS/EOB NAL
487  int last_eos; ///< last packet contains an EOS/EOB NAL
488  int bs_width;
490 
491  // NoRaslOutputFlag associated with the last IRAP frame
493 
499  int8_t *qp_y_tab;
500  uint8_t *horizontal_bs;
501  uint8_t *vertical_bs;
502 
504 
505  // CU
506  uint8_t *skip_flag;
507  uint8_t *tab_ct_depth;
508  // PU
509  uint8_t *tab_ipm;
510 
511  uint8_t *cbf_luma; // cbf_luma of colocated TU
512  uint8_t *is_pcm;
513 
514  // CTB-level flags affecting loop filter operation
516 
517  /** used on BE to byteswap the lines for checksumming */
518  uint8_t *checksum_buf;
520 
521  /**
522  * Sequence counters for decoded and output frames, so that old
523  * frames are output first after a POC reset
524  */
525  uint16_t seq_decode;
526  uint16_t seq_output;
527 
528  /** The target for the common_cabac_state of the local contexts. */
530 
532 
533  const uint8_t *data;
534 
536  // type of the first VCL NAL of the current frame
538 
539  int is_nalff; ///< this flag is != 0 if bitstream is encapsulated
540  ///< as a format defined in 14496-15
542 
543  int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4)
545 
547 
548  AVBufferRef *rpu_buf; ///< 0 or 1 Dolby Vision RPUs.
549  DOVIContext dovi_ctx; ///< Dolby Vision decoding context
550 } HEVCContext;
551 
552 /**
553  * Mark all frames in DPB as unused for reference.
554  */
556 
557 /**
558  * Drop all frames currently in DPB.
559  */
561 
563  int x0, int y0);
564 
565 /**
566  * Construct the reference picture sets for the current frame.
567  */
569 
570 /**
571  * Construct the reference picture list(s) for the current slice.
572  */
574 
576  int ctb_addr_ts);
578  int ctb_addr_ts, const uint8_t *data, size_t size,
579  int is_wpp);
588 int ff_hevc_skip_flag_decode(HEVCLocalContext *lc, int x0, int y0,
589  int x_cb, int y_cb, int min_cb_width);
592  int ct_depth, int x0, int y0);
593 int ff_hevc_part_mode_decode(HEVCLocalContext *lc, const HEVCSPS *sps, int log2_cb_size);
601 int ff_hevc_inter_pred_idc_decode(HEVCLocalContext *lc, int nPbW, int nPbH);
602 int ff_hevc_ref_idx_lx_decode(HEVCLocalContext *lc, int num_ref_idx_lx);
605 int ff_hevc_split_transform_flag_decode(HEVCLocalContext *lc, int log2_trafo_size);
606 int ff_hevc_cbf_cb_cr_decode(HEVCLocalContext *lc, int trafo_depth);
607 int ff_hevc_cbf_luma_decode(HEVCLocalContext *lc, int trafo_depth);
610 
611 /**
612  * Get the number of candidate references for the current frame.
613  */
614 int ff_hevc_frame_nb_refs(const SliceHeader *sh, const HEVCPPS *pps);
615 
616 int ff_hevc_set_new_ref(HEVCContext *s, int poc);
617 
619 {
620  switch (type) {
621  case HEVC_NAL_TRAIL_N:
622  case HEVC_NAL_TSA_N:
623  case HEVC_NAL_STSA_N:
624  case HEVC_NAL_RADL_N:
625  case HEVC_NAL_RASL_N:
626  case HEVC_NAL_VCL_N10:
627  case HEVC_NAL_VCL_N12:
628  case HEVC_NAL_VCL_N14:
629  return 1;
630  default: break;
631  }
632  return 0;
633 }
634 
635 /**
636  * Find next frame in output order and put a reference to it in frame.
637  * @return 1 if a frame was output, 0 otherwise
638  */
640 
642 
644 
645 void ff_hevc_set_neighbour_available(HEVCLocalContext *lc, int x0, int y0,
646  int nPbW, int nPbH, int log2_ctb_size);
648  int x0, int y0,
649  int nPbW, int nPbH, int log2_cb_size,
650  int part_idx, int merge_idx, MvField *mv);
652  int x0, int y0,
653  int nPbW, int nPbH, int log2_cb_size,
654  int part_idx, int merge_idx,
655  MvField *mv, int mvp_lx_flag, int LX);
657  int x, int y, int ctb_size);
659  int x_ctb, int y_ctb, int ctb_size);
661  int xBase, int yBase, int log2_cb_size);
663  int x0, int y0, int log2_trafo_size);
667 int ff_hevc_cu_chroma_qp_offset_idx(HEVCLocalContext *lc, int chroma_qp_offset_list_len_minus1);
669  int x0, int y0,
670  int log2_trafo_size, enum ScanType scan_idx,
671  int c_idx);
672 
673 void ff_hevc_hls_mvd_coding(HEVCLocalContext *lc, int x0, int y0, int log2_cb_size);
674 
675 extern const uint8_t ff_hevc_qpel_extra_before[4];
676 extern const uint8_t ff_hevc_qpel_extra_after[4];
677 extern const uint8_t ff_hevc_qpel_extra[4];
678 
679 #endif /* AVCODEC_HEVC_HEVCDEC_H */
HEVCLocalContext::na
NeighbourAvailable na
Definition: hevcdec.h:435
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:525
ff_hevc_hls_residual_coding
void ff_hevc_hls_residual_coding(HEVCLocalContext *lc, const HEVCPPS *pps, int x0, int y0, int log2_trafo_size, enum ScanType scan_idx, int c_idx)
Definition: cabac.c:982
HEVCContext::temporal_id
int temporal_id
temporal_id_plus1 - 1
Definition: hevcdec.h:479
SliceHeader::beta_offset
int beta_offset
beta_offset_div2 * 2
Definition: hevcdec.h:254
HEVCContext::skip_flag
uint8_t * skip_flag
Definition: hevcdec.h:506
bswapdsp.h
DBParams
Definition: hevcdec.h:344
ff_hevc_get_ref_list
const RefPicList * ff_hevc_get_ref_list(const HEVCContext *s, const HEVCFrame *frame, int x0, int y0)
Definition: refs.c:51
HEVCContext::filter_slice_edges
uint8_t * filter_slice_edges
Definition: hevcdec.h:515
ff_hevc_cu_chroma_qp_offset_idx
int ff_hevc_cu_chroma_qp_offset_idx(HEVCLocalContext *lc, int chroma_qp_offset_list_len_minus1)
Definition: cabac.c:624
ff_hevc_luma_mv_mvp_mode
void ff_hevc_luma_mv_mvp_mode(HEVCLocalContext *lc, const HEVCPPS *pps, 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: mvs.c:589
HEVCLocalContext
Definition: hevcdec.h:389
HEVCFrame::flags
uint8_t flags
A combination of HEVC_FRAME_FLAG_*.
Definition: hevcdec.h:386
SliceHeader::slice_act_cr_qp_offset
int slice_act_cr_qp_offset
Definition: hevcdec.h:250
INTRA_ANGULAR_28
@ INTRA_ANGULAR_28
Definition: hevcdec.h:149
h2645_parse.h
SliceHeader::chroma_offset_l1
int16_t chroma_offset_l1[16][2]
Definition: hevcdec.h:279
LT_FOLL
@ LT_FOLL
Definition: hevcdec.h:86
HEVCContext::seq_output
uint16_t seq_output
Definition: hevcdec.h:526
SAO_EO_45D
@ SAO_EO_45D
Definition: hevcdec.h:169
cabac.h
HEVCContext::nuh_layer_id
int nuh_layer_id
Definition: hevcdec.h:544
INTRA_ANGULAR_29
@ INTRA_ANGULAR_29
Definition: hevcdec.h:150
ff_hevc_bump_frame
void ff_hevc_bump_frame(HEVCContext *s)
Definition: refs.c:242
PART_NxN
@ PART_NxN
Definition: hevcdec.h:94
mem_internal.h
INTRA_ANGULAR_30
@ INTRA_ANGULAR_30
Definition: hevcdec.h:151
SliceHeader::slice_act_y_qp_offset
int slice_act_y_qp_offset
Definition: hevcdec.h:248
INTRA_ANGULAR_34
@ INTRA_ANGULAR_34
Definition: hevcdec.h:155
INTRA_ANGULAR_27
@ INTRA_ANGULAR_27
Definition: hevcdec.h:148
SAO_APPLIED
@ SAO_APPLIED
Definition: hevcdec.h:162
SAO_BAND
@ SAO_BAND
Definition: hevcdec.h:160
ff_hevc_skip_flag_decode
int ff_hevc_skip_flag_decode(HEVCLocalContext *lc, int x0, int y0, int x_cb, int y_cb, int min_cb_width)
Definition: cabac.c:573
ff_hevc_set_neighbour_available
void ff_hevc_set_neighbour_available(HEVCLocalContext *lc, int x0, int y0, int nPbW, int nPbH, int log2_ctb_size)
Definition: mvs.c:43
INTRA_ANGULAR_2
@ INTRA_ANGULAR_2
Definition: hevcdec.h:123
HEVCContext::slice_initialized
uint8_t slice_initialized
1 if the independent slice segment header was successfully parsed
Definition: hevcdec.h:458
ff_hevc_res_scale_sign_flag
int ff_hevc_res_scale_sign_flag(HEVCLocalContext *lc, int idx)
Definition: cabac.c:862
HEVCLocalContext::ctb_up_flag
uint8_t ctb_up_flag
Definition: hevcdec.h:421
CodingUnit
Definition: hevcdec.h:285
HEVCFrame::needs_fg
int needs_fg
Definition: hevcdec.h:365
mv
static const int8_t mv[256][2]
Definition: 4xm.c:81
SliceHeader::num_entry_point_offsets
int num_entry_point_offsets
Definition: hevcdec.h:263
HEVCFrame::frame_grain
AVFrame * frame_grain
Definition: hevcdec.h:364
ff_hevc_deblocking_boundary_strengths
void ff_hevc_deblocking_boundary_strengths(HEVCLocalContext *lc, const HEVCPPS *pps, int x0, int y0, int log2_trafo_size)
Definition: filter.c:739
PART_2NxnU
@ PART_2NxnU
Definition: hevcdec.h:95
HEVCContext::md5_ctx
struct AVMD5 * md5_ctx
Definition: hevcdec.h:466
HEVCContext::deblock
DBParams * deblock
Definition: hevcdec.h:477
ff_hevc_flush_dpb
void ff_hevc_flush_dpb(HEVCContext *s)
Drop all frames currently in DPB.
Definition: refs.c:70
ff_hevc_save_states
void ff_hevc_save_states(HEVCLocalContext *lc, const HEVCPPS *pps, int ctb_addr_ts)
Definition: cabac.c:402
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:374
ff_hevc_sao_type_idx_decode
int ff_hevc_sao_type_idx_decode(HEVCLocalContext *lc)
Definition: cabac.c:521
HEVCFrame::tab_mvf
MvField * tab_mvf
RefStruct reference.
Definition: hevcdec.h:366
TransformUnit::cu_qp_delta
int cu_qp_delta
Definition: hevcdec.h:329
ScanType
ScanType
Definition: hevcdec.h:172
ff_hevc_intra_chroma_pred_mode_decode
int ff_hevc_intra_chroma_pred_mode_decode(HEVCLocalContext *lc)
Definition: cabac.c:726
HEVCFrame::hwaccel_picture_private
void * hwaccel_picture_private
RefStruct reference.
Definition: hevcdec.h:375
NeighbourAvailable::cand_left
int cand_left
Definition: hevcdec.h:311
NeighbourAvailable::cand_up
int cand_up
Definition: hevcdec.h:312
ff_hevc_qpel_extra_before
const uint8_t ff_hevc_qpel_extra_before[4]
INTRA_DC
@ INTRA_DC
Definition: hevcdec.h:122
HEVCContext::collocated_ref
HEVCFrame * collocated_ref
Definition: hevcdec.h:481
HEVCContext::no_rasl_output_flag
int no_rasl_output_flag
Definition: hevcdec.h:492
NeighbourAvailable::cand_up_right
int cand_up_right
Definition: hevcdec.h:314
data
const char data[16]
Definition: mxf.c:148
Mv::y
int16_t y
vertical component of motion vector
Definition: hevcdec.h:300
HEVC_NAL_TSA_N
@ HEVC_NAL_TSA_N
Definition: hevc.h:31
HEVCContext::checksum_buf_size
int checksum_buf_size
Definition: hevcdec.h:519
SAO_EDGE
@ SAO_EDGE
Definition: hevcdec.h:161
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:230
ff_hevc_rem_intra_luma_pred_mode_decode
int ff_hevc_rem_intra_luma_pred_mode_decode(HEVCLocalContext *lc)
Definition: cabac.c:716
TransformUnit::is_cu_qp_delta_coded
uint8_t is_cu_qp_delta_coded
Definition: hevcdec.h:337
ff_hevc_set_new_ref
int ff_hevc_set_new_ref(HEVCContext *s, int poc)
Definition: refs.c:125
MODE_INTRA
@ MODE_INTRA
Definition: hevcdec.h:103
HEVCContext::output_frame
AVFrame * output_frame
Definition: hevcdec.h:460
HEVCContext::sao_pixel_buffer_h
uint8_t * sao_pixel_buffer_h[3]
Definition: hevcdec.h:461
HEVCContext::data
const uint8_t * data
Definition: hevcdec.h:533
SliceHeader::slice_loop_filter_across_slices_enabled_flag
uint8_t slice_loop_filter_across_slices_enabled_flag
Definition: hevcdec.h:239
ff_hevc_sao_eo_class_decode
int ff_hevc_sao_eo_class_decode(HEVCLocalContext *lc)
Definition: cabac.c:556
HEVCLocalContext::ctb_up_left_flag
uint8_t ctb_up_left_flag
Definition: hevcdec.h:423
HEVCContext::bdsp
BswapDSPContext bdsp
Definition: hevcdec.h:497
ff_hevc_cu_qp_delta_abs
int ff_hevc_cu_qp_delta_abs(HEVCLocalContext *lc)
Definition: cabac.c:587
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: cabac.c:763
HEVCContext::checksum_buf
uint8_t * checksum_buf
used on BE to byteswap the lines for checksumming
Definition: hevcdec.h:518
bit_depth
static void bit_depth(AudioStatsContext *s, const uint64_t *const mask, uint8_t *depth)
Definition: af_astats.c:246
INTRA_ANGULAR_9
@ INTRA_ANGULAR_9
Definition: hevcdec.h:130
RefPicList
Definition: hevcdec.h:190
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: refs.c:174
PF_INTRA
@ PF_INTRA
Definition: hevcdec.h:114
INTRA_ANGULAR_10
@ INTRA_ANGULAR_10
Definition: hevcdec.h:131
ff_hevc_cbf_luma_decode
int ff_hevc_cbf_luma_decode(HEVCLocalContext *lc, int trafo_depth)
Definition: cabac.c:832
MODE_SKIP
@ MODE_SKIP
Definition: hevcdec.h:104
HEVCLocalContext::end_of_tiles_x
int end_of_tiles_x
Definition: hevcdec.h:424
CodingUnit::x
int x
Definition: hevcdec.h:286
SAOType
SAOType
Definition: hevcdec.h:158
PART_2Nx2N
@ PART_2Nx2N
Definition: hevcdec.h:91
ff_hevc_sao_offset_abs_decode
int ff_hevc_sao_offset_abs_decode(HEVCLocalContext *lc, int bit_depth)
Definition: cabac.c:541
ff_hevc_cbf_cb_cr_decode
int ff_hevc_cbf_cb_cr_decode(HEVCLocalContext *lc, int trafo_depth)
Definition: cabac.c:827
HEVCLocalContext::ctb_up_right_flag
uint8_t ctb_up_right_flag
Definition: hevcdec.h:422
HEVCLocalContext::common_cabac_state
HEVCCABACState * common_cabac_state
This is a pointer to the common CABAC state.
Definition: hevcdec.h:411
SAO_EO_135D
@ SAO_EO_135D
Definition: hevcdec.h:168
HEVC_NAL_VCL_N14
@ HEVC_NAL_VCL_N14
Definition: hevc.h:43
PRED_BI
@ PRED_BI
Definition: hevcdec.h:110
ff_hevc_cu_qp_delta_sign_flag
int ff_hevc_cu_qp_delta_sign_flag(HEVCLocalContext *lc)
Definition: cabac.c:614
DOVIContext
Definition: dovi_rpu.h:32
ff_hevc_end_of_slice_flag_decode
int ff_hevc_end_of_slice_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:563
INTRA_ANGULAR_3
@ INTRA_ANGULAR_3
Definition: hevcdec.h:124
PredictionUnit::intra_pred_mode_c
uint8_t intra_pred_mode_c[4]
Definition: hevcdec.h:324
PredictionUnit
Definition: hevcdec.h:318
HEVCContext::tab_mvf_pool
struct FFRefStructPool * tab_mvf_pool
Definition: hevcdec.h:468
InterPredIdc
InterPredIdc
Definition: hevcdec.h:107
MODE_INTER
@ MODE_INTER
Definition: hevcdec.h:102
SliceHeader::luma_log2_weight_denom
uint8_t luma_log2_weight_denom
Definition: hevcdec.h:267
HEVCLocalContext::pu
PredictionUnit pu
Definition: hevcdec.h:434
sei.h
TransformUnit::res_scale_val
int res_scale_val
Definition: hevcdec.h:331
SliceHeader::short_term_ref_pic_set_size
int short_term_ref_pic_set_size
Definition: hevcdec.h:221
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:224
RefPicList::nb_refs
int nb_refs
Definition: hevcdec.h:194
ff_hevc_split_coding_unit_flag_decode
int ff_hevc_split_coding_unit_flag_decode(HEVCLocalContext *lc, const HEVCSPS *sps, int ct_depth, int x0, int y0)
Definition: cabac.c:640
HEVCContext::h274db
H274FilmGrainDatabase h274db
Definition: hevcdec.h:498
HEVCContext::bs_width
int bs_width
Definition: hevcdec.h:488
ff_hevc_luma_mv_merge_mode
void ff_hevc_luma_mv_merge_mode(HEVCLocalContext *lc, const HEVCPPS *pps, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int part_idx, int merge_idx, MvField *mv)
Definition: mvs.c:482
AVMD5
Definition: md5.c:42
progressframe.h
SliceHeader::slice_segment_addr
unsigned int slice_segment_addr
address (in raster order) of the first block in the current slice
Definition: hevcdec.h:205
HEVCContext::apply_defdispwin
int apply_defdispwin
Definition: hevcdec.h:541
ff_hevc_part_mode_decode
int ff_hevc_part_mode_decode(HEVCLocalContext *lc, const HEVCSPS *sps, int log2_cb_size)
Definition: cabac.c:661
TransformUnit::intra_pred_mode
int intra_pred_mode
Definition: hevcdec.h:334
SliceHeader::cabac_init_flag
uint8_t cabac_init_flag
Definition: hevcdec.h:237
DBParams::beta_offset
int beta_offset
Definition: hevcdec.h:345
HEVCLocalContext::curr_qp_y
int8_t curr_qp_y
Definition: hevcdec.h:414
DBParams::tc_offset
int tc_offset
Definition: hevcdec.h:346
ff_hevc_cabac_init
int ff_hevc_cabac_init(HEVCLocalContext *lc, const HEVCPPS *pps, int ctb_addr_ts, const uint8_t *data, size_t size, int is_wpp)
Definition: cabac.c:454
INTRA_ANGULAR_23
@ INTRA_ANGULAR_23
Definition: hevcdec.h:144
HEVCContext::tab_ipm
uint8_t * tab_ipm
Definition: hevcdec.h:509
HEVCLocalContext::parent
const struct HEVCContext * parent
Definition: hevcdec.h:397
s
#define s(width, name)
Definition: cbs_vp9.c:198
NeighbourAvailable::cand_bottom_left
int cand_bottom_left
Definition: hevcdec.h:310
HEVCContext::c
const AVClass * c
Definition: hevcdec.h:451
ff_hevc_set_qPy
void ff_hevc_set_qPy(HEVCLocalContext *lc, const HEVCPPS *pps, int xBase, int yBase, int log2_cb_size)
Definition: filter.c:121
HEVCContext::rps
RefPicList rps[5]
Definition: hevcdec.h:472
HEVC_NAL_VCL_N10
@ HEVC_NAL_VCL_N10
Definition: hevc.h:39
SAO_NOT_APPLIED
@ SAO_NOT_APPLIED
Definition: hevcdec.h:159
HEVCContext::last_eos
int last_eos
last packet contains an EOS/EOB NAL
Definition: hevcdec.h:487
HEVCNALUnitType
HEVCNALUnitType
Table 7-1 – NAL unit type codes and NAL unit type classes in T-REC-H.265-201802.
Definition: hevc.h:28
SliceHeader::luma_offset_l1
int16_t luma_offset_l1[16]
Definition: hevcdec.h:278
INTRA_ANGULAR_14
@ INTRA_ANGULAR_14
Definition: hevcdec.h:135
HEVCContext::slice_idx
int slice_idx
number of the slice being currently decoded
Definition: hevcdec.h:485
ff_hevc_nal_is_nonref
static av_always_inline int ff_hevc_nal_is_nonref(enum HEVCNALUnitType type)
Definition: hevcdec.h:618
HEVCSEI
Definition: sei.h:82
HEVCLocalContext::padding
char padding[128]
Definition: hevcdec.h:447
ff_hevc_frame_rps
int ff_hevc_frame_rps(HEVCContext *s)
Construct the reference picture sets for the current frame.
Definition: refs.c:467
INTRA_ANGULAR_12
@ INTRA_ANGULAR_12
Definition: hevcdec.h:133
SliceHeader::slice_rps
ShortTermRPS slice_rps
Definition: hevcdec.h:222
ff_hevc_qpel_extra
const uint8_t ff_hevc_qpel_extra[4]
HEVCPredContext
Definition: pred.h:32
HEVCFrame::rpl
RefPicListTab * rpl
RefStruct reference.
Definition: hevcdec.h:372
RPSType
RPSType
Definition: hevcdec.h:81
hevc.h
get_bits.h
INTRA_ANGULAR_18
@ INTRA_ANGULAR_18
Definition: hevcdec.h:139
RefPicList::ref
struct HEVCFrame * ref[HEVC_MAX_REFS]
Definition: hevcdec.h:191
SliceHeader::size
int * size
Definition: hevcdec.h:262
FFRefStructPool
FFRefStructPool is an API for a thread-safe pool of objects managed via the RefStruct API.
Definition: refstruct.c:183
HEVCContext::pps
const HEVCPPS * pps
RefStruct reference.
Definition: hevcdec.h:474
SliceHeader::collocated_list
uint8_t collocated_list
Definition: hevcdec.h:240
SliceHeader::luma_offset_l0
int16_t luma_offset_l0[16]
Definition: hevcdec.h:275
NeighbourAvailable::cand_up_right_sap
int cand_up_right_sap
Definition: hevcdec.h:315
INTRA_ANGULAR_26
@ INTRA_ANGULAR_26
Definition: hevcdec.h:147
SliceHeader::chroma_weight_l1
int16_t chroma_weight_l1[16][2]
Definition: hevcdec.h:272
CodingUnit::max_trafo_depth
uint8_t max_trafo_depth
MaxTrafoDepth.
Definition: hevcdec.h:294
SliceHeader::slice_ctb_addr_rs
int slice_ctb_addr_rs
Definition: hevcdec.h:281
SliceHeader::poc
int poc
Definition: hevcdec.h:212
HEVCContext::nal_unit_type
enum HEVCNALUnitType nal_unit_type
Definition: hevcdec.h:478
HEVC_NAL_VCL_N12
@ HEVC_NAL_VCL_N12
Definition: hevc.h:41
SliceHeader::pic_output_flag
uint8_t pic_output_flag
Definition: hevcdec.h:216
HEVCFrame::refPicList
RefPicList * refPicList
Definition: hevcdec.h:367
PredictionUnit::rem_intra_luma_pred_mode
int rem_intra_luma_pred_mode
Definition: hevcdec.h:320
INTRA_ANGULAR_11
@ INTRA_ANGULAR_11
Definition: hevcdec.h:132
HEVCContext::sei
HEVCSEI sei
Definition: hevcdec.h:465
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
INTRA_ANGULAR_15
@ INTRA_ANGULAR_15
Definition: hevcdec.h:136
HEVCCABACState::state
uint8_t state[HEVC_CONTEXTS]
Definition: hevcdec.h:179
INTRA_ANGULAR_22
@ INTRA_ANGULAR_22
Definition: hevcdec.h:143
HEVCLocalContext::tmp
int16_t tmp[MAX_PB_SIZE *MAX_PB_SIZE]
Definition: hevcdec.h:430
ff_hevc_merge_flag_decode
int ff_hevc_merge_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:748
LongTermRPS::poc
int poc[32]
Definition: hevcdec.h:184
HEVCContext::qp_y_tab
int8_t * qp_y_tab
Definition: hevcdec.h:499
CodingUnit::cu_transquant_bypass_flag
uint8_t cu_transquant_bypass_flag
Definition: hevcdec.h:295
HEVCLocalContext::first_qp_group
uint8_t first_qp_group
Definition: hevcdec.h:394
HEVCContext::cbf_luma
uint8_t * cbf_luma
Definition: hevcdec.h:511
HEVC_NAL_STSA_N
@ HEVC_NAL_STSA_N
Definition: hevc.h:33
HEVCFrame::rpl_tab
RefPicListTab ** rpl_tab
RefStruct reference.
Definition: hevcdec.h:368
flush
void(* flush)(AVBSFContext *ctx)
Definition: dts2pts.c:368
LongTermRPS::poc_msb_present
uint8_t poc_msb_present[32]
Definition: hevcdec.h:185
ff_hevc_split_transform_flag_decode
int ff_hevc_split_transform_flag_decode(HEVCLocalContext *lc, int log2_trafo_size)
Definition: cabac.c:822
HEVCContext::film_grain_warning_shown
int film_grain_warning_shown
Definition: hevcdec.h:546
PART_Nx2N
@ PART_Nx2N
Definition: hevcdec.h:93
RefPicListTab
Definition: hevcdec.h:197
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:539
SliceHeader::nb_refs
unsigned int nb_refs[2]
Definition: hevcdec.h:232
Mv::x
int16_t x
horizontal component of motion vector
Definition: hevcdec.h:299
HEVCSliceType
HEVCSliceType
Definition: hevc.h:95
INTRA_ANGULAR_5
@ INTRA_ANGULAR_5
Definition: hevcdec.h:126
PF_BI
@ PF_BI
Definition: hevcdec.h:117
HEVCContext::poc
int poc
Definition: hevcdec.h:483
INTRA_ANGULAR_16
@ INTRA_ANGULAR_16
Definition: hevcdec.h:137
SCAN_HORIZ
@ SCAN_HORIZ
Definition: hevcdec.h:174
TransformUnit
Definition: hevcdec.h:328
HEVCLocalContext::edge_emu_buffer
uint8_t edge_emu_buffer[(MAX_PB_SIZE+7) *EDGE_EMU_BUFFER_STRIDE *2]
Definition: hevcdec.h:427
LongTermRPS::used
uint8_t used[32]
Definition: hevcdec.h:186
SliceHeader::colour_plane_id
uint8_t colour_plane_id
RPS coded in the slice header itself is stored here.
Definition: hevcdec.h:217
PART_nLx2N
@ PART_nLx2N
Definition: hevcdec.h:97
HEVCContext::nal_length_size
int nal_length_size
Number of bytes used for nal length (1, 2 or 4)
Definition: hevcdec.h:543
SliceHeader::dependent_slice_segment_flag
uint8_t dependent_slice_segment_flag
Definition: hevcdec.h:215
SliceHeader::slice_act_cb_qp_offset
int slice_act_cb_qp_offset
Definition: hevcdec.h:249
ST_FOLL
@ ST_FOLL
Definition: hevcdec.h:84
HEVCContext::bs_height
int bs_height
Definition: hevcdec.h:489
SliceHeader::first_slice_in_pic_flag
uint8_t first_slice_in_pic_flag
Definition: hevcdec.h:214
HEVCLocalContext::ctb_left_flag
uint8_t ctb_left_flag
Definition: hevcdec.h:420
dsp.h
H274FilmGrainDatabase
Definition: h274.h:34
ff_hevc_cu_transquant_bypass_flag_decode
int ff_hevc_cu_transquant_bypass_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:568
HEVCContext::sao
SAOParams * sao
Definition: hevcdec.h:476
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Definition: mem_internal.h:109
INTRA_ANGULAR_17
@ INTRA_ANGULAR_17
Definition: hevcdec.h:138
HEVC_NAL_RASL_N
@ HEVC_NAL_RASL_N
Definition: hevc.h:37
ff_hevc_unref_frame
void ff_hevc_unref_frame(HEVCFrame *frame, int flags)
Definition: refs.c:32
ff_hevc_mpm_idx_decode
int ff_hevc_mpm_idx_decode(HEVCLocalContext *lc)
Definition: cabac.c:708
INTRA_PLANAR
@ INTRA_PLANAR
Definition: hevcdec.h:121
HEVCLocalContext::cabac_state
uint8_t cabac_state[HEVC_CONTEXTS]
Definition: hevcdec.h:390
PART_2NxnD
@ PART_2NxnD
Definition: hevcdec.h:96
HEVCContext::tab_slice_address
int32_t * tab_slice_address
Definition: hevcdec.h:503
size
int size
Definition: twinvq_data.h:10344
PartMode
PartMode
Definition: hevcdec.h:90
SCAN_VERT
@ SCAN_VERT
Definition: hevcdec.h:175
SliceHeader::collocated_ref_idx
unsigned int collocated_ref_idx
Definition: hevcdec.h:242
SliceHeader::entry_point_offset
unsigned * entry_point_offset
Definition: hevcdec.h:260
TransformUnit::chroma_mode_c
int chroma_mode_c
Definition: hevcdec.h:336
ps.h
SliceHeader::short_term_ref_pic_set_sps_flag
int short_term_ref_pic_set_sps_flag
Definition: hevcdec.h:220
SliceHeader::no_output_of_prior_pics_flag
uint8_t no_output_of_prior_pics_flag
Definition: hevcdec.h:229
MvField
Definition: hevcdec.h:303
buffer.h
PF_L1
@ PF_L1
Definition: hevcdec.h:116
HEVC_MAX_REFS
@ HEVC_MAX_REFS
Definition: hevc.h:119
HEVCContext::tab_ct_depth
uint8_t * tab_ct_depth
Definition: hevcdec.h:507
HEVC_STAT_COEFFS
#define HEVC_STAT_COEFFS
Definition: hevcdec.h:54
HEVCDSPContext
Definition: dsp.h:47
HEVCContext::dovi_ctx
DOVIContext dovi_ctx
Dolby Vision decoding context.
Definition: hevcdec.h:549
SliceHeader::chroma_weight_l0
int16_t chroma_weight_l0[16][2]
Definition: hevcdec.h:271
ff_hevc_no_residual_syntax_flag_decode
int ff_hevc_no_residual_syntax_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:784
HEVCContext::horizontal_bs
uint8_t * horizontal_bs
Definition: hevcdec.h:500
HEVCContext::ps
HEVCParamSets ps
Definition: hevcdec.h:464
TransformUnit::cu_qp_offset_cb
int8_t cu_qp_offset_cb
Definition: hevcdec.h:339
SliceHeader::chroma_log2_weight_denom
int16_t chroma_log2_weight_denom
Definition: hevcdec.h:268
MvField::pred_flag
int8_t pred_flag
Definition: hevcdec.h:306
HEVCLocalContext::ct_depth
int ct_depth
Definition: hevcdec.h:432
INTRA_ANGULAR_7
@ INTRA_ANGULAR_7
Definition: hevcdec.h:128
ff_hevc_hls_filter
void ff_hevc_hls_filter(HEVCLocalContext *lc, const HEVCPPS *pps, int x, int y, int ctb_size)
Definition: filter.c:868
PART_nRx2N
@ PART_nRx2N
Definition: hevcdec.h:98
SliceHeader::slice_cb_qp_offset
int slice_cb_qp_offset
Definition: hevcdec.h:245
SliceHeader
Definition: hevcdec.h:201
INTRA_ANGULAR_8
@ INTRA_ANGULAR_8
Definition: hevcdec.h:129
ff_hevc_inter_pred_idc_decode
int ff_hevc_inter_pred_idc_decode(HEVCLocalContext *lc, int nPbW, int nPbH)
Definition: cabac.c:753
HEVCContext::cabac
HEVCCABACState cabac
The target for the common_cabac_state of the local contexts.
Definition: hevcdec.h:529
HEVCContext::avctx
AVCodecContext * avctx
Definition: hevcdec.h:452
SliceHeader::slice_sample_adaptive_offset_flag
uint8_t slice_sample_adaptive_offset_flag[3]
Definition: hevcdec.h:234
HEVCContext::cur_frame
HEVCFrame * cur_frame
Definition: hevcdec.h:480
INTRA_ANGULAR_32
@ INTRA_ANGULAR_32
Definition: hevcdec.h:153
INTRA_ANGULAR_21
@ INTRA_ANGULAR_21
Definition: hevcdec.h:142
HEVCFrame
Definition: hevcdec.h:357
HEVCFrame::tf
ProgressFrame tf
Definition: hevcdec.h:362
NeighbourAvailable::cand_up_left
int cand_up_left
Definition: hevcdec.h:313
INTRA_ANGULAR_6
@ INTRA_ANGULAR_6
Definition: hevcdec.h:127
ff_hevc_sao_merge_flag_decode
int ff_hevc_sao_merge_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:516
HEVCFrame::nb_rpl_elems
int nb_rpl_elems
Definition: hevcdec.h:373
HEVCLocalContext::logctx
void * logctx
Definition: hevcdec.h:396
HEVCFrame::ctb_count
int ctb_count
Definition: hevcdec.h:369
RefPicList::list
int list[HEVC_MAX_REFS]
Definition: hevcdec.h:192
SliceHeader::offset
int * offset
Definition: hevcdec.h:261
HEVCFrame::sequence
uint16_t sequence
A sequence counter, so that old frames are output first after a POC reset.
Definition: hevcdec.h:381
HEVCContext::pkt
H2645Packet pkt
Definition: hevcdec.h:535
SliceHeader::mvd_l1_zero_flag
uint8_t mvd_l1_zero_flag
Definition: hevcdec.h:235
av_always_inline
#define av_always_inline
Definition: attributes.h:49
PF_L0
@ PF_L0
Definition: hevcdec.h:115
EDGE_EMU_BUFFER_STRIDE
#define EDGE_EMU_BUFFER_STRIDE
Definition: hevcdec.h:68
INTRA_ANGULAR_19
@ INTRA_ANGULAR_19
Definition: hevcdec.h:140
SliceHeader::data_offset
unsigned data_offset
Definition: hevcdec.h:282
ff_hevc_pred_mode_decode
int ff_hevc_pred_mode_decode(HEVCLocalContext *lc)
Definition: cabac.c:635
HEVCLocalContext::qp_y
int8_t qp_y
Definition: hevcdec.h:413
pred.h
ff_hevc_qpel_extra_after
const uint8_t ff_hevc_qpel_extra_after[4]
SAO_EO_HORIZ
@ SAO_EO_HORIZ
Definition: hevcdec.h:166
SliceHeader::chroma_offset_l0
int16_t chroma_offset_l0[16][2]
Definition: hevcdec.h:276
SliceHeader::list_entry_lx
unsigned int list_entry_lx[2][32]
Definition: hevcdec.h:226
HEVCLocalContext::stat_coeff
uint8_t stat_coeff[HEVC_STAT_COEFFS]
Definition: hevcdec.h:392
HEVCFrame::poc
int poc
Definition: hevcdec.h:370
HEVCFrame::f
AVFrame * f
Definition: hevcdec.h:360
SAOEOClass
SAOEOClass
Definition: hevcdec.h:165
SAOParams
Definition: dsp.h:34
SliceHeader::short_term_rps
const ShortTermRPS * short_term_rps
Definition: hevcdec.h:223
avcodec.h
MAX_PB_SIZE
#define MAX_PB_SIZE
Definition: dsp.h:32
SliceHeader::cu_chroma_qp_offset_enabled_flag
uint8_t cu_chroma_qp_offset_enabled_flag
Definition: hevcdec.h:252
HEVCContext::first_nal_type
enum HEVCNALUnitType first_nal_type
Definition: hevcdec.h:537
NeighbourAvailable
Definition: hevcdec.h:309
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
PRED_L1
@ PRED_L1
Definition: hevcdec.h:109
PredictionUnit::mvd
Mv mvd
Definition: hevcdec.h:322
IntraPredMode
IntraPredMode
Definition: hevcdec.h:120
ST_CURR_BEF
@ ST_CURR_BEF
Definition: hevcdec.h:82
SliceHeader::disable_deblocking_filter_flag
uint8_t disable_deblocking_filter_flag
slice_header_disable_deblocking_filter_flag
Definition: hevcdec.h:238
HEVCLocalContext::edge_emu_buffer2
uint8_t edge_emu_buffer2[(MAX_PB_SIZE+7) *EDGE_EMU_BUFFER_STRIDE *2]
Definition: hevcdec.h:429
sps
static int FUNC() sps(CodedBitstreamContext *ctx, RWContext *rw, H264RawSPS *current)
Definition: cbs_h264_syntax_template.c:260
SliceHeader::max_num_merge_cand
uint8_t max_num_merge_cand
5 - 5_minus_max_num_merge_cand
Definition: hevcdec.h:257
SliceHeader::luma_weight_l0
int16_t luma_weight_l0[16]
Definition: hevcdec.h:270
ff_hevc_merge_idx_decode
int ff_hevc_merge_idx_decode(HEVCLocalContext *lc)
Definition: cabac.c:737
HEVCLocalContext::boundary_flags
int boundary_flags
Definition: hevcdec.h:443
ff_hevc_frame_nb_refs
int ff_hevc_frame_nb_refs(const SliceHeader *sh, const HEVCPPS *pps)
Get the number of candidate references for the current frame.
Definition: refs.c:529
LongTermRPS
Definition: hevcdec.h:183
SliceHeader::slice_type
enum HEVCSliceType slice_type
Definition: hevcdec.h:209
LT_CURR
@ LT_CURR
Definition: hevcdec.h:85
AVCodecContext
main external API structure.
Definition: avcodec.h:445
INTRA_ANGULAR_25
@ INTRA_ANGULAR_25
Definition: hevcdec.h:146
ff_hevc_hls_mvd_coding
void ff_hevc_hls_mvd_coding(HEVCLocalContext *lc, int x0, int y0, int log2_cb_size)
Definition: cabac.c:1494
SliceHeader::slice_qp
int8_t slice_qp
Definition: hevcdec.h:265
PredMode
PredMode
Definition: hevcdec.h:101
PredictionUnit::merge_flag
uint8_t merge_flag
Definition: hevcdec.h:323
NB_RPS_TYPE
@ NB_RPS_TYPE
Definition: hevcdec.h:87
SliceHeader::slice_cr_qp_offset
int slice_cr_qp_offset
Definition: hevcdec.h:246
HEVCContext
Definition: hevcdec.h:450
ff_hevc_prev_intra_luma_pred_flag_decode
int ff_hevc_prev_intra_luma_pred_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:703
CodingUnit::pred_mode
enum PredMode pred_mode
PredMode.
Definition: hevcdec.h:289
HEVCContext::rpl_tab_pool
struct FFRefStructPool * rpl_tab_pool
candidate references for the current frame
Definition: hevcdec.h:469
SliceHeader::pic_order_cnt_lsb
int pic_order_cnt_lsb
Definition: hevcdec.h:211
HEVCContext::rpu_buf
AVBufferRef * rpu_buf
0 or 1 Dolby Vision RPUs.
Definition: hevcdec.h:548
HEVCLocalContext::qPy_pred
int qPy_pred
Definition: hevcdec.h:416
SCAN_DIAG
@ SCAN_DIAG
Definition: hevcdec.h:173
SliceHeader::rpl_modification_flag
uint8_t rpl_modification_flag[2]
Definition: hevcdec.h:228
pps
uint64_t pps
Definition: dovi_rpuenc.c:35
HEVCContext::local_ctx
HEVCLocalContext * local_ctx
Definition: hevcdec.h:454
ShortTermRPS
Definition: ps.h:73
SAO_EO_VERT
@ SAO_EO_VERT
Definition: hevcdec.h:167
ff_hevc_sao_offset_sign_decode
int ff_hevc_sao_offset_sign_decode(HEVCLocalContext *lc)
Definition: cabac.c:551
HEVCLocalContext::tu
TransformUnit tu
Definition: hevcdec.h:418
ff_hevc_log2_res_scale_abs
int ff_hevc_log2_res_scale_abs(HEVCLocalContext *lc, int idx)
Definition: cabac.c:852
VideoDSPContext
Definition: videodsp.h:40
CodingUnit::y
int y
Definition: hevcdec.h:287
HEVCContext::vdsp
VideoDSPContext vdsp
Definition: hevcdec.h:496
MvField::mv
Mv mv[2]
mvL0, vvL1
Definition: hevcdec.h:304
INTRA_ANGULAR_24
@ INTRA_ANGULAR_24
Definition: hevcdec.h:145
Mv
Definition: hevcdec.h:298
MvField::ref_idx
int8_t ref_idx[2]
refIdxL0, refIdxL1
Definition: hevcdec.h:305
PRED_L0
@ PRED_L0
Definition: hevcdec.h:108
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
HEVCCABACState::stat_coeff
uint8_t stat_coeff[HEVC_STAT_COEFFS]
Definition: hevcdec.h:180
INTRA_ANGULAR_31
@ INTRA_ANGULAR_31
Definition: hevcdec.h:152
ff_hevc_slice_rpl
int ff_hevc_slice_rpl(HEVCContext *s)
Construct the reference picture list(s) for the current slice.
Definition: refs.c:300
HEVCContext::eos
int eos
current packet contains an EOS/EOB NAL
Definition: hevcdec.h:486
HEVCContext::vertical_bs
uint8_t * vertical_bs
Definition: hevcdec.h:501
HEVCSPS
Definition: ps.h:190
ff_hevc_sao_band_position_decode
int ff_hevc_sao_band_position_decode(HEVCLocalContext *lc)
Definition: cabac.c:531
HEVCPPS
Definition: ps.h:309
ST_CURR_AFT
@ ST_CURR_AFT
Definition: hevcdec.h:83
CodingUnit::part_mode
enum PartMode part_mode
PartMode.
Definition: hevcdec.h:290
INTRA_ANGULAR_4
@ INTRA_ANGULAR_4
Definition: hevcdec.h:125
ProgressFrame
The ProgressFrame structure.
Definition: progressframe.h:73
SliceHeader::tc_offset
int tc_offset
tc_offset_div2 * 2
Definition: hevcdec.h:255
LongTermRPS::nb_refs
uint8_t nb_refs
Definition: hevcdec.h:187
PredFlag
PredFlag
Definition: hevcdec.h:113
TransformUnit::cross_pf
uint8_t cross_pf
Definition: hevcdec.h:341
HEVCLocalContext::cu
CodingUnit cu
Definition: hevcdec.h:433
HEVCContext::sao_pixel_buffer_v
uint8_t * sao_pixel_buffer_v[3]
Definition: hevcdec.h:462
SliceHeader::pps_id
unsigned int pps_id
address (in raster order) of the first block in the current slice segment
Definition: hevcdec.h:202
videodsp.h
SliceHeader::luma_weight_l1
int16_t luma_weight_l1[16]
Definition: hevcdec.h:273
HEVCContext::sh
SliceHeader sh
Definition: hevcdec.h:475
int32_t
int32_t
Definition: audioconvert.c:56
PredictionUnit::mpm_idx
int mpm_idx
Definition: hevcdec.h:319
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:474
HEVCContext::wpp_err
atomic_int wpp_err
Definition: hevcdec.h:531
INTRA_ANGULAR_33
@ INTRA_ANGULAR_33
Definition: hevcdec.h:154
PredictionUnit::chroma_mode_c
uint8_t chroma_mode_c[4]
Definition: hevcdec.h:325
PredictionUnit::intra_pred_mode
uint8_t intra_pred_mode[4]
Definition: hevcdec.h:321
ff_hevc_hls_filters
void ff_hevc_hls_filters(HEVCLocalContext *lc, const HEVCPPS *pps, int x_ctb, int y_ctb, int ctb_size)
Definition: filter.c:907
HEVCContext::hpc
HEVCPredContext hpc
Definition: hevcdec.h:494
BswapDSPContext
Definition: bswapdsp.h:24
TransformUnit::is_cu_chroma_qp_offset_coded
uint8_t is_cu_chroma_qp_offset_coded
Definition: hevcdec.h:338
ff_hevc_pcm_flag_decode
int ff_hevc_pcm_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:698
SliceHeader::slice_qp_delta
int slice_qp_delta
Definition: hevcdec.h:244
SliceHeader::slice_addr
unsigned int slice_addr
Definition: hevcdec.h:207
SliceHeader::use_integer_mv_flag
uint8_t use_integer_mv_flag
Definition: hevcdec.h:258
RefPicList::isLongTerm
int isLongTerm[HEVC_MAX_REFS]
Definition: hevcdec.h:193
HEVCCABACState
Definition: hevcdec.h:178
HEVCContext::is_pcm
uint8_t * is_pcm
Definition: hevcdec.h:512
TransformUnit::intra_pred_mode_c
int intra_pred_mode_c
Definition: hevcdec.h:335
HEVCContext::hevcdsp
HEVCDSPContext hevcdsp
Definition: hevcdec.h:495
HEVC_NAL_RADL_N
@ HEVC_NAL_RADL_N
Definition: hevc.h:35
INTRA_ANGULAR_20
@ INTRA_ANGULAR_20
Definition: hevcdec.h:141
HEVCContext::nb_local_ctx
unsigned nb_local_ctx
Definition: hevcdec.h:455
INTRA_ANGULAR_13
@ INTRA_ANGULAR_13
Definition: hevcdec.h:134
HEVCLocalContext::end_of_tiles_y
int end_of_tiles_y
Definition: hevcdec.h:425
H2645Packet
Definition: h2645_parse.h:82
HEVCContext::poc_tid0
int poc_tid0
Definition: hevcdec.h:484
CodingUnit::intra_split_flag
uint8_t intra_split_flag
IntraSplitFlag.
Definition: hevcdec.h:293
ff_hevc_mvp_lx_flag_decode
int ff_hevc_mvp_lx_flag_decode(HEVCLocalContext *lc)
Definition: cabac.c:779
ff_hevc_clear_refs
void ff_hevc_clear_refs(HEVCContext *s)
Mark all frames in DPB as unused for reference.
Definition: refs.c:61
CABACContext
Definition: cabac.h:41
PART_2NxN
@ PART_2NxN
Definition: hevcdec.h:92
SliceHeader::long_term_rps
LongTermRPS long_term_rps
Definition: hevcdec.h:225
ff_hevc_cu_chroma_qp_offset_flag
int ff_hevc_cu_chroma_qp_offset_flag(HEVCLocalContext *lc)
Definition: cabac.c:619
HEVC_NAL_TRAIL_N
@ HEVC_NAL_TRAIL_N
Definition: hevc.h:29
HEVCLocalContext::cc
CABACContext cc
Definition: hevcdec.h:399
TransformUnit::cu_qp_offset_cr
int8_t cu_qp_offset_cr
Definition: hevcdec.h:340
HEVCParamSets
Definition: ps.h:446
HEVC_CONTEXTS
#define HEVC_CONTEXTS
Definition: hevcdec.h:53
RefPicListTab::refPicList
RefPicList refPicList[2]
Definition: hevcdec.h:198