FFmpeg
cbs_vp9_syntax_template.c
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
20  VP9RawFrameHeader *current)
21 {
22  int err;
23 
24  fixed(8, frame_sync_byte_0, VP9_FRAME_SYNC_0);
25  fixed(8, frame_sync_byte_1, VP9_FRAME_SYNC_1);
26  fixed(8, frame_sync_byte_2, VP9_FRAME_SYNC_2);
27 
28  return 0;
29 }
30 
32  VP9RawFrameHeader *current, int profile)
33 {
35  int err;
36 
37  if (profile >= 2) {
38  f(1, ten_or_twelve_bit);
39  vp9->bit_depth = current->ten_or_twelve_bit ? 12 : 10;
40  } else
41  vp9->bit_depth = 8;
42 
43  f(3, color_space);
44 
45  if (current->color_space != VP9_CS_RGB) {
46  f(1, color_range);
47  if (profile == 1 || profile == 3) {
48  f(1, subsampling_x);
49  f(1, subsampling_y);
50  fixed(1, reserved_zero, 0);
51  } else {
52  infer(subsampling_x, 1);
53  infer(subsampling_y, 1);
54  }
55  } else {
56  infer(color_range, 1);
57  if (profile == 1 || profile == 3) {
58  infer(subsampling_x, 0);
59  infer(subsampling_y, 0);
60  fixed(1, reserved_zero, 0);
61  }
62  }
63 
64  vp9->subsampling_x = current->subsampling_x;
65  vp9->subsampling_y = current->subsampling_y;
66 
67  return 0;
68 }
69 
71  VP9RawFrameHeader *current)
72 {
74  int err;
75 
76  f(16, frame_width_minus_1);
77  f(16, frame_height_minus_1);
78 
79  vp9->frame_width = current->frame_width_minus_1 + 1;
80  vp9->frame_height = current->frame_height_minus_1 + 1;
81 
82  vp9->mi_cols = (vp9->frame_width + 7) >> 3;
83  vp9->mi_rows = (vp9->frame_height + 7) >> 3;
84  vp9->sb64_cols = (vp9->mi_cols + 7) >> 3;
85  vp9->sb64_rows = (vp9->mi_rows + 7) >> 3;
86 
87  return 0;
88 }
89 
91  VP9RawFrameHeader *current)
92 {
93  int err;
94 
95  f(1, render_and_frame_size_different);
96 
97  if (current->render_and_frame_size_different) {
98  f(16, render_width_minus_1);
99  f(16, render_height_minus_1);
100  }
101 
102  return 0;
103 }
104 
106  VP9RawFrameHeader *current)
107 {
109  int err, i;
110 
111  for (i = 0; i < VP9_REFS_PER_FRAME; i++) {
112  fs(1, found_ref[i], 1, i);
113  if (current->found_ref[i]) {
115  &vp9->ref[current->ref_frame_idx[i]];
116 
117  vp9->frame_width = ref->frame_width;
118  vp9->frame_height = ref->frame_height;
119 
120  vp9->subsampling_x = ref->subsampling_x;
121  vp9->subsampling_y = ref->subsampling_y;
122  vp9->bit_depth = ref->bit_depth;
123 
124  break;
125  }
126  }
127  if (i >= VP9_REFS_PER_FRAME)
128  CHECK(FUNC(frame_size)(ctx, rw, current));
129  else {
130  vp9->mi_cols = (vp9->frame_width + 7) >> 3;
131  vp9->mi_rows = (vp9->frame_height + 7) >> 3;
132  vp9->sb64_cols = (vp9->mi_cols + 7) >> 3;
133  vp9->sb64_rows = (vp9->mi_rows + 7) >> 3;
134  }
135  CHECK(FUNC(render_size)(ctx, rw, current));
136 
137  return 0;
138 }
139 
141  VP9RawFrameHeader *current)
142 {
143  int err;
144 
145  f(1, is_filter_switchable);
146  if (!current->is_filter_switchable)
147  f(2, raw_interpolation_filter_type);
148 
149  return 0;
150 }
151 
153  VP9RawFrameHeader *current)
154 {
155  int err, i;
156 
157  f(6, loop_filter_level);
158  f(3, loop_filter_sharpness);
159 
160  f(1, loop_filter_delta_enabled);
161  if (current->loop_filter_delta_enabled) {
162  f(1, loop_filter_delta_update);
163  if (current->loop_filter_delta_update) {
164  for (i = 0; i < VP9_MAX_REF_FRAMES; i++) {
165  fs(1, update_ref_delta[i], 1, i);
166  if (current->update_ref_delta[i])
167  ss(6, loop_filter_ref_deltas[i], 1, i);
168  }
169  for (i = 0; i < 2; i++) {
170  fs(1, update_mode_delta[i], 1, i);
171  if (current->update_mode_delta[i])
172  ss(6, loop_filter_mode_deltas[i], 1, i);
173  }
174  }
175  } else {
176  infer(loop_filter_delta_update, 0);
177  }
178 
179  return 0;
180 }
181 
183  VP9RawFrameHeader *current)
184 {
185  int err;
186 
187  f(8, base_q_idx);
188 
189  delta_q(delta_q_y_dc);
190  delta_q(delta_q_uv_dc);
191  delta_q(delta_q_uv_ac);
192 
193  return 0;
194 }
195 
197  VP9RawFrameHeader *current)
198 {
199  static const uint8_t segmentation_feature_bits[VP9_SEG_LVL_MAX] = { 8, 6, 2, 0 };
200  static const uint8_t segmentation_feature_signed[VP9_SEG_LVL_MAX] = { 1, 1, 0, 0 };
201  int err, i, j;
202 
203  f(1, segmentation_enabled);
204 
205  if (current->segmentation_enabled) {
206  f(1, segmentation_update_map);
207  if (current->segmentation_update_map) {
208  for (i = 0; i < 7; i++)
209  prob(segmentation_tree_probs[i], 1, i);
210  f(1, segmentation_temporal_update);
211  for (i = 0; i < 3; i++) {
212  if (current->segmentation_temporal_update)
213  prob(segmentation_pred_prob[i], 1, i);
214  else
215  infer(segmentation_pred_prob[i], 255);
216  }
217  }
218 
219  f(1, segmentation_update_data);
220  if (current->segmentation_update_data) {
221  f(1, segmentation_abs_or_delta_update);
222  for (i = 0; i < VP9_MAX_SEGMENTS; i++) {
223  for (j = 0; j < VP9_SEG_LVL_MAX; j++) {
224  fs(1, feature_enabled[i][j], 2, i, j);
225  if (current->feature_enabled[i][j] &&
226  segmentation_feature_bits[j]) {
227  fs(segmentation_feature_bits[j],
228  feature_value[i][j], 2, i, j);
229  if (segmentation_feature_signed[j])
230  fs(1, feature_sign[i][j], 2, i, j);
231  else
232  infer(feature_sign[i][j], 0);
233  } else {
234  infer(feature_value[i][j], 0);
235  infer(feature_sign[i][j], 0);
236  }
237  }
238  }
239  }
240  } else {
241  infer(segmentation_update_data, 0);
242  }
243 
244  return 0;
245 }
246 
248  VP9RawFrameHeader *current)
249 {
251  int min_log2_tile_cols, max_log2_tile_cols;
252  int err;
253 
254  min_log2_tile_cols = 0;
255  while ((VP9_MAX_TILE_WIDTH_B64 << min_log2_tile_cols) < vp9->sb64_cols)
256  ++min_log2_tile_cols;
257  max_log2_tile_cols = 0;
258  while ((vp9->sb64_cols >> (max_log2_tile_cols + 1)) >= VP9_MIN_TILE_WIDTH_B64)
259  ++max_log2_tile_cols;
260 
261  increment(tile_cols_log2, min_log2_tile_cols, max_log2_tile_cols);
262 
263  increment(tile_rows_log2, 0, 2);
264 
265  return 0;
266 }
267 
269  VP9RawFrameHeader *current)
270 {
272  int err, i;
273 
274  f(2, frame_marker);
275 
276  f(1, profile_low_bit);
277  f(1, profile_high_bit);
278  vp9->profile = (current->profile_high_bit << 1) + current->profile_low_bit;
279  if (vp9->profile == 3)
280  fixed(1, reserved_zero, 0);
281 
282  f(1, show_existing_frame);
283  if (current->show_existing_frame) {
284  f(3, frame_to_show_map_idx);
285  infer(header_size_in_bytes, 0);
286  infer(refresh_frame_flags, 0x00);
287  infer(loop_filter_level, 0);
288  return 0;
289  }
290 
291  f(1, frame_type);
292  f(1, show_frame);
293  f(1, error_resilient_mode);
294 
295  if (current->frame_type == VP9_KEY_FRAME) {
296  CHECK(FUNC(frame_sync_code)(ctx, rw, current));
297  CHECK(FUNC(color_config)(ctx, rw, current, vp9->profile));
298  CHECK(FUNC(frame_size)(ctx, rw, current));
299  CHECK(FUNC(render_size)(ctx, rw, current));
300 
301  infer(refresh_frame_flags, 0xff);
302 
303  } else {
304  if (current->show_frame == 0)
305  f(1, intra_only);
306  else
307  infer(intra_only, 0);
308 
309  if (current->error_resilient_mode == 0)
310  f(2, reset_frame_context);
311  else
312  infer(reset_frame_context, 0);
313 
314  if (current->intra_only == 1) {
315  CHECK(FUNC(frame_sync_code)(ctx, rw, current));
316 
317  if (vp9->profile > 0) {
318  CHECK(FUNC(color_config)(ctx, rw, current, vp9->profile));
319  } else {
320  infer(color_space, 1);
321  infer(subsampling_x, 1);
322  infer(subsampling_y, 1);
323  vp9->bit_depth = 8;
324 
325  vp9->subsampling_x = current->subsampling_x;
326  vp9->subsampling_y = current->subsampling_y;
327  }
328 
329  f(8, refresh_frame_flags);
330 
331  CHECK(FUNC(frame_size)(ctx, rw, current));
332  CHECK(FUNC(render_size)(ctx, rw, current));
333  } else {
334  f(8, refresh_frame_flags);
335 
336  for (i = 0; i < VP9_REFS_PER_FRAME; i++) {
337  fs(3, ref_frame_idx[i], 1, i);
338  fs(1, ref_frame_sign_bias[VP9_LAST_FRAME + i],
339  1, VP9_LAST_FRAME + i);
340  }
341 
342  CHECK(FUNC(frame_size_with_refs)(ctx, rw, current));
343  f(1, allow_high_precision_mv);
344  CHECK(FUNC(interpolation_filter)(ctx, rw, current));
345  }
346  }
347 
348  if (current->error_resilient_mode == 0) {
349  f(1, refresh_frame_context);
350  f(1, frame_parallel_decoding_mode);
351  } else {
352  infer(refresh_frame_context, 0);
353  infer(frame_parallel_decoding_mode, 1);
354  }
355 
356  f(2, frame_context_idx);
357 
358  CHECK(FUNC(loop_filter_params)(ctx, rw, current));
359  CHECK(FUNC(quantization_params)(ctx, rw, current));
360  CHECK(FUNC(segmentation_params)(ctx, rw, current));
361  CHECK(FUNC(tile_info)(ctx, rw, current));
362 
363  f(16, header_size_in_bytes);
364 
365  for (i = 0; i < VP9_NUM_REF_FRAMES; i++) {
366  if (current->refresh_frame_flags & (1 << i)) {
367  vp9->ref[i] = (VP9ReferenceFrameState) {
368  .frame_width = vp9->frame_width,
369  .frame_height = vp9->frame_height,
370  .subsampling_x = vp9->subsampling_x,
371  .subsampling_y = vp9->subsampling_y,
372  .bit_depth = vp9->bit_depth,
373  };
374  }
375  }
376 
377  // Update top-level loop filter and segmentation state with changes
378  // from this frame.
379  if (current->frame_type == VP9_KEY_FRAME ||
380  current->intra_only ||
381  current->error_resilient_mode) {
382  // setup_past_independence() - fill with the initial values.
383 
388 
389  vp9->loop_filter_mode_deltas[0] = 0;
390  vp9->loop_filter_mode_deltas[1] = 0;
391 
392  memset(vp9->feature_enabled, 0, sizeof(vp9->feature_enabled));
393  memset(vp9->feature_value, 0, sizeof(vp9->feature_value));
394  memset(vp9->feature_sign, 0, sizeof(vp9->feature_sign));
395 
396  } else {
397  // Modify previous state based on updates in this frame.
398 
399  if (current->loop_filter_delta_update) {
400  for (i = 0; i < 4; i++) {
401  if (current->update_ref_delta[i])
402  vp9->loop_filter_ref_deltas[i] =
403  current->loop_filter_ref_deltas[i];
404  }
405  for (i = 0; i < 2; i++) {
406  if (current->update_mode_delta[i])
407  vp9->loop_filter_mode_deltas[i] =
408  current->loop_filter_mode_deltas[i];
409  }
410  }
411 
412  if (current->segmentation_update_data) {
413  memcpy(vp9->feature_enabled, current->feature_enabled,
414  sizeof(vp9->feature_enabled));
415  memcpy(vp9->feature_value, current->feature_value,
416  sizeof(vp9->feature_value));
417  memcpy(vp9->feature_sign, current->feature_sign,
418  sizeof(vp9->feature_sign));
419 
420  if (current->segmentation_update_map) {
421  memcpy(vp9->segmentation_tree_probs,
422  current->segmentation_tree_probs,
423  sizeof(vp9->segmentation_tree_probs));
424  memcpy(vp9->segmentation_pred_prob,
425  current->segmentation_pred_prob,
426  sizeof(vp9->segmentation_pred_prob));
427  }
428  }
429  }
430 
431  av_log(ctx->log_ctx, AV_LOG_DEBUG, "Frame: size %dx%d "
432  "subsample %dx%d bit_depth %d tiles %dx%d.\n",
433  vp9->frame_width, vp9->frame_height,
434  vp9->subsampling_x, vp9->subsampling_y,
435  vp9->bit_depth, 1 << current->tile_cols_log2,
436  1 << current->tile_rows_log2);
437 
438  return 0;
439 }
440 
442 {
443  int err;
444  while (byte_alignment(rw) != 0)
445  fixed(1, zero_bit, 0);
446 
447  return 0;
448 }
449 
451  VP9RawFrame *current)
452 {
453  int err;
454 
455  HEADER("Frame");
456 
457  CHECK(FUNC(uncompressed_header)(ctx, rw, &current->header));
458 
459  CHECK(FUNC(trailing_bits)(ctx, rw));
460 
461  return 0;
462 }
463 
465  VP9RawSuperframeIndex *current)
466 {
467  int err, i;
468 
469  HEADER("Superframe Index");
470 
471  f(3, superframe_marker);
472  f(2, bytes_per_framesize_minus_1);
473  f(3, frames_in_superframe_minus_1);
474 
475  for (i = 0; i <= current->frames_in_superframe_minus_1; i++) {
476  // Surprise little-endian!
477  fle(8 * (current->bytes_per_framesize_minus_1 + 1),
478  frame_sizes[i], 1, i);
479  }
480 
481  f(3, superframe_marker);
482  f(2, bytes_per_framesize_minus_1);
483  f(3, frames_in_superframe_minus_1);
484 
485  return 0;
486 }
render_size
static int FUNC() render_size(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:90
CodedBitstreamVP9Context::frame_width
int frame_width
Definition: cbs_vp9.h:202
tile_info
static int FUNC() tile_info(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:247
segmentation_params
static int FUNC() segmentation_params(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:196
CodedBitstreamContext
Context structure for coded bitstream operations.
Definition: cbs.h:226
VP9_KEY_FRAME
@ VP9_KEY_FRAME
Definition: cbs_vp9.h:44
CodedBitstreamVP9Context::sb64_rows
uint16_t sb64_rows
Definition: cbs_vp9.h:200
infer
#define infer(name, value)
Definition: cbs_apv.c:127
CodedBitstreamVP9Context::feature_sign
uint8_t feature_sign[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]
Definition: cbs_vp9.h:215
CodedBitstreamVP9Context::ref
VP9ReferenceFrameState ref[VP9_NUM_REF_FRAMES]
Definition: cbs_vp9.h:217
VP9_MIN_TILE_WIDTH_B64
@ VP9_MIN_TILE_WIDTH_B64
Definition: cbs_vp9.h:32
intra_only
int8_t intra_only
Definition: mxfenc.c:2477
CHECK
CHECK(-1) CHECK(-2) }} }} CHECK(1) CHECK(2) }} }} } if(diff0+diff1 > 0) temp -
ss
#define ss(width, name, subs,...)
Definition: cbs_vp9.c:202
increment
#define increment(name, min, max)
Definition: cbs_av1.c:645
VP9ReferenceFrameState
Definition: cbs_vp9.h:184
VP9_LAST_FRAME
@ VP9_LAST_FRAME
Definition: cbs_vp9.h:70
VP9_ALTREF_FRAME
@ VP9_ALTREF_FRAME
Definition: cbs_vp9.h:72
show_frame
static void show_frame(AVTextFormatContext *tfc, AVFrame *frame, AVStream *stream, AVFormatContext *fmt_ctx)
Definition: ffprobe.c:1353
HEADER
#define HEADER(name)
Definition: cbs_apv.c:55
VP9_FRAME_SYNC_0
@ VP9_FRAME_SYNC_0
Definition: cbs_vp9.h:50
VP9_FRAME_SYNC_1
@ VP9_FRAME_SYNC_1
Definition: cbs_vp9.h:51
AV_LOG_DEBUG
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
Definition: log.h:231
ctx
AVFormatContext * ctx
Definition: movenc.c:49
CodedBitstreamVP9Context::segmentation_pred_prob
uint8_t segmentation_pred_prob[3]
Definition: cbs_vp9.h:212
VP9RawFrameHeader
Definition: cbs_vp9.h:83
color_range
color_range
Definition: vf_selectivecolor.c:43
CodedBitstreamVP9Context::mi_rows
uint16_t mi_rows
Definition: cbs_vp9.h:197
if
if(ret)
Definition: filter_design.txt:179
VP9_CS_RGB
@ VP9_CS_RGB
Definition: cbs_vp9.h:64
fs
#define fs(width, name, subs,...)
Definition: cbs_vp9.c:200
CodedBitstreamVP9Context::mi_cols
uint16_t mi_cols
Definition: cbs_vp9.h:196
frame_sync_code
static int FUNC() frame_sync_code(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:19
CodedBitstreamVP9Context::subsampling_y
uint8_t subsampling_y
Definition: cbs_vp9.h:206
loop_filter_params
static int FUNC() loop_filter_params(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:152
VP9RawSuperframeIndex
Definition: cbs_vp9.h:172
superframe_index
static int FUNC() superframe_index(CodedBitstreamContext *ctx, RWContext *rw, VP9RawSuperframeIndex *current)
Definition: cbs_vp9_syntax_template.c:464
interpolation_filter
static int FUNC() interpolation_filter(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:140
CodedBitstreamVP9Context::loop_filter_mode_deltas
int8_t loop_filter_mode_deltas[2]
Definition: cbs_vp9.h:210
quantization_params
static int FUNC() quantization_params(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:182
VP9RawFrame
Definition: cbs_vp9.h:164
VP9_MAX_SEGMENTS
@ VP9_MAX_SEGMENTS
Definition: cbs_vp9.h:38
frame_sizes
static const uint8_t frame_sizes[]
Definition: rtpdec_qcelp.c:24
VP9_NUM_REF_FRAMES
@ VP9_NUM_REF_FRAMES
Definition: cbs_vp9.h:35
f
f
Definition: af_crystalizer.c:122
CodedBitstreamVP9Context::bit_depth
int bit_depth
Definition: cbs_vp9.h:207
CodedBitstreamVP9Context::profile
int profile
Definition: cbs_vp9.h:193
VP9_FRAME_SYNC_2
@ VP9_FRAME_SYNC_2
Definition: cbs_vp9.h:52
VP9_MAX_TILE_WIDTH_B64
@ VP9_MAX_TILE_WIDTH_B64
Definition: cbs_vp9.h:33
frame_size
static int FUNC() frame_size(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:70
VP9_MAX_REF_FRAMES
@ VP9_MAX_REF_FRAMES
Definition: cbs_vp9.h:36
CodedBitstreamVP9Context
Definition: cbs_vp9.h:192
fixed
#define fixed(width, name, value)
Definition: cbs_apv.c:77
frame_size_with_refs
static int FUNC() frame_size_with_refs(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:105
CodedBitstreamVP9Context::subsampling_x
uint8_t subsampling_x
Definition: cbs_vp9.h:205
trailing_bits
static int FUNC() trailing_bits(CodedBitstreamContext *ctx, RWContext *rw)
Definition: cbs_vp9_syntax_template.c:441
CodedBitstreamVP9Context::loop_filter_ref_deltas
int8_t loop_filter_ref_deltas[VP9_MAX_REF_FRAMES]
Definition: cbs_vp9.h:209
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
frame_type
frame_type
Definition: jpeg2000_parser.c:31
VP9_SEG_LVL_MAX
@ VP9_SEG_LVL_MAX
Definition: cbs_vp9.h:39
color_config
static int FUNC() color_config(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current, int profile)
Definition: cbs_vp9_syntax_template.c:31
CodedBitstreamVP9Context::frame_height
int frame_height
Definition: cbs_vp9.h:203
profile
int profile
Definition: mxfenc.c:2278
VP9ReferenceFrameState::frame_width
int frame_width
Definition: cbs_vp9.h:185
delta_q
#define delta_q(name)
Definition: cbs_av1.c:656
prob
#define prob(name, subs,...)
Definition: cbs_vp9.c:325
byte_alignment
#define byte_alignment(rw)
Definition: cbs_apv.c:137
fle
#define fle(width, name, subs,...)
Definition: cbs_vp9.c:314
uncompressed_header
static int FUNC() uncompressed_header(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrameHeader *current)
Definition: cbs_vp9_syntax_template.c:268
RWContext
#define RWContext
Definition: cbs_apv.c:117
VP9_REFS_PER_FRAME
@ VP9_REFS_PER_FRAME
Definition: cbs_vp9.h:30
FUNC
#define FUNC(a)
Definition: bit_depth_template.c:101
CodedBitstreamVP9Context::feature_value
uint8_t feature_value[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]
Definition: cbs_vp9.h:214
VP9_GOLDEN_FRAME
@ VP9_GOLDEN_FRAME
Definition: cbs_vp9.h:71
ref
static int ref[MAX_W *MAX_W]
Definition: jpeg2000dwt.c:117
CodedBitstreamVP9Context::sb64_cols
uint16_t sb64_cols
Definition: cbs_vp9.h:199
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
VP9_INTRA_FRAME
@ VP9_INTRA_FRAME
Definition: cbs_vp9.h:69
CodedBitstreamVP9Context::segmentation_tree_probs
uint8_t segmentation_tree_probs[7]
Definition: cbs_vp9.h:211
AVFormatContext::priv_data
void * priv_data
Format private data.
Definition: avformat.h:1292
CodedBitstreamVP9Context::feature_enabled
uint8_t feature_enabled[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]
Definition: cbs_vp9.h:213
frame
static int FUNC() frame(CodedBitstreamContext *ctx, RWContext *rw, VP9RawFrame *current)
Definition: cbs_vp9_syntax_template.c:450