FFmpeg
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
cbs_apv_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  APVRawPBUHeader *current)
21 {
22  int err;
23 
24  ub(8, pbu_type);
25  ub(16, group_id);
26  u(8, reserved_zero_8bits, 0, 0);
27 
28  return 0;
29 }
30 
32 {
33  int err;
34 
35  while (byte_alignment(rw) != 0)
36  fixed(1, alignment_bit_equal_to_zero, 0);
37 
38  return 0;
39 }
40 
42  APVRawFiller *current)
43 {
44  int err;
45 
46 #ifdef READ
47  current->filler_size = 0;
48  while (show_bits(rw, 8) == 0xff) {
49  fixed(8, ff_byte, 0xff);
50  ++current->filler_size;
51  }
52 #else
53  {
54  uint32_t i;
55  for (i = 0; i < current->filler_size; i++)
56  fixed(8, ff_byte, 0xff);
57  }
58 #endif
59 
60  return 0;
61 }
62 
64  APVRawFrameInfo *current)
65 {
66  int err;
67 
68  ub(8, profile_idc);
69  ub(8, level_idc);
70  ub(3, band_idc);
71 
72  u(5, reserved_zero_5bits, 0, 0);
73 
74  ub(24, frame_width);
75  ub(24, frame_height);
76 
77  u(4, chroma_format_idc, 0, 4);
78  if (current->chroma_format_idc == 1) {
79  av_log(ctx->log_ctx, AV_LOG_ERROR,
80  "chroma_format_idc 1 for 4:2:0 is not allowed in APV.\n");
81  return AVERROR_INVALIDDATA;
82  }
83 
84  u(4, bit_depth_minus8, 2, 8);
85 
86  ub(8, capture_time_distance);
87 
88  u(8, reserved_zero_8bits, 0, 0);
89 
90  return 0;
91 }
92 
94  RWContext *rw,
95  APVRawQuantizationMatrix *current)
96 {
97  const CodedBitstreamAPVContext *priv = ctx->priv_data;
98  int err;
99 
100  for (int c = 0; c < priv->num_comp; c++) {
101  for (int y = 0; y < 8; y++) {
102  for (int x = 0; x < 8 ; x++) {
103  us(8, q_matrix[c][x][y], 1, 255, 3, c, x, y);
104  }
105  }
106  }
107 
108  return 0;
109 }
110 
112  APVRawTileInfo *current,
113  const APVRawFrameHeader *fh)
114 {
116  int frame_width_in_mbs = (fh->frame_info.frame_width + 15) / 16;
117  int frame_height_in_mbs = (fh->frame_info.frame_height + 15) / 16;
118  uint32_t min_tile_width = FFMAX(APV_MIN_TILE_WIDTH_IN_MBS,
119  (frame_width_in_mbs + APV_MAX_TILE_COLS - 1) /
121  uint32_t min_tile_height = FFMAX(APV_MIN_TILE_HEIGHT_IN_MBS,
122  (frame_height_in_mbs + APV_MAX_TILE_ROWS - 1) /
124  int err;
125 
126  u(20, tile_width_in_mbs, min_tile_width, MAX_UINT_BITS(20));
127  u(20, tile_height_in_mbs, min_tile_height, MAX_UINT_BITS(20));
128 
129  ub(1, tile_size_present_in_fh_flag);
130 
132 
133  if (current->tile_size_present_in_fh_flag) {
134  for (int t = 0; t < priv->tile_info.num_tiles; t++) {
135  us(32, tile_size_in_fh[t], 10, MAX_UINT_BITS(32), 1, t);
136  }
137  }
138 
139  return 0;
140 }
141 
143  APVRawFrameHeader *current)
144 {
146  int err;
147 
148  CHECK(FUNC(frame_info)(ctx, rw, &current->frame_info));
149 
150  u(8, reserved_zero_8bits, 0, 0);
151 
152  ub(1, color_description_present_flag);
153  if (current->color_description_present_flag) {
154  ub(8, color_primaries);
156  ub(8, matrix_coefficients);
157  ub(1, full_range_flag);
158  } else {
161  infer(matrix_coefficients, 2);
162  infer(full_range_flag, 0);
163  }
164 
165  priv->bit_depth = current->frame_info.bit_depth_minus8 + 8;
166  priv->num_comp = cbs_apv_get_num_comp(current);
167 
168  ub(1, use_q_matrix);
169  if (current->use_q_matrix) {
171  &current->quantization_matrix));
172  } else {
173  for (int c = 0; c < priv->num_comp; c++) {
174  for (int y = 0; y < 8; y++) {
175  for (int x = 0; x < 8 ; x++) {
176  infer(quantization_matrix.q_matrix[c][y][x], 16);
177  }
178  }
179  }
180  }
181 
182  CHECK(FUNC(tile_info)(ctx, rw, &current->tile_info, current));
183 
184  u(8, reserved_zero_8bits_2, 0, 0);
185 
186  CHECK(FUNC(byte_alignment)(ctx, rw));
187 
188  return 0;
189 }
190 
192  APVRawTileHeader *current,
193  int tile_idx, uint32_t tile_size)
194 {
195  const CodedBitstreamAPVContext *priv = ctx->priv_data;
196  uint16_t expected_tile_header_size;
197  uint32_t tile_size_remaining;
198  uint8_t max_qp;
199  int err;
200 
201  expected_tile_header_size = 4 + priv->num_comp * (4 + 1) + 1;
202 
203  u(16, tile_header_size,
204  expected_tile_header_size, expected_tile_header_size);
205 
206  u(16, tile_index, tile_idx, tile_idx);
207 
208  tile_size_remaining = tile_size - current->tile_header_size;
209  for (int c = 0; c < priv->num_comp; c++) {
210  us(32, tile_data_size[c], 1, tile_size_remaining, 1, c);
211  tile_size_remaining -= current->tile_data_size[c];
212  }
213 
214  max_qp = 3 + priv->bit_depth * 6;
215  for (int c = 0; c < priv->num_comp; c++) {
216  us(8, tile_qp[c], 0, max_qp, 1, c);
217  }
218 
219  u(8, reserved_zero_8bits, 0, 0);
220 
221  return 0;
222 }
223 
225  APVRawTile *current,
226  int tile_idx, uint32_t tile_size)
227 {
228  const CodedBitstreamAPVContext *priv = ctx->priv_data;
229  int err;
230 
231  CHECK(FUNC(tile_header)(ctx, rw, &current->tile_header,
232  tile_idx, tile_size));
233 
234  for (int c = 0; c < priv->num_comp; c++) {
235  uint32_t comp_size = current->tile_header.tile_data_size[c];
236 #ifdef READ
237  int pos = get_bits_count(rw);
238  av_assert0(pos % 8 == 0);
239  current->tile_data[c] = (uint8_t*)align_get_bits(rw);
240  skip_bits_long(rw, 8 * comp_size);
241 #else
242  if (put_bytes_left(rw, 0) < comp_size)
243  return AVERROR(ENOSPC);
244  ff_copy_bits(rw, current->tile_data[c], comp_size * 8);
245 #endif
246  }
247 
248  return 0;
249 }
250 
252  APVRawFrame *current)
253 {
254  const CodedBitstreamAPVContext *priv = ctx->priv_data;
255  int err;
256 
257  HEADER("Frame");
258 
259  CHECK(FUNC(pbu_header)(ctx, rw, &current->pbu_header));
260 
261  CHECK(FUNC(frame_header)(ctx, rw, &current->frame_header));
262 
263  for (int t = 0; t < priv->tile_info.num_tiles; t++) {
264  us(32, tile_size[t], 10, MAX_UINT_BITS(32), 1, t);
265 
266  CHECK(FUNC(tile)(ctx, rw, &current->tile[t],
267  t, current->tile_size[t]));
268  }
269 
270  CHECK(FUNC(filler)(ctx, rw, &current->filler));
271 
272  return 0;
273 }
274 
276  APVRawAUInfo *current)
277 {
278  int err;
279 
280  HEADER("Access Unit Information");
281 
282  u(16, num_frames, 1, CBS_APV_MAX_AU_FRAMES);
283 
284  for (int i = 0; i < current->num_frames; i++) {
285  ubs(8, pbu_type[i], 1, i);
286  ubs(8, group_id[i], 1, i);
287 
288  us(8, reserved_zero_8bits[i], 0, 0, 1, i);
289 
290  CHECK(FUNC(frame_info)(ctx, rw, &current->frame_info[i]));
291  }
292 
293  u(8, reserved_zero_8bits_2, 0, 0);
294 
295  return 0;
296 }
297 
299  RWContext *rw,
300  APVRawMetadataITUTT35 *current,
301  size_t payload_size)
302 {
303  int err;
304  size_t read_size = payload_size - 1;
305 
306  HEADER("ITU-T T.35 Metadata");
307 
308  ub(8, itu_t_t35_country_code);
309 
310  if (current->itu_t_t35_country_code == 0xff) {
311  ub(8, itu_t_t35_country_code_extension);
312  --read_size;
313  }
314 
315 #ifdef READ
316  current->data_size = read_size;
317  current->data_ref = av_buffer_alloc(current->data_size);
318  if (!current->data_ref)
319  return AVERROR(ENOMEM);
320  current->data = current->data_ref->data;
321 #else
322  if (current->data_size != read_size) {
323  av_log(ctx->log_ctx, AV_LOG_ERROR, "Write size mismatch: "
324  "payload %zu but expecting %zu\n",
325  current->data_size, read_size);
326  return AVERROR(EINVAL);
327  }
328 #endif
329 
330  for (size_t i = 0; i < current->data_size; i++) {
331  xu(8, itu_t_t35_payload[i],
332  current->data[i], 0x00, 0xff, 1, i);
333  }
334 
335  return 0;
336 }
337 
339  RWContext *rw,
340  APVRawMetadataMDCV *current)
341 {
342  int err, i;
343 
344  HEADER("MDCV Metadata");
345 
346  for (i = 0; i < 3; i++) {
347  ubs(16, primary_chromaticity_x[i], 1, i);
348  ubs(16, primary_chromaticity_y[i], 1, i);
349  }
350 
351  ub(16, white_point_chromaticity_x);
352  ub(16, white_point_chromaticity_y);
353 
354  ub(32, max_mastering_luminance);
355  ub(32, min_mastering_luminance);
356 
357  return 0;
358 }
359 
361  RWContext *rw,
362  APVRawMetadataCLL *current)
363 {
364  int err;
365 
366  HEADER("CLL Metadata");
367 
368  ub(16, max_cll);
369  ub(16, max_fall);
370 
371  return 0;
372 }
373 
375  RWContext *rw,
376  APVRawMetadataFiller *current,
377  size_t payload_size)
378 {
379  int err;
380 
381  HEADER("Filler Metadata");
382 
383  for (size_t i = 0; i < payload_size; i++)
384  fixed(8, ff_byte, 0xff);
385 
386  return 0;
387 }
388 
390  RWContext *rw,
391  APVRawMetadataUserDefined *current,
392  size_t payload_size)
393 {
394  int err;
395 
396  HEADER("User-Defined Metadata");
397 
398  for (int i = 0; i < 16; i++)
399  ubs(8, uuid[i], 1, i);
400 
401 #ifdef READ
402  current->data_size = payload_size - 16;
403  current->data_ref = av_buffer_alloc(current->data_size);
404  if (!current->data_ref)
405  return AVERROR(ENOMEM);
406  current->data = current->data_ref->data;
407 #else
408  if (current->data_size != payload_size - 16) {
409  av_log(ctx->log_ctx, AV_LOG_ERROR, "Write size mismatch: "
410  "payload %zu but expecting %zu\n",
411  current->data_size, payload_size - 16);
412  return AVERROR(EINVAL);
413  }
414 #endif
415 
416  for (size_t i = 0; i < current->data_size; i++) {
417  xu(8, user_defined_data_payload[i],
418  current->data[i], 0x00, 0xff, 1, i);
419  }
420 
421  return 0;
422 }
423 
425  RWContext *rw,
426  APVRawMetadataUndefined *current,
427  size_t payload_size)
428 {
429  int err;
430 
431  HEADER("Undefined Metadata");
432 
433 #ifdef READ
434  current->data_size = payload_size;
435  current->data_ref = av_buffer_alloc(current->data_size);
436  if (!current->data_ref)
437  return AVERROR(ENOMEM);
438  current->data = current->data_ref->data;
439 #else
440  if (current->data_size != payload_size) {
441  av_log(ctx->log_ctx, AV_LOG_ERROR, "Write size mismatch: "
442  "payload %zu but expecting %zu\n",
443  current->data_size, payload_size - 16);
444  return AVERROR(EINVAL);
445  }
446 #endif
447 
448  for (size_t i = 0; i < current->data_size; i++) {
449  xu(8, undefined_metadata_payload_byte[i],
450  current->data[i], 0x00, 0xff, 1, i);
451  }
452 
453  return 0;
454 }
455 
457  RWContext *rw,
458  APVRawMetadataPayload *current)
459 {
460  int err;
461 
462  switch (current->payload_type) {
465  &current->itu_t_t35,
466  current->payload_size));
467  break;
468  case APV_METADATA_MDCV:
469  CHECK(FUNC(metadata_mdcv)(ctx, rw, &current->mdcv));
470  break;
471  case APV_METADATA_CLL:
472  CHECK(FUNC(metadata_cll)(ctx, rw, &current->cll));
473  break;
474  case APV_METADATA_FILLER:
476  &current->filler,
477  current->payload_size));
478  break;
481  &current->user_defined,
482  current->payload_size));
483  break;
484  default:
486  &current->undefined,
487  current->payload_size));
488  }
489 
490  return 0;
491 }
492 
494  APVRawMetadata *current)
495 {
496  int err;
497 
498 #ifdef READ
499  uint32_t metadata_bytes_left;
500 #else
501  PutBitContext metadata_start_state;
502  uint32_t metadata_start_position;
503  int trace;
504 #endif
505 
506  HEADER("Metadata");
507 
508  CHECK(FUNC(pbu_header)(ctx, rw, &current->pbu_header));
509 
510 #ifdef READ
511  ub(32, metadata_size);
512 
513  metadata_bytes_left = current->metadata_size;
514 
515  for (int p = 0; p < CBS_APV_MAX_METADATA_PAYLOADS; p++) {
516  APVRawMetadataPayload *pl = &current->payloads[p];
517  uint32_t tmp;
518 
519  pl->payload_type = 0;
520  while (show_bits(rw, 8) == 0xff) {
521  fixed(8, ff_byte, 0xff);
522  pl->payload_type += 255;
523  --metadata_bytes_left;
524  }
525  xu(8, metadata_payload_type, tmp, 0, 254, 0);
526  pl->payload_type += tmp;
527  --metadata_bytes_left;
528 
529  pl->payload_size = 0;
530  while (show_bits(rw, 8) == 0xff) {
531  fixed(8, ff_byte, 0xff);
532  pl->payload_size += 255;
533  --metadata_bytes_left;
534  }
535  xu(8, metadata_payload_size, tmp, 0, 254, 0);
536  pl->payload_size += tmp;
537  --metadata_bytes_left;
538 
539  if (pl->payload_size > metadata_bytes_left) {
540  av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid metadata: "
541  "payload_size larger than remaining metadata size "
542  "(%"PRIu32" bytes).\n", pl->payload_size);
543  return AVERROR_INVALIDDATA;
544  }
545 
546  current->metadata_count = p + 1;
547 
548  CHECK(FUNC(metadata_payload)(ctx, rw, pl));
549 
550  metadata_bytes_left -= pl->payload_size;
551  if (metadata_bytes_left == 0)
552  break;
553  }
554 #else
555  // Two passes: the first write finds the size (with tracing
556  // disabled), the second write does the real write.
557 
558  metadata_start_state = *rw;
559  metadata_start_position = put_bits_count(rw);
560 
561  trace = ctx->trace_enable;
562  ctx->trace_enable = 0;
563 
564  for (int pass = 1; pass <= 2; pass++) {
565  *rw = metadata_start_state;
566 
567  ub(32, metadata_size);
568 
569  for (int p = 0; p < current->metadata_count; p++) {
570  APVRawMetadataPayload *pl = &current->payloads[p];
571  uint32_t payload_start_position;
572  uint32_t tmp;
573 
574  tmp = pl->payload_type;
575  while (tmp >= 255) {
576  fixed(8, ff_byte, 0xff);
577  tmp -= 255;
578  }
579  xu(8, metadata_payload_type, tmp, 0, 254, 0);
580 
581  tmp = pl->payload_size;
582  while (tmp >= 255) {
583  fixed(8, ff_byte, 0xff);
584  tmp -= 255;
585  }
586  xu(8, metadata_payload_size, tmp, 0, 254, 0);
587 
588  payload_start_position = put_bits_count(rw);
589 
590  err = FUNC(metadata_payload)(ctx, rw, pl);
591  ctx->trace_enable = trace;
592  if (err < 0)
593  return err;
594 
595  if (pass == 1) {
596  pl->payload_size = (put_bits_count(rw) -
597  payload_start_position) / 8;
598  }
599  }
600 
601  if (pass == 1) {
602  current->metadata_size = (put_bits_count(rw) -
603  metadata_start_position) / 8 - 4;
604  ctx->trace_enable = trace;
605  }
606  }
607 #endif
608 
609  CHECK(FUNC(filler)(ctx, rw, &current->filler));
610 
611  return 0;
612 }
APVRawMetadataCLL
Definition: cbs_apv.h:142
frame_info
static int FUNC() frame_info(CodedBitstreamContext *ctx, RWContext *rw, APVRawFrameInfo *current)
Definition: cbs_apv_syntax_template.c:63
skip_bits_long
static void skip_bits_long(GetBitContext *s, int n)
Skips the specified number of bits.
Definition: get_bits.h:261
metadata_user_defined
static int FUNC() metadata_user_defined(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadataUserDefined *current, size_t payload_size)
Definition: cbs_apv_syntax_template.c:389
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
APVRawMetadataUserDefined
Definition: cbs_apv.h:151
ub
#define ub(width, name)
Definition: cbs_apv.c:85
get_bits_count
static int get_bits_count(const GetBitContext *s)
Definition: get_bits.h:249
APVRawQuantizationMatrix
Definition: cbs_apv.h:56
byte_alignment
static int FUNC() byte_alignment(CodedBitstreamContext *ctx, RWContext *rw)
Definition: cbs_apv_syntax_template.c:31
APVRawAUInfo
Definition: cbs_apv.h:111
CodedBitstreamContext
Context structure for coded bitstream operations.
Definition: cbs.h:226
level_idc
int level_idc
Definition: h264_levels.c:29
APVRawMetadataUndefined
Definition: cbs_apv.h:159
FFMAX
#define FFMAX(a, b)
Definition: macros.h:47
quantization_matrix
static int FUNC() quantization_matrix(CodedBitstreamContext *ctx, RWContext *rw, APVRawQuantizationMatrix *current)
Definition: cbs_apv_syntax_template.c:93
metadata_mdcv
static int FUNC() metadata_mdcv(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadataMDCV *current)
Definition: cbs_apv_syntax_template.c:338
ff_copy_bits
void ff_copy_bits(PutBitContext *pb, const uint8_t *src, int length)
Copy the content of src to the bitstream.
Definition: bitstream.c:49
CodedBitstreamAPVContext::num_comp
int num_comp
Definition: cbs_apv.h:202
CHECK
CHECK(-1) CHECK(-2) }} }} CHECK(1) CHECK(2) }} }} } if(diff0+diff1 > 0) temp -
u
#define u(width, name, range_min, range_max)
Definition: cbs_apv.c:83
tile_info
static int FUNC() tile_info(CodedBitstreamContext *ctx, RWContext *rw, APVRawTileInfo *current, const APVRawFrameHeader *fh)
Definition: cbs_apv_syntax_template.c:111
xu
#define xu(width, name, var, range_min, range_max, subs,...)
Definition: cbs_apv.c:132
put_bytes_left
static int put_bytes_left(const PutBitContext *s, int round_up)
Definition: put_bits.h:145
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:210
APVRawFrameInfo
Definition: cbs_apv.h:43
metadata_itu_t_t35
static int FUNC() metadata_itu_t_t35(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadataITUTT35 *current, size_t payload_size)
Definition: cbs_apv_syntax_template.c:298
av_assert0
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Definition: avassert.h:41
APVRawPBUHeader
Definition: cbs_apv.h:33
ctx
AVFormatContext * ctx
Definition: movenc.c:49
APVRawTileHeader
Definition: cbs_apv.h:85
tile_header
static int FUNC() tile_header(CodedBitstreamContext *ctx, RWContext *rw, APVRawTileHeader *current, int tile_idx, uint32_t tile_size)
Definition: cbs_apv_syntax_template.c:191
RWContext
#define RWContext
Definition: cbs_apv.c:129
MAX_UINT_BITS
#define MAX_UINT_BITS(length)
Definition: cbs_internal.h:235
PutBitContext
Definition: put_bits.h:50
APVRawMetadata
Definition: cbs_apv.h:178
fixed
#define fixed(width, name, value)
Definition: cbs_apv.c:92
APV_MIN_TILE_WIDTH_IN_MBS
@ APV_MIN_TILE_WIDTH_IN_MBS
Definition: apv.h:73
cbs_apv_derive_tile_info
static void cbs_apv_derive_tile_info(APVDerivedTileInfo *ti, const APVRawFrameHeader *fh)
Definition: cbs_apv.c:40
tmp
static uint8_t tmp[20]
Definition: aes_ctr.c:47
profile_idc
int profile_idc
Definition: h264_levels.c:53
APV_MAX_TILE_COLS
@ APV_MAX_TILE_COLS
Definition: apv.h:75
APV_METADATA_CLL
@ APV_METADATA_CLL
Definition: apv.h:84
CodedBitstreamAPVContext::bit_depth
int bit_depth
Definition: cbs_apv.h:201
cbs_apv_get_num_comp
static int cbs_apv_get_num_comp(const APVRawFrameHeader *fh)
Definition: cbs_apv.c:25
APVRawTileInfo
Definition: cbs_apv.h:60
APVRawFrame
Definition: cbs_apv.h:101
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
color_primaries
static const AVColorPrimariesDesc color_primaries[AVCOL_PRI_NB]
Definition: csp.c:76
APVRawMetadataPayload
Definition: cbs_apv.h:165
pbu_header
static int FUNC() pbu_header(CodedBitstreamContext *ctx, RWContext *rw, APVRawPBUHeader *current)
Definition: cbs_apv_syntax_template.c:19
ubs
#define ubs(width, name, subs,...)
Definition: cbs_apv.c:89
HEADER
#define HEADER(name)
Definition: cbs_apv.c:70
infer
#define infer(name, value)
Definition: cbs_apv.c:139
APVRawFrameHeader
Definition: cbs_apv.h:67
transfer_characteristics
static const struct TransferCharacteristics transfer_characteristics[AVCOL_TRC_NB]
Definition: vf_colorspace.c:167
APVRawMetadataPayload::payload_type
uint32_t payload_type
Definition: cbs_apv.h:166
CodedBitstreamAPVContext
Definition: cbs_apv.h:200
us
#define us(width, name, range_min, range_max, subs,...)
Definition: cbs_apv.c:87
av_buffer_alloc
AVBufferRef * av_buffer_alloc(size_t size)
Allocate an AVBuffer of the given size using av_malloc().
Definition: buffer.c:77
APVRawMetadataPayload::payload_size
uint32_t payload_size
Definition: cbs_apv.h:167
metadata_undefined
static int FUNC() metadata_undefined(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadataUndefined *current, size_t payload_size)
Definition: cbs_apv_syntax_template.c:424
APV_METADATA_USER_DEFINED
@ APV_METADATA_USER_DEFINED
Definition: apv.h:86
CBS_APV_MAX_AU_FRAMES
#define CBS_APV_MAX_AU_FRAMES
Definition: cbs_apv.h:29
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
put_bits_count
static int put_bits_count(PutBitContext *s)
Definition: put_bits.h:90
show_bits
static unsigned int show_bits(GetBitContext *s, int n)
Show 1-25 bits.
Definition: get_bits.h:354
APVRawMetadataFiller
Definition: cbs_apv.h:147
filler
static int FUNC() filler(CodedBitstreamContext *ctx, RWContext *rw, APVRawFiller *current)
Definition: cbs_apv_syntax_template.c:41
frame
static int FUNC() frame(CodedBitstreamContext *ctx, RWContext *rw, APVRawFrame *current)
Definition: cbs_apv_syntax_template.c:251
CBS_APV_MAX_METADATA_PAYLOADS
#define CBS_APV_MAX_METADATA_PAYLOADS
Definition: cbs_apv.h:30
tile
static int FUNC() tile(CodedBitstreamContext *ctx, RWContext *rw, APVRawTile *current, int tile_idx, uint32_t tile_size)
Definition: cbs_apv_syntax_template.c:224
CodedBitstreamAPVContext::tile_info
APVDerivedTileInfo tile_info
Definition: cbs_apv.h:204
align_get_bits
static const uint8_t * align_get_bits(GetBitContext *s)
Definition: get_bits.h:544
pos
unsigned int pos
Definition: spdifenc.c:414
frame_header
Definition: truemotion1.c:88
FUNC
#define FUNC(a)
Definition: bit_depth_template.c:101
APV_MIN_TILE_HEIGHT_IN_MBS
@ APV_MIN_TILE_HEIGHT_IN_MBS
Definition: apv.h:74
APVRawMetadataMDCV
Definition: cbs_apv.h:133
APV_METADATA_MDCV
@ APV_METADATA_MDCV
Definition: apv.h:83
au_info
static int FUNC() au_info(CodedBitstreamContext *ctx, RWContext *rw, APVRawAUInfo *current)
Definition: cbs_apv_syntax_template.c:275
APVRawMetadataITUTT35
Definition: cbs_apv.h:124
APV_MAX_TILE_ROWS
@ APV_MAX_TILE_ROWS
Definition: apv.h:76
metadata
static int FUNC() metadata(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadata *current)
Definition: cbs_apv_syntax_template.c:493
APV_METADATA_FILLER
@ APV_METADATA_FILLER
Definition: apv.h:85
metadata_filler
static int FUNC() metadata_filler(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadataFiller *current, size_t payload_size)
Definition: cbs_apv_syntax_template.c:374
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
AVERROR_INVALIDDATA
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:61
APVDerivedTileInfo::num_tiles
uint16_t num_tiles
Definition: cbs_apv.h:193
metadata_payload
static int FUNC() metadata_payload(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadataPayload *current)
Definition: cbs_apv_syntax_template.c:456
metadata_cll
static int FUNC() metadata_cll(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadataCLL *current)
Definition: cbs_apv_syntax_template.c:360
APVRawTile
Definition: cbs_apv.h:93
APVRawFiller
Definition: cbs_apv.h:39
APV_METADATA_ITU_T_T35
@ APV_METADATA_ITU_T_T35
Definition: apv.h:82
AVFormatContext::priv_data
void * priv_data
Format private data.
Definition: avformat.h:1293