FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
h264dec.h
Go to the documentation of this file.
1 /*
2  * H.26L/H.264/AVC/JVT/14496-10/... encoder/decoder
3  * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 /**
23  * @file
24  * H.264 / AVC / MPEG-4 part10 codec.
25  * @author Michael Niedermayer <michaelni@gmx.at>
26  */
27 
28 #ifndef AVCODEC_H264DEC_H
29 #define AVCODEC_H264DEC_H
30 
31 #include "libavutil/buffer.h"
32 #include "libavutil/intreadwrite.h"
33 #include "libavutil/thread.h"
34 
35 #include "cabac.h"
36 #include "error_resilience.h"
37 #include "h264_parse.h"
38 #include "h264_ps.h"
39 #include "h264_sei.h"
40 #include "h2645_parse.h"
41 #include "h264chroma.h"
42 #include "h264dsp.h"
43 #include "h264pred.h"
44 #include "h264qpel.h"
45 #include "internal.h"
46 #include "mpegutils.h"
47 #include "parser.h"
48 #include "qpeldsp.h"
49 #include "rectangle.h"
50 #include "videodsp.h"
51 
52 #define H264_MAX_PICTURE_COUNT 36
53 
54 #define MAX_MMCO_COUNT 66
55 
56 #define MAX_DELAYED_PIC_COUNT 16
57 
58 /* Compiling in interlaced support reduces the speed
59  * of progressive decoding by about 2%. */
60 #define ALLOW_INTERLACE
61 
62 #define FMO 0
63 
64 /**
65  * The maximum number of slices supported by the decoder.
66  * must be a power of 2
67  */
68 #define MAX_SLICES 32
69 
70 #ifdef ALLOW_INTERLACE
71 #define MB_MBAFF(h) (h)->mb_mbaff
72 #define MB_FIELD(sl) (sl)->mb_field_decoding_flag
73 #define FRAME_MBAFF(h) (h)->mb_aff_frame
74 #define FIELD_PICTURE(h) ((h)->picture_structure != PICT_FRAME)
75 #define LEFT_MBS 2
76 #define LTOP 0
77 #define LBOT 1
78 #define LEFT(i) (i)
79 #else
80 #define MB_MBAFF(h) 0
81 #define MB_FIELD(sl) 0
82 #define FRAME_MBAFF(h) 0
83 #define FIELD_PICTURE(h) 0
84 #undef IS_INTERLACED
85 #define IS_INTERLACED(mb_type) 0
86 #define LEFT_MBS 1
87 #define LTOP 0
88 #define LBOT 0
89 #define LEFT(i) 0
90 #endif
91 #define FIELD_OR_MBAFF_PICTURE(h) (FRAME_MBAFF(h) || FIELD_PICTURE(h))
92 
93 #ifndef CABAC
94 #define CABAC(h) (h)->ps.pps->cabac
95 #endif
96 
97 #define CHROMA(h) ((h)->ps.sps->chroma_format_idc)
98 #define CHROMA422(h) ((h)->ps.sps->chroma_format_idc == 2)
99 #define CHROMA444(h) ((h)->ps.sps->chroma_format_idc == 3)
100 
101 #define MB_TYPE_REF0 MB_TYPE_ACPRED // dirty but it fits in 16 bit
102 #define MB_TYPE_8x8DCT 0x01000000
103 #define IS_REF0(a) ((a) & MB_TYPE_REF0)
104 #define IS_8x8DCT(a) ((a) & MB_TYPE_8x8DCT)
105 
106 /**
107  * Memory management control operation opcode.
108  */
109 typedef enum MMCOOpcode {
110  MMCO_END = 0,
117 } MMCOOpcode;
118 
119 /**
120  * Memory management control operation.
121  */
122 typedef struct MMCO {
124  int short_pic_num; ///< pic_num without wrapping (pic_num & max_pic_num)
125  int long_arg; ///< index, pic_num, or num long refs depending on opcode
126 } MMCO;
127 
128 typedef struct H264Picture {
131 
133  int8_t *qscale_table;
134 
136  int16_t (*motion_val[2])[2];
137 
139  uint32_t *mb_type;
140 
142  void *hwaccel_picture_private; ///< hardware accelerator private data
143 
145  int8_t *ref_index[2];
146 
147  int field_poc[2]; ///< top/bottom POC
148  int poc; ///< frame POC
149  int frame_num; ///< frame_num (raw frame_num from slice header)
150  int mmco_reset; /**< MMCO_RESET set this 1. Reordering code must
151  not mix pictures before and after MMCO_RESET. */
152  int pic_id; /**< pic_num (short -> no wrap version of pic_num,
153  pic_num & max_pic_num; long -> long_pic_num) */
154  int long_ref; ///< 1->long term reference 0->short term reference
155  int ref_poc[2][2][32]; ///< POCs of the frames/fields used as reference (FIXME need per slice)
156  int ref_count[2][2]; ///< number of entries in ref_poc (FIXME need per slice)
157  int mbaff; ///< 1 -> MBAFF frame 0-> not MBAFF
158  int field_picture; ///< whether or not picture was encoded in separate fields
159 
161  int recovered; ///< picture at IDR or recovery point + recovery count
164 
165  int crop;
167  int crop_top;
168 } H264Picture;
169 
170 typedef struct H264Ref {
172  int linesize[3];
173 
175  int poc;
176  int pic_id;
177 
179 } H264Ref;
180 
181 typedef struct H264SliceContext {
182  struct H264Context *h264;
185 
188  int slice_type_nos; ///< S free slice type (SI/SP are remapped to I/P)
190 
191  int qscale;
192  int chroma_qp[2]; // QPc
193  int qp_thresh; ///< QP threshold to skip loopfilter
195 
196  // deblock
197  int deblocking_filter; ///< disable_deblocking_filter_idc with 1 <-> 0
200 
202 
205 
208 
211 
216 
218  int top_type;
221 
224 
226  unsigned int top_samples_available;
229 
230  ptrdiff_t linesize, uvlinesize;
231  ptrdiff_t mb_linesize; ///< may be equal to s->linesize or s->linesize * 2, for mbaff
232  ptrdiff_t mb_uvlinesize;
233 
234  int mb_x, mb_y;
235  int mb_xy;
238  unsigned int first_mb_addr;
239  // index of the first MB of the next slice
243 
246  int mb_mbaff; ///< mb_aff_frame && mb_field_decoding_flag
247 
249 
250  /**
251  * number of neighbors (top and/or left) that used 8x8 dct
252  */
254 
258 
259  int cbp;
260  int top_cbp;
261  int left_cbp;
262 
265  int map_col_to_list0[2][16 + 32];
266  int map_col_to_list0_field[2][2][16 + 32];
267 
268  /**
269  * num_ref_idx_l0/1_active_minus1 + 1
270  */
271  unsigned int ref_count[2]; ///< counts frames or fields, depending on current mb mode
272  unsigned int list_count;
273  H264Ref ref_list[2][48]; /**< 0..15: frame refs, 16..47: mbaff field refs.
274  * Reordered version of default_ref_list
275  * according to picture reordering in slice header */
276  struct {
278  uint32_t val;
279  } ref_modifications[2][32];
281 
282  unsigned int pps_id;
283 
285  int16_t *dc_val_base;
286 
289  uint8_t (*top_borders[2])[(16 * 3) * 2];
293 
294  /**
295  * non zero coeff count cache.
296  * is 64 if not available.
297  */
299 
300  /**
301  * Motion vector cache.
302  */
303  DECLARE_ALIGNED(16, int16_t, mv_cache)[2][5 * 8][2];
304  DECLARE_ALIGNED(8, int8_t, ref_cache)[2][5 * 8];
305  DECLARE_ALIGNED(16, uint8_t, mvd_cache)[2][5 * 8][2];
307 
308  DECLARE_ALIGNED(8, uint16_t, sub_mb_type)[4];
309 
310  ///< as a DCT coefficient is int32_t in high depth, we need to reserve twice the space.
311  DECLARE_ALIGNED(16, int16_t, mb)[16 * 48 * 2];
312  DECLARE_ALIGNED(16, int16_t, mb_luma_dc)[3][16 * 2];
313  ///< as mb is addressed by scantable[i] and scantable is uint8_t we can either
314  ///< check that i is not too large or ensure that there is some unused stuff after mb
315  int16_t mb_padding[256 * 2];
316 
317  uint8_t (*mvd_table[2])[2];
318 
319  /**
320  * Cabac
321  */
325 
327  int nb_mmco;
329 
331  int poc_lsb;
333  int delta_poc[2];
337 
338 /**
339  * H264Context
340  */
341 typedef struct H264Context {
342  const AVClass *class;
348 
353 
356 
358 
359  int pixel_shift; ///< 0 for 8-bit H.264, 1 for high-bit-depth H.264
360 
361  /* coded dimensions -- 16 * mb w/h */
362  int width, height;
364 
365  /**
366  * Backup frame properties: needed, because they can be different
367  * between returned frame and last decoded frame.
368  **/
372 
375 
377  int flags;
379  /* Set when slice threading is used and at least one slice uses deblocking
380  * mode 1 (i.e. across slice boundaries). Then we disable the loop filter
381  * during normal MB decoding and execute it serially at the end.
382  */
384 
385  /*
386  * Set to 1 when the current picture is IDR, 0 otherwise.
387  */
389 
392 
394 
395 #define LIST_NOT_USED -1 // FIXME rename?
396 #define PART_NOT_AVAILABLE -2
397 
398  /**
399  * block_offset[ 0..23] for frame macroblocks
400  * block_offset[24..47] for field macroblocks
401  */
402  int block_offset[2 * (16 * 3)];
403 
404  uint32_t *mb2b_xy; // FIXME are these 4 a good idea?
405  uint32_t *mb2br_xy;
406  int b_stride; // FIXME use s->b4_stride
407 
408  uint16_t *slice_table; ///< slice_table_base + 2*mb_stride + 1
409 
410  // interlacing specific flags
414 
415  uint8_t *list_counts; ///< Array of list_count per MB specifying the slice type
416 
417  /* 0x100 -> non null luma_dc, 0x80/0x40 -> non null chroma_dc (cb/cr), 0x?0 -> chroma_cbp(0, 1, 2), 0x0? luma_cbp */
418  uint16_t *cbp_table;
419 
420  /* chroma_pred_mode for i4x4 or i16x16, else 0 */
422  uint8_t (*mvd_table[2])[2];
424 
437 
438  int mb_y;
441  int mb_num;
442 
443  // =============================================================
444  // Things below are not used in the MB or more inner code
445 
448 
449  /**
450  * Used to parse AVC variant of H.264
451  */
452  int is_avc; ///< this flag is != 0 if codec is avc1
453  int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4)
454 
455  int bit_depth_luma; ///< luma bit depth from sps to detect changes
456  int chroma_format_idc; ///< chroma format from sps to detect changes
457 
459 
460  uint16_t *slice_table_base;
461 
463 
471 
472  /**
473  * memory management control operations buffer.
474  */
476  int nb_mmco;
479 
480  int long_ref_count; ///< number of actual long term references
481  int short_ref_count; ///< number of actual short term references
482 
483  /**
484  * @name Members for slice based multithreading
485  * @{
486  */
487  /**
488  * current slice number, used to initialize slice_num of each thread/context
489  */
491 
492  /**
493  * Max number of threads / contexts.
494  * This is equal to AVCodecContext.thread_count unless
495  * multithreaded decoding is impossible, in which case it is
496  * reduced to 1.
497  */
499 
500  /**
501  * 1 if the single thread fallback warning has already been
502  * displayed, 0 otherwise.
503  */
505 
506  /** @} */
507 
508  /**
509  * Complement sei_pic_struct
510  * SEI_PIC_STRUCT_TOP_BOTTOM and SEI_PIC_STRUCT_BOTTOM_TOP indicate interlaced frames.
511  * However, soft telecined frames may have these values.
512  * This is used in an attempt to flag soft telecine progressive.
513  */
515 
516  /**
517  * Are the SEI recovery points looking valid.
518  */
520 
521  /**
522  * recovery_frame is the frame_num at which the next frame should
523  * be fully constructed.
524  *
525  * Set to -1 when not expecting a recovery point.
526  */
528 
529 /**
530  * We have seen an IDR, so all the following frames in coded order are correctly
531  * decodable.
532  */
533 #define FRAME_RECOVERED_IDR (1 << 0)
534 /**
535  * Sufficient number of frames have been decoded since a SEI recovery point,
536  * so all the following frames in presentation order are correct.
537  */
538 #define FRAME_RECOVERED_SEI (1 << 1)
539 
540  int frame_recovered; ///< Initial frame has been completely recovered
541 
543 
545 
546  /* for frame threading, this is set to 1
547  * after finish_setup() has been called, so we cannot modify
548  * some context properties (which are supposed to stay constant between
549  * slices) anymore */
551 
554  int16_t slice_row[MAX_SLICES]; ///< to detect when MAX_SLICES is too low
555 
557 
559 
564  int ref2frm[MAX_SLICES][2][64]; ///< reference to frame number lists, used in the loop filter, the first 2 are for -2,-1
565 } H264Context;
566 
567 extern const uint16_t ff_h264_mb_sizes[4];
568 
569 /**
570  * Reconstruct bitstream slice_type.
571  */
573 
574 /**
575  * Allocate tables.
576  * needs width/height
577  */
579 
583 
584 /**
585  * Execute the reference picture marking (memory management control operations).
586  */
588 
590  const H2645NAL *nal, void *logctx);
591 
594 void ff_h264_decode_init_vlc(void);
595 
596 /**
597  * Decode a macroblock
598  * @return 0 if OK, ER_AC_ERROR / ER_DC_ERROR / ER_MV_ERROR on error
599  */
601 
602 /**
603  * Decode a CABAC coded macroblock
604  * @return 0 if OK, ER_AC_ERROR / ER_DC_ERROR / ER_MV_ERROR on error
605  */
607 
609 
613  int *mb_type);
614 
615 void ff_h264_filter_mb_fast(const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y,
616  uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr,
617  unsigned int linesize, unsigned int uvlinesize);
618 void ff_h264_filter_mb(const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y,
619  uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr,
620  unsigned int linesize, unsigned int uvlinesize);
621 
622 /*
623  * o-o o-o
624  * / / /
625  * o-o o-o
626  * ,---'
627  * o-o o-o
628  * / / /
629  * o-o o-o
630  */
631 
632 /* Scan8 organization:
633  * 0 1 2 3 4 5 6 7
634  * 0 DY y y y y y
635  * 1 y Y Y Y Y
636  * 2 y Y Y Y Y
637  * 3 y Y Y Y Y
638  * 4 y Y Y Y Y
639  * 5 DU u u u u u
640  * 6 u U U U U
641  * 7 u U U U U
642  * 8 u U U U U
643  * 9 u U U U U
644  * 10 DV v v v v v
645  * 11 v V V V V
646  * 12 v V V V V
647  * 13 v V V V V
648  * 14 v V V V V
649  * DY/DU/DV are for luma/chroma DC.
650  */
651 
652 #define LUMA_DC_BLOCK_INDEX 48
653 #define CHROMA_DC_BLOCK_INDEX 49
654 
655 // This table must be here because scan8[constant] must be known at compiletime
656 static const uint8_t scan8[16 * 3 + 3] = {
657  4 + 1 * 8, 5 + 1 * 8, 4 + 2 * 8, 5 + 2 * 8,
658  6 + 1 * 8, 7 + 1 * 8, 6 + 2 * 8, 7 + 2 * 8,
659  4 + 3 * 8, 5 + 3 * 8, 4 + 4 * 8, 5 + 4 * 8,
660  6 + 3 * 8, 7 + 3 * 8, 6 + 4 * 8, 7 + 4 * 8,
661  4 + 6 * 8, 5 + 6 * 8, 4 + 7 * 8, 5 + 7 * 8,
662  6 + 6 * 8, 7 + 6 * 8, 6 + 7 * 8, 7 + 7 * 8,
663  4 + 8 * 8, 5 + 8 * 8, 4 + 9 * 8, 5 + 9 * 8,
664  6 + 8 * 8, 7 + 8 * 8, 6 + 9 * 8, 7 + 9 * 8,
665  4 + 11 * 8, 5 + 11 * 8, 4 + 12 * 8, 5 + 12 * 8,
666  6 + 11 * 8, 7 + 11 * 8, 6 + 12 * 8, 7 + 12 * 8,
667  4 + 13 * 8, 5 + 13 * 8, 4 + 14 * 8, 5 + 14 * 8,
668  6 + 13 * 8, 7 + 13 * 8, 6 + 14 * 8, 7 + 14 * 8,
669  0 + 0 * 8, 0 + 5 * 8, 0 + 10 * 8
670 };
671 
672 static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
673 {
674 #if HAVE_BIGENDIAN
675  return (b & 0xFFFF) + (a << 16);
676 #else
677  return (a & 0xFFFF) + (b << 16);
678 #endif
679 }
680 
681 static av_always_inline uint16_t pack8to16(unsigned a, unsigned b)
682 {
683 #if HAVE_BIGENDIAN
684  return (b & 0xFF) + (a << 8);
685 #else
686  return (a & 0xFF) + (b << 8);
687 #endif
688 }
689 
690 /**
691  * Get the chroma qp.
692  */
693 static av_always_inline int get_chroma_qp(const PPS *pps, int t, int qscale)
694 {
695  return pps->chroma_qp_table[t][qscale];
696 }
697 
698 /**
699  * Get the predicted intra4x4 prediction mode.
700  */
702  H264SliceContext *sl, int n)
703 {
704  const int index8 = scan8[n];
705  const int left = sl->intra4x4_pred_mode_cache[index8 - 1];
706  const int top = sl->intra4x4_pred_mode_cache[index8 - 8];
707  const int min = FFMIN(left, top);
708 
709  ff_tlog(h->avctx, "mode:%d %d min:%d\n", left, top, min);
710 
711  if (min < 0)
712  return DC_PRED;
713  else
714  return min;
715 }
716 
718  H264SliceContext *sl)
719 {
720  int8_t *i4x4 = sl->intra4x4_pred_mode + h->mb2br_xy[sl->mb_xy];
721  int8_t *i4x4_cache = sl->intra4x4_pred_mode_cache;
722 
723  AV_COPY32(i4x4, i4x4_cache + 4 + 8 * 4);
724  i4x4[4] = i4x4_cache[7 + 8 * 3];
725  i4x4[5] = i4x4_cache[7 + 8 * 2];
726  i4x4[6] = i4x4_cache[7 + 8 * 1];
727 }
728 
730  H264SliceContext *sl)
731 {
732  const int mb_xy = sl->mb_xy;
733  uint8_t *nnz = h->non_zero_count[mb_xy];
734  uint8_t *nnz_cache = sl->non_zero_count_cache;
735 
736  AV_COPY32(&nnz[ 0], &nnz_cache[4 + 8 * 1]);
737  AV_COPY32(&nnz[ 4], &nnz_cache[4 + 8 * 2]);
738  AV_COPY32(&nnz[ 8], &nnz_cache[4 + 8 * 3]);
739  AV_COPY32(&nnz[12], &nnz_cache[4 + 8 * 4]);
740  AV_COPY32(&nnz[16], &nnz_cache[4 + 8 * 6]);
741  AV_COPY32(&nnz[20], &nnz_cache[4 + 8 * 7]);
742  AV_COPY32(&nnz[32], &nnz_cache[4 + 8 * 11]);
743  AV_COPY32(&nnz[36], &nnz_cache[4 + 8 * 12]);
744 
745  if (!h->chroma_y_shift) {
746  AV_COPY32(&nnz[24], &nnz_cache[4 + 8 * 8]);
747  AV_COPY32(&nnz[28], &nnz_cache[4 + 8 * 9]);
748  AV_COPY32(&nnz[40], &nnz_cache[4 + 8 * 13]);
749  AV_COPY32(&nnz[44], &nnz_cache[4 + 8 * 14]);
750  }
751 }
752 
754  H264SliceContext *sl,
755  int b_stride,
756  int b_xy, int b8_xy,
757  int mb_type, int list)
758 {
759  int16_t(*mv_dst)[2] = &h->cur_pic.motion_val[list][b_xy];
760  int16_t(*mv_src)[2] = &sl->mv_cache[list][scan8[0]];
761  AV_COPY128(mv_dst + 0 * b_stride, mv_src + 8 * 0);
762  AV_COPY128(mv_dst + 1 * b_stride, mv_src + 8 * 1);
763  AV_COPY128(mv_dst + 2 * b_stride, mv_src + 8 * 2);
764  AV_COPY128(mv_dst + 3 * b_stride, mv_src + 8 * 3);
765  if (CABAC(h)) {
766  uint8_t (*mvd_dst)[2] = &sl->mvd_table[list][FMO ? 8 * sl->mb_xy
767  : h->mb2br_xy[sl->mb_xy]];
768  uint8_t(*mvd_src)[2] = &sl->mvd_cache[list][scan8[0]];
769  if (IS_SKIP(mb_type)) {
770  AV_ZERO128(mvd_dst);
771  } else {
772  AV_COPY64(mvd_dst, mvd_src + 8 * 3);
773  AV_COPY16(mvd_dst + 3 + 3, mvd_src + 3 + 8 * 0);
774  AV_COPY16(mvd_dst + 3 + 2, mvd_src + 3 + 8 * 1);
775  AV_COPY16(mvd_dst + 3 + 1, mvd_src + 3 + 8 * 2);
776  }
777  }
778 
779  {
780  int8_t *ref_index = &h->cur_pic.ref_index[list][b8_xy];
781  int8_t *ref_cache = sl->ref_cache[list];
782  ref_index[0 + 0 * 2] = ref_cache[scan8[0]];
783  ref_index[1 + 0 * 2] = ref_cache[scan8[4]];
784  ref_index[0 + 1 * 2] = ref_cache[scan8[8]];
785  ref_index[1 + 1 * 2] = ref_cache[scan8[12]];
786  }
787 }
788 
790  H264SliceContext *sl,
791  int mb_type)
792 {
793  const int b_stride = h->b_stride;
794  const int b_xy = 4 * sl->mb_x + 4 * sl->mb_y * h->b_stride; // try mb2b(8)_xy
795  const int b8_xy = 4 * sl->mb_xy;
796 
797  if (USES_LIST(mb_type, 0)) {
798  write_back_motion_list(h, sl, b_stride, b_xy, b8_xy, mb_type, 0);
799  } else {
800  fill_rectangle(&h->cur_pic.ref_index[0][b8_xy],
801  2, 2, 2, (uint8_t)LIST_NOT_USED, 1);
802  }
803  if (USES_LIST(mb_type, 1))
804  write_back_motion_list(h, sl, b_stride, b_xy, b8_xy, mb_type, 1);
805 
806  if (sl->slice_type_nos == AV_PICTURE_TYPE_B && CABAC(h)) {
807  if (IS_8X8(mb_type)) {
808  uint8_t *direct_table = &h->direct_table[4 * sl->mb_xy];
809  direct_table[1] = sl->sub_mb_type[1] >> 1;
810  direct_table[2] = sl->sub_mb_type[2] >> 1;
811  direct_table[3] = sl->sub_mb_type[3] >> 1;
812  }
813  }
814 }
815 
817 {
819  return !(AV_RN64A(sl->sub_mb_type) &
821  0x0001000100010001ULL));
822  else
823  return !(AV_RN64A(sl->sub_mb_type) &
825  0x0001000100010001ULL));
826 }
827 
828 static inline int find_start_code(const uint8_t *buf, int buf_size,
829  int buf_index, int next_avc)
830 {
831  uint32_t state = -1;
832 
833  buf_index = avpriv_find_start_code(buf + buf_index, buf + next_avc + 1, &state) - buf - 1;
834 
835  return FFMIN(buf_index, buf_size);
836 }
837 
838 int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup);
839 
842 
844 
845 void ff_h264_draw_horiz_band(const H264Context *h, H264SliceContext *sl, int y, int height);
846 
848  const H2645NAL *nal);
849 #define SLICE_SINGLETHREAD 1
850 #define SLICE_SKIPED 2
851 
852 int ff_h264_execute_decode_slices(H264Context *h, unsigned context_count);
854  const AVCodecContext *src);
855 
857 
859 
861 
862 #endif /* AVCODEC_H264DEC_H */
void ff_h264_decode_init_vlc(void)
Definition: h264_cavlc.c:327
struct H264Context * h264
Definition: h264dec.h:182
const uint8_t * left_block
Definition: h264dec.h:222
#define ff_tlog(ctx,...)
Definition: internal.h:65
Memory management control operation.
Definition: h264dec.h:122
int nb_mmco
Definition: h264dec.h:476
int workaround_bugs
Definition: h264dec.h:378
int long_ref
1->long term reference 0->short term reference
Definition: h264dec.h:154
int single_decode_warning
1 if the single thread fallback warning has already been displayed, 0 otherwise.
Definition: h264dec.h:504
int sei_recovery_frame_cnt
Definition: h264dec.h:163
int ff_h264_decode_ref_pic_marking(H264SliceContext *sl, GetBitContext *gb, const H2645NAL *nal, void *logctx)
Definition: h264_refs.c:824
enum AVPixelFormat backup_pix_fmt
Definition: h264dec.h:371
int16_t mb[16 *48 *2]
Definition: h264dec.h:311
int topright_mb_xy
Definition: h264dec.h:214
H264POCContext poc
Definition: h264dec.h:462
void ff_h264_filter_mb_fast(const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize)
int mb_num
Definition: h264dec.h:441
This structure describes decoded (raw) audio or video data.
Definition: frame.h:184
int mb_aff_frame
Definition: h264dec.h:411
int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
Definition: h264_picture.c:67
int topleft_partition
Definition: h264dec.h:223
int16_t mv_cache[2][5 *8][2]
Motion vector cache.
Definition: h264dec.h:303
ptrdiff_t const GLvoid * data
Definition: opengl_enc.c:101
int neighbor_transform_size
number of neighbors (top and/or left) that used 8x8 dct
Definition: h264dec.h:253
int dist_scale_factor[32]
Definition: h264dec.h:263
int edge_emu_buffer_allocated
Definition: h264dec.h:291
int first_field
Definition: h264dec.h:413
uint8_t field_scan8x8_q0[64]
Definition: h264dec.h:435
int ff_h264_execute_ref_pic_marking(H264Context *h)
Execute the reference picture marking (memory management control operations).
Definition: h264_refs.c:609
int left_mb_xy[LEFT_MBS]
Definition: h264dec.h:215
int ff_h264_decode_mb_cabac(const H264Context *h, H264SliceContext *sl)
Decode a CABAC coded macroblock.
Definition: h264_cabac.c:1914
static av_always_inline int get_chroma_qp(const PPS *pps, int t, int qscale)
Get the chroma qp.
Definition: h264dec.h:693
unsigned int topleft_samples_available
Definition: h264dec.h:225
H264ChromaContext h264chroma
Definition: h264dec.h:346
uint16_t * cbp_table
Definition: h264dec.h:418
MMCO mmco[MAX_MMCO_COUNT]
memory management control operations buffer.
Definition: h264dec.h:475
uint8_t mvd_cache[2][5 *8][2]
Definition: h264dec.h:305
int mb_y
Definition: h264dec.h:438
int coded_picture_number
Definition: h264dec.h:374
AVBufferRef * mb_type_buf
Definition: h264dec.h:138
int bipred_scratchpad_allocated
Definition: h264dec.h:290
const char * b
Definition: vf_curves.c:113
AVBufferPool * mb_type_pool
Definition: h264dec.h:561
int chroma_x_shift
Definition: h264dec.h:363
Picture parameter set.
Definition: h264_ps.h:107
int ff_h264_alloc_tables(H264Context *h)
Allocate tables.
Definition: h264dec.c:182
int prev_mb_skipped
Definition: h264dec.h:203
int crop
Definition: h264dec.h:165
int16_t(*[2] motion_val)[2]
Definition: h264dec.h:136
int flags
Definition: h264dec.h:377
int mb_height
Definition: h264dec.h:439
static int find_start_code(const uint8_t *buf, int buf_size, int buf_index, int next_avc)
Definition: h264dec.h:828
H264Picture * delayed_pic[MAX_DELAYED_PIC_COUNT+2]
Definition: h264dec.h:467
int is_avc
Used to parse AVC variant of H.264.
Definition: h264dec.h:452
void ff_h264_unref_picture(H264Context *h, H264Picture *pic)
Definition: h264_picture.c:46
H264Ref default_ref[2]
Definition: h264dec.h:464
AVBufferPool * ref_index_pool
Definition: h264dec.h:563
uint8_t zigzag_scan8x8_cavlc[64]
Definition: h264dec.h:427
int next_slice_idx
Definition: h264dec.h:240
H264Context.
Definition: h264dec.h:341
int16_t mb_padding[256 *2]
Definition: h264dec.h:315
AVFrame * f
Definition: h264dec.h:129
void ff_h264_set_erpic(ERPicture *dst, H264Picture *src)
Definition: h264_picture.c:130
int nb_ref_modifications[2]
Definition: h264dec.h:280
H264Picture * long_ref[32]
Definition: h264dec.h:466
#define CABAC(h)
Definition: h264dec.h:94
int picture_structure
Definition: h264dec.h:412
#define AV_COPY32(d, s)
Definition: intreadwrite.h:586
MMCOOpcode opcode
Definition: h264dec.h:123
H.264 DSP functions.
unsigned int ref_count[2]
num_ref_idx_l0/1_active_minus1 + 1
Definition: h264dec.h:271
MMCO mmco[MAX_MMCO_COUNT]
Definition: h264dec.h:326
uint8_t * chroma_pred_mode_table
Definition: h264dec.h:421
int setup_finished
Definition: h264dec.h:550
H264SEIContext sei
Definition: h264dec.h:558
#define USES_LIST(a, list)
Definition: mpegutils.h:101
int ref2frm[MAX_SLICES][2][64]
reference to frame number lists, used in the loop filter, the first 2 are for -2,-1 ...
Definition: h264dec.h:564
uint16_t sub_mb_type[4]
as a DCT coefficient is int32_t in high depth, we need to reserve twice the space.
Definition: h264dec.h:308
void ff_h264_draw_horiz_band(const H264Context *h, H264SliceContext *sl, int y, int height)
Definition: h264dec.c:104
int short_pic_num
pic_num without wrapping (pic_num & max_pic_num)
Definition: h264dec.h:124
uint8_t
void ff_h264_direct_dist_scale_factor(const H264Context *const h, H264SliceContext *sl)
Definition: h264_direct.c:52
int slice_alpha_c0_offset
Definition: h264dec.h:198
int poc
Definition: h264dec.h:175
int field_picture
whether or not picture was encoded in separate fields
Definition: h264dec.h:158
int poc
frame POC
Definition: h264dec.h:148
void ff_h264_flush_change(H264Context *h)
Definition: h264dec.c:609
uint8_t(*[2] top_borders)[(16 *3)*2]
Definition: h264dec.h:289
int invalid_gap
Definition: h264dec.h:162
Context for storing H.264 prediction functions.
Definition: h264pred.h:92
void ff_h264_remove_all_refs(H264Context *h)
Definition: h264_refs.c:563
quarterpel DSP functions
int frame_recovered
Initial frame has been completely recovered.
Definition: h264dec.h:540
int map_col_to_list0_field[2][2][16+32]
Definition: h264dec.h:266
int height
Definition: h264dec.h:362
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition: mem.h:101
#define height
int picture_structure
Definition: h264dec.h:244
static av_always_inline int pred_intra_mode(const H264Context *h, H264SliceContext *sl, int n)
Get the predicted intra4x4 prediction mode.
Definition: h264dec.h:701
int chroma_y_shift
Definition: h264dec.h:363
AVBufferRef * qscale_table_buf
Definition: h264dec.h:132
H264Picture * parent
Definition: h264dec.h:178
int recovered
picture at IDR or recovery point + recovery count
Definition: h264dec.h:161
#define AV_COPY64(d, s)
Definition: intreadwrite.h:590
int chroma_qp[2]
Definition: h264dec.h:192
The buffer pool.
const uint8_t * avpriv_find_start_code(const uint8_t *p, const uint8_t *end, uint32_t *state)
int last_pocs[MAX_DELAYED_PIC_COUNT]
Definition: h264dec.h:468
int width
Definition: h264dec.h:362
static av_always_inline void write_back_motion(const H264Context *h, H264SliceContext *sl, int mb_type)
Definition: h264dec.h:789
unsigned int topright_samples_available
Definition: h264dec.h:227
H.264 parameter set handling.
H264PredContext hpc
Definition: h264dec.h:391
int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl)
Init context Allocate buffers which are not shared amongst multiple threads.
Definition: h264dec.c:240
void ff_h264_pred_direct_motion(const H264Context *const h, H264SliceContext *sl, int *mb_type)
Definition: h264_direct.c:707
int16_t * dc_val_base
Definition: h264dec.h:285
int context_initialized
Definition: h264dec.h:376
ERContext er
Definition: h264dec.h:184
int nal_unit_type
Definition: h264dec.h:447
void * hwaccel_picture_private
hardware accelerator private data
Definition: h264dec.h:142
int backup_height
Definition: h264dec.h:370
int map_col_to_list0[2][16+32]
Definition: h264dec.h:265
int8_t intra4x4_pred_mode_cache[5 *8]
Definition: h264dec.h:209
int backup_width
Backup frame properties: needed, because they can be different between returned frame and last decode...
Definition: h264dec.h:369
H2645Packet pkt
Definition: h264dec.h:357
int picture_idr
Definition: h264dec.h:388
int deblocking_filter
disable_deblocking_filter_idc with 1 <-> 0
Definition: h264dec.h:197
uint8_t(*[2] mvd_table)[2]
Definition: h264dec.h:422
int prev_interlaced_frame
Complement sei_pic_struct SEI_PIC_STRUCT_TOP_BOTTOM and SEI_PIC_STRUCT_BOTTOM_TOP indicate interlaced...
Definition: h264dec.h:514
int ref_poc[2][2][32]
POCs of the frames/fields used as reference (FIXME need per slice)
Definition: h264dec.h:155
ThreadFrame tf
Definition: h264dec.h:130
#define IS_SKIP(a)
Definition: mpegutils.h:83
H264QpelContext h264qpel
Definition: h264dec.h:347
int direct_spatial_mv_pred
Definition: h264dec.h:255
unsigned int top_samples_available
Definition: h264dec.h:226
int frame_num
frame_num (raw frame_num from slice header)
Definition: h264dec.h:149
MMCOOpcode
Memory management control operation opcode.
Definition: h264dec.h:109
int ff_h264_decode_ref_pic_list_reordering(H264SliceContext *sl, void *logctx)
Definition: h264_refs.c:421
int valid_recovery_point
Are the SEI recovery points looking valid.
Definition: h264dec.h:519
uint8_t * list_counts
Array of list_count per MB specifying the slice type.
Definition: h264dec.h:415
int ff_h264_get_slice_type(const H264SliceContext *sl)
Reconstruct bitstream slice_type.
Definition: h264_slice.c:2001
static av_always_inline uint16_t pack8to16(unsigned a, unsigned b)
Definition: h264dec.h:681
int slice_type_nos
S free slice type (SI/SP are remapped to I/P)
Definition: h264dec.h:188
uint8_t zigzag_scan8x8[64]
Definition: h264dec.h:426
AVBufferRef * hwaccel_priv_buf
Definition: h264dec.h:141
int crop_left
Definition: h264dec.h:166
uint8_t cabac_state[1024]
Definition: h264dec.h:323
int pic_id
Definition: h264dec.h:176
void ff_h264_init_cabac_states(const H264Context *h, H264SliceContext *sl)
Definition: h264_cabac.c:1263
int16_t mb_luma_dc[3][16 *2]
as mb is addressed by scantable[i] and scantable is uint8_t we can either check that i is not too lar...
Definition: h264dec.h:312
uint8_t * direct_table
Definition: h264dec.h:423
static av_always_inline int get_dct8x8_allowed(const H264Context *h, H264SliceContext *sl)
Definition: h264dec.h:816
int nal_length_size
Number of bytes used for nal length (1, 2 or 4)
Definition: h264dec.h:453
useful rectangle filling function
void ff_h264_direct_ref_list_init(const H264Context *const h, H264SliceContext *sl)
Definition: h264_direct.c:111
AVBufferRef * motion_val_buf[2]
Definition: h264dec.h:135
Context for storing H.264 DSP functions.
Definition: h264dsp.h:42
int chroma_pred_mode
Definition: h264dec.h:206
#define AV_COPY16(d, s)
Definition: intreadwrite.h:582
uint32_t * mb2br_xy
Definition: h264dec.h:405
#define MB_TYPE_DIRECT2
Definition: avcodec.h:1261
#define FFMIN(a, b)
Definition: common.h:96
uint16_t * slice_table
slice_table_base + 2*mb_stride + 1
Definition: h264dec.h:408
void ff_h264_filter_mb(const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize)
uint8_t field_scan8x8_cavlc[64]
Definition: h264dec.h:430
CABACContext cabac
Cabac.
Definition: h264dec.h:322
unsigned int first_mb_addr
Definition: h264dec.h:238
int reference
Definition: h264dec.h:160
#define LEFT_MBS
Definition: h264dec.h:75
int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl, const H2645NAL *nal)
Decode a slice header.
Definition: h264_slice.c:1763
int redundant_pic_count
Definition: h264dec.h:248
int nb_slice_ctx
Definition: h264dec.h:355
H264PredWeightTable pwt
Definition: h264dec.h:201
int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup)
Definition: h264_picture.c:153
int long_ref_count
number of actual long term references
Definition: h264dec.h:480
int ff_h264_decode_mb_cavlc(const H264Context *h, H264SliceContext *sl)
Decode a macroblock.
Definition: h264_cavlc.c:702
uint32_t * mb_type
Definition: h264dec.h:139
int next_mb_skipped
Definition: h264dec.h:204
uint8_t chroma_qp_table[2][QP_MAX_NUM+1]
pre-scaled (with chroma_qp_index_offset) version of qp_table
Definition: h264_ps.h:125
int mmco_reset
Definition: h264dec.h:477
H264SliceContext * slice_ctx
Definition: h264dec.h:354
int direct_8x8_inference_flag
Definition: h264_ps.h:62
int n
Definition: avisynth_c.h:684
int reference
Definition: h264dec.h:174
int top_borders_allocated[2]
Definition: h264dec.h:292
static void fill_rectangle(int x, int y, int w, int h)
Definition: ffplay.c:788
const uint16_t ff_h264_mb_sizes[4]
Definition: h264dec.c:60
#define src
Definition: vp9dsp.c:530
uint8_t * edge_emu_buffer
Definition: h264dec.h:288
uint8_t zigzag_scan_q0[16]
Definition: h264dec.h:431
int bit_depth_luma
luma bit depth from sps to detect changes
Definition: h264dec.h:455
int chroma_format_idc
chroma format from sps to detect changes
Definition: h264dec.h:456
struct H264SliceContext::@66 ref_modifications[2][32]
VideoDSPContext vdsp
Definition: h264dec.h:344
int intra16x16_pred_mode
Definition: h264dec.h:207
int mb_stride
Definition: h264dec.h:440
int postpone_filter
Definition: h264dec.h:383
AVCodecContext * avctx
Definition: h264dec.h:343
uint8_t zigzag_scan8x8_q0[64]
Definition: h264dec.h:432
int ff_h264_build_ref_list(H264Context *h, H264SliceContext *sl)
Definition: h264_refs.c:299
#define MB_TYPE_8x16
Definition: avcodec.h:1258
#define MAX_DELAYED_PIC_COUNT
Definition: h264dec.h:56
int last_qscale_diff
Definition: h264dec.h:194
H264Picture * short_ref[32]
Definition: h264dec.h:465
int next_outputed_poc
Definition: h264dec.h:470
int explicit_ref_marking
Definition: h264dec.h:478
int field_poc[2]
top/bottom POC
Definition: h264dec.h:147
int recovery_frame
recovery_frame is the frame_num at which the next frame should be fully constructed.
Definition: h264dec.h:527
int max_contexts
Max number of threads / contexts.
Definition: h264dec.h:498
main external API structure.
Definition: avcodec.h:1676
int qp_thresh
QP threshold to skip loopfilter.
Definition: h264dec.h:193
int explicit_ref_marking
Definition: h264dec.h:328
static struct @246 state
void * buf
Definition: avisynth_c.h:690
int8_t * qscale_table
Definition: h264dec.h:133
static const uint8_t scan8[16 *3+3]
Definition: h264dec.h:656
Describe the class of an AVClass context structure.
Definition: log.h:67
uint8_t non_zero_count_cache[15 *8]
non zero coeff count cache.
Definition: h264dec.h:298
static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
Definition: h264dec.h:672
int8_t * ref_index[2]
Definition: h264dec.h:145
int pixel_shift
0 for 8-bit H.264, 1 for high-bit-depth H.264
Definition: h264dec.h:359
int mmco_reset
MMCO_RESET set this 1.
Definition: h264dec.h:150
H264Picture * cur_pic_ptr
Definition: h264dec.h:350
#define LIST_NOT_USED
Definition: h264dec.h:395
ptrdiff_t mb_uvlinesize
Definition: h264dec.h:232
refcounted data buffer API
#define FMO
Definition: h264dec.h:62
int mb_mbaff
mb_aff_frame && mb_field_decoding_flag
Definition: h264dec.h:246
uint8_t direct_cache[5 *8]
Definition: h264dec.h:306
int enable_er
Definition: h264dec.h:556
const SPS * sps
Definition: h264_ps.h:144
ptrdiff_t mb_linesize
may be equal to s->linesize or s->linesize * 2, for mbaff
Definition: h264dec.h:231
int16_t slice_row[MAX_SLICES]
to detect when MAX_SLICES is too low
Definition: h264dec.h:554
ptrdiff_t linesize
Definition: h264dec.h:230
int block_offset[2 *(16 *3)]
block_offset[ 0..23] for frame macroblocks block_offset[24..47] for field macroblocks ...
Definition: h264dec.h:402
int linesize[3]
Definition: h264dec.h:172
ptrdiff_t uvlinesize
Definition: h264dec.h:230
H.264 / AVC / MPEG-4 prediction functions.
uint8_t zigzag_scan[16]
Definition: h264dec.h:425
unsigned int list_count
Definition: h264dec.h:272
Definition: vp9.h:84
#define AV_ZERO128(d)
Definition: intreadwrite.h:622
int has_recovery_point
Definition: h264dec.h:542
int ff_h264_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
Definition: h264_slice.c:301
void ff_h264_hl_decode_mb(const H264Context *h, H264SliceContext *sl)
Definition: h264_mb.c:799
int left_type[LEFT_MBS]
Definition: h264dec.h:220
int mbaff
1 -> MBAFF frame 0-> not MBAFF
Definition: h264dec.h:157
A reference to a data buffer.
Definition: buffer.h:81
AVBufferPool * qscale_table_pool
Definition: h264dec.h:560
H264Picture * next_output_pic
Definition: h264dec.h:469
AVBufferPool * motion_val_pool
Definition: h264dec.h:562
static av_always_inline void write_back_non_zero_count(const H264Context *h, H264SliceContext *sl)
Definition: h264dec.h:729
int pic_id
pic_num (short -> no wrap version of pic_num, pic_num & max_pic_num; long -> long_pic_num) ...
Definition: h264dec.h:152
int delta_poc_bottom
Definition: h264dec.h:332
#define MAX_SLICES
The maximum number of slices supported by the decoder.
Definition: h264dec.h:68
common internal api header.
static av_always_inline void write_back_motion_list(const H264Context *h, H264SliceContext *sl, int b_stride, int b_xy, int b8_xy, int mb_type, int list)
Definition: h264dec.h:753
#define AV_COPY128(d, s)
Definition: intreadwrite.h:594
uint16_t * slice_table_base
Definition: h264dec.h:460
int missing_fields
Definition: h264dec.h:544
#define MB_TYPE_8x8
Definition: avcodec.h:1259
H264ParamSets ps
Definition: h264dec.h:458
void ff_h264_free_tables(H264Context *h)
Definition: h264dec.c:139
Bi-dir predicted.
Definition: avutil.h:270
uint8_t op
Definition: h264dec.h:277
int cur_chroma_format_idc
Definition: h264dec.h:552
int8_t * intra4x4_pred_mode
Definition: h264dec.h:210
int long_arg
index, pic_num, or num long refs depending on opcode
Definition: h264dec.h:125
#define MB_TYPE_16x8
Definition: avcodec.h:1257
Core video DSP helper functions.
uint8_t zigzag_scan8x8_cavlc_q0[64]
Definition: h264dec.h:433
int8_t ref_cache[2][5 *8]
Definition: h264dec.h:304
Decoded Picture Buffer (DPB).
Definition: vaapi_h264.c:82
unsigned int pps_id
Definition: h264dec.h:282
#define IS_8X8(a)
Definition: mpegutils.h:91
H264Picture cur_pic
Definition: h264dec.h:351
int mb_width
Definition: h264dec.h:439
int current_slice
current slice number, used to initialize slice_num of each thread/context
Definition: h264dec.h:490
uint32_t * mb2b_xy
Definition: h264dec.h:404
H264Ref ref_list[2][48]
0..15: frame refs, 16..47: mbaff field refs.
Definition: h264dec.h:273
uint8_t field_scan8x8_cavlc_q0[64]
Definition: h264dec.h:436
int cur_bit_depth_luma
Definition: h264dec.h:553
AVBufferRef * ref_index_buf[2]
Definition: h264dec.h:144
H264Picture last_pic_for_ec
Definition: h264dec.h:352
const uint8_t * intra_pcm_ptr
Definition: h264dec.h:284
H264DSPContext h264dsp
Definition: h264dec.h:345
int crop_top
Definition: h264dec.h:167
unsigned int left_samples_available
Definition: h264dec.h:228
int ref_count[2][2]
number of entries in ref_poc (FIXME need per slice)
Definition: h264dec.h:156
uint8_t(*[2] mvd_table)[2]
Definition: h264dec.h:317
uint8_t field_scan8x8[64]
Definition: h264dec.h:429
int slice_type_fixed
Definition: h264dec.h:189
int ff_h264_execute_decode_slices(H264Context *h, unsigned context_count)
Call decode_slice() for each context.
Definition: h264_slice.c:2588
#define av_always_inline
Definition: attributes.h:39
int slice_beta_offset
Definition: h264dec.h:199
int8_t * intra4x4_pred_mode
Definition: h264dec.h:390
int dist_scale_factor_field[2][32]
Definition: h264dec.h:264
int delta_poc[2]
Definition: h264dec.h:333
int ff_h264_decode_init(AVCodecContext *avctx)
Definition: h264dec.c:394
#define AV_RN64A(p)
Definition: intreadwrite.h:530
uint8_t field_scan_q0[16]
Definition: h264dec.h:434
int mb_field_decoding_flag
Definition: h264dec.h:245
uint8_t(* non_zero_count)[48]
Definition: h264dec.h:393
H.264 decoder/parser shared code.
uint8_t * bipred_scratchpad
Definition: h264dec.h:287
float min
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60
int droppable
Definition: h264dec.h:373
int nal_ref_idc
Definition: h264dec.h:446
GetBitContext gb
Definition: h264dec.h:183
uint8_t field_scan[16]
Definition: h264dec.h:428
uint32_t val
Definition: h264dec.h:278
int cabac_init_idc
Definition: h264dec.h:324
int b_stride
Definition: h264dec.h:406
Context Adaptive Binary Arithmetic Coder.
static av_always_inline void write_back_intra_pred_mode(const H264Context *h, H264SliceContext *sl)
Definition: h264dec.h:717
#define H264_MAX_PICTURE_COUNT
Definition: h264dec.h:52
#define MAX_MMCO_COUNT
Definition: h264dec.h:54
int short_ref_count
number of actual short term references
Definition: h264dec.h:481