FFmpeg
ffprobe.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2007-2010 Stefano Sabatini
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 /**
22  * @file
23  * simple media prober based on the FFmpeg libraries
24  */
25 
26 #include "config.h"
27 #include "libavutil/ffversion.h"
28 
29 #include <string.h>
30 #include <math.h>
31 
32 #include "libavformat/avformat.h"
33 #include "libavformat/version.h"
34 #include "libavcodec/avcodec.h"
35 #include "libavcodec/version.h"
37 #include "libavutil/avassert.h"
38 #include "libavutil/avstring.h"
39 #include "libavutil/avutil.h"
40 #include "libavutil/bprint.h"
42 #include "libavutil/downmix_info.h"
43 #include "libavutil/display.h"
46 #include "libavutil/iamf.h"
49 #include "libavutil/dovi_meta.h"
50 #include "libavutil/mem.h"
51 #include "libavutil/opt.h"
52 #include "libavutil/pixdesc.h"
53 #include "libavutil/spherical.h"
54 #include "libavutil/stereo3d.h"
55 #include "libavutil/dict.h"
56 #include "libavutil/intreadwrite.h"
57 #include "libavutil/libm.h"
58 #include "libavutil/parseutils.h"
59 #include "libavutil/timecode.h"
60 #include "libavutil/timestamp.h"
61 #include "libavdevice/avdevice.h"
62 #include "libavdevice/version.h"
63 #include "libswscale/swscale.h"
64 #include "libswscale/version.h"
66 #include "libswresample/version.h"
67 #include "libavfilter/version.h"
69 #include "cmdutils.h"
70 #include "opt_common.h"
71 
72 #include "libavutil/thread.h"
73 
74 // attached as opaque_ref to packets/frames
75 typedef struct FrameData {
77  int pkt_size;
78 } FrameData;
79 
80 typedef struct InputStream {
81  AVStream *st;
82 
84 } InputStream;
85 
86 typedef struct InputFile {
88 
90  int nb_streams;
91 } InputFile;
92 
93 const char program_name[] = "ffprobe";
94 const int program_birth_year = 2007;
95 
96 static int do_analyze_frames = 0;
97 static int do_bitexact = 0;
98 static int do_count_frames = 0;
99 static int do_count_packets = 0;
100 static int do_read_frames = 0;
101 static int do_read_packets = 0;
102 static int do_show_chapters = 0;
103 static int do_show_error = 0;
104 static int do_show_format = 0;
105 static int do_show_frames = 0;
106 static int do_show_packets = 0;
107 static int do_show_programs = 0;
108 static int do_show_stream_groups = 0;
110 static int do_show_streams = 0;
113 static int do_show_data = 0;
114 static int do_show_program_version = 0;
116 static int do_show_pixel_formats = 0;
119 static int do_show_log = 0;
120 
121 static int do_show_chapter_tags = 0;
122 static int do_show_format_tags = 0;
123 static int do_show_frame_tags = 0;
124 static int do_show_program_tags = 0;
126 static int do_show_stream_tags = 0;
127 static int do_show_packet_tags = 0;
128 
129 static int show_value_unit = 0;
130 static int use_value_prefix = 0;
133 static int show_private_data = 1;
134 
135 static const char *audio_codec_name = NULL;
136 static const char *data_codec_name = NULL;
137 static const char *subtitle_codec_name = NULL;
138 static const char *video_codec_name = NULL;
139 
140 #define SHOW_OPTIONAL_FIELDS_AUTO -1
141 #define SHOW_OPTIONAL_FIELDS_NEVER 0
142 #define SHOW_OPTIONAL_FIELDS_ALWAYS 1
144 
145 static char *output_format;
146 static char *stream_specifier;
147 static char *show_data_hash;
148 static char *data_dump_format;
149 
150 typedef struct ReadInterval {
151  int id; ///< identifier
152  int64_t start, end; ///< start, end in second/AV_TIME_BASE units
156 } ReadInterval;
157 
159 static int read_intervals_nb = 0;
160 
161 static int find_stream_info = 1;
162 
163 /* section structure definition */
164 
165 typedef enum {
234 } SectionID;
235 
236 static const char *get_packet_side_data_type(const void *data)
237 {
238  const AVPacketSideData *sd = (const AVPacketSideData *)data;
239  return av_x_if_null(av_packet_side_data_name(sd->type), "unknown");
240 }
241 
242 static const char *get_frame_side_data_type(const void *data)
243 {
244  const AVFrameSideData *sd = (const AVFrameSideData *)data;
245  return av_x_if_null(av_frame_side_data_name(sd->type), "unknown");
246 }
247 
248 static const char *get_raw_string_type(const void *data)
249 {
250  return data;
251 }
252 
253 static const char *get_stream_group_type(const void *data)
254 {
255  const AVStreamGroup *stg = (const AVStreamGroup *)data;
256  return av_x_if_null(avformat_stream_group_name(stg->type), "unknown");
257 }
258 
259 static const AVTextFormatSection sections[] = {
261  [SECTION_ID_CHAPTER] = { SECTION_ID_CHAPTER, "chapter", 0, { SECTION_ID_CHAPTER_TAGS, -1 } },
262  [SECTION_ID_CHAPTER_TAGS] = { SECTION_ID_CHAPTER_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "chapter_tags" },
263  [SECTION_ID_ERROR] = { SECTION_ID_ERROR, "error", 0, { -1 } },
264  [SECTION_ID_FORMAT] = { SECTION_ID_FORMAT, "format", 0, { SECTION_ID_FORMAT_TAGS, -1 } },
265  [SECTION_ID_FORMAT_TAGS] = { SECTION_ID_FORMAT_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "format_tags" },
268  [SECTION_ID_FRAME_TAGS] = { SECTION_ID_FRAME_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "frame_tags" },
269  [SECTION_ID_FRAME_SIDE_DATA_LIST] ={ SECTION_ID_FRAME_SIDE_DATA_LIST, "side_data_list", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA, -1 }, .element_name = "side_data", .unique_name = "frame_side_data_list" },
273  [SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST] = { SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST, "components", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA_COMPONENT, -1 }, .element_name = "component", .unique_name = "frame_side_data_components" },
275  [SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST] = { SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST, "pieces", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA_PIECE, -1 }, .element_name = "piece", .unique_name = "frame_side_data_pieces" },
276  [SECTION_ID_FRAME_SIDE_DATA_PIECE] = { SECTION_ID_FRAME_SIDE_DATA_PIECE, "piece", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS|AV_TEXTFORMAT_SECTION_FLAG_HAS_TYPE, { -1 }, .element_name = "piece_entry", .unique_name = "frame_side_data_piece", .get_type = get_raw_string_type },
278  [SECTION_ID_FRAME_LOG] = { SECTION_ID_FRAME_LOG, "log", 0, { -1 }, },
280  [SECTION_ID_LIBRARY_VERSION] = { SECTION_ID_LIBRARY_VERSION, "library_version", 0, { -1 } },
284  [SECTION_ID_PACKET_TAGS] = { SECTION_ID_PACKET_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "packet_tags" },
285  [SECTION_ID_PACKET_SIDE_DATA_LIST] ={ SECTION_ID_PACKET_SIDE_DATA_LIST, "side_data_list", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_PACKET_SIDE_DATA, -1 }, .element_name = "side_data", .unique_name = "packet_side_data_list" },
286  [SECTION_ID_PACKET_SIDE_DATA] = { SECTION_ID_PACKET_SIDE_DATA, "side_data", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS|AV_TEXTFORMAT_SECTION_FLAG_HAS_TYPE, { -1 }, .unique_name = "packet_side_data", .element_name = "side_datum", .get_type = get_packet_side_data_type },
289  [SECTION_ID_PIXEL_FORMAT_FLAGS] = { SECTION_ID_PIXEL_FORMAT_FLAGS, "flags", 0, { -1 }, .unique_name = "pixel_format_flags" },
292  [SECTION_ID_PROGRAM_STREAM_DISPOSITION] = { SECTION_ID_PROGRAM_STREAM_DISPOSITION, "disposition", 0, { -1 }, .unique_name = "program_stream_disposition" },
293  [SECTION_ID_PROGRAM_STREAM_TAGS] = { SECTION_ID_PROGRAM_STREAM_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "program_stream_tags" },
297  [SECTION_ID_PROGRAM_TAGS] = { SECTION_ID_PROGRAM_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "program_tags" },
298  [SECTION_ID_PROGRAM_VERSION] = { SECTION_ID_PROGRAM_VERSION, "program_version", 0, { -1 } },
300  [SECTION_ID_STREAM_GROUP_STREAM_DISPOSITION] = { SECTION_ID_STREAM_GROUP_STREAM_DISPOSITION, "disposition", 0, { -1 }, .unique_name = "stream_group_stream_disposition" },
301  [SECTION_ID_STREAM_GROUP_STREAM_TAGS] = { SECTION_ID_STREAM_GROUP_STREAM_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "stream_group_stream_tags" },
303  [SECTION_ID_STREAM_GROUP_COMPONENTS] = { SECTION_ID_STREAM_GROUP_COMPONENTS, "components", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_STREAM_GROUP_COMPONENT, -1 }, .element_name = "component", .unique_name = "stream_group_components" },
307  [SECTION_ID_STREAM_GROUP_PIECES] = { SECTION_ID_STREAM_GROUP_PIECES, "pieces", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_STREAM_GROUP_PIECE, -1 }, .element_name = "piece", .unique_name = "stream_group_pieces" },
313  [SECTION_ID_STREAM_GROUP_SIDE_DATA_LIST] = { SECTION_ID_STREAM_GROUP_SIDE_DATA_LIST, "side_data_list", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_STREAM_GROUP_SIDE_DATA, -1 }, .element_name = "side_data", .unique_name = "stream_group_side_data_list" },
314  [SECTION_ID_STREAM_GROUP_SIDE_DATA] = { SECTION_ID_STREAM_GROUP_SIDE_DATA, "side_data", AV_TEXTFORMAT_SECTION_FLAG_HAS_TYPE|AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .unique_name = "stream_group_side_data", .element_name = "side_datum", .get_type = get_packet_side_data_type },
317  [SECTION_ID_STREAM_GROUP_DISPOSITION] = { SECTION_ID_STREAM_GROUP_DISPOSITION, "disposition", 0, { -1 }, .unique_name = "stream_group_disposition" },
318  [SECTION_ID_STREAM_GROUP_TAGS] = { SECTION_ID_STREAM_GROUP_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "stream_group_tags" },
326  [SECTION_ID_STREAM_DISPOSITION] = { SECTION_ID_STREAM_DISPOSITION, "disposition", 0, { -1 }, .unique_name = "stream_disposition" },
327  [SECTION_ID_STREAM_TAGS] = { SECTION_ID_STREAM_TAGS, "tags", AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "stream_tags" },
328  [SECTION_ID_STREAM_SIDE_DATA_LIST] ={ SECTION_ID_STREAM_SIDE_DATA_LIST, "side_data_list", AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY, { SECTION_ID_STREAM_SIDE_DATA, -1 }, .element_name = "side_data", .unique_name = "stream_side_data_list" },
329  [SECTION_ID_STREAM_SIDE_DATA] = { SECTION_ID_STREAM_SIDE_DATA, "side_data", AV_TEXTFORMAT_SECTION_FLAG_HAS_TYPE|AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .unique_name = "stream_side_data", .element_name = "side_datum", .get_type = get_packet_side_data_type },
330  [SECTION_ID_SUBTITLE] = { SECTION_ID_SUBTITLE, "subtitle", 0, { -1 } },
331 };
332 
333 typedef struct EntrySelection {
337 
339 
340 static const OptionDef *options;
341 
342 /* FFprobe context */
343 static const char *input_filename;
344 static const char *print_input_filename;
345 static const AVInputFormat *iformat = NULL;
346 static const char *output_filename = NULL;
347 
348 static const char unit_hertz_str[] = "Hz" ;
349 static const char unit_byte_str[] = "byte" ;
350 static const char unit_bit_per_second_str[] = "bit/s";
351 
352 static unsigned int nb_streams;
353 static uint64_t *nb_streams_packets;
354 static uint64_t *nb_streams_frames;
355 static int *selected_streams;
358 
360 
361 typedef struct LogBuffer {
364  char *log_message;
366  char *parent_name;
368 }LogBuffer;
369 
371 static int log_buffer_size;
372 
373 static int is_key_selected_callback(AVTextFormatContext *tctx, const char *key)
374 {
375  const AVTextFormatSection *section = tctx->section[tctx->level];
376  const EntrySelection *selection = &selected_entries[section - sections];
377 
378  return selection->show_all_entries || av_dict_get(selection->entries_to_show, key, NULL, 0);
379 }
380 
381 static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
382 {
383  AVClass* avc = ptr ? *(AVClass **) ptr : NULL;
384  va_list vl2;
385  char line[1024];
386  static int print_prefix = 1;
387  void *new_log_buffer;
388 
389  va_copy(vl2, vl);
390  av_log_default_callback(ptr, level, fmt, vl);
391  av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
392  va_end(vl2);
393 
394 #if HAVE_THREADS
396 
397  new_log_buffer = av_realloc_array(log_buffer, log_buffer_size + 1, sizeof(*log_buffer));
398  if (new_log_buffer) {
399  char *msg;
400  int i;
401 
402  log_buffer = new_log_buffer;
403  memset(&log_buffer[log_buffer_size], 0, sizeof(log_buffer[log_buffer_size]));
405  if (avc) {
408  }
411  for (i=strlen(msg) - 1; i>=0 && msg[i] == '\n'; i--) {
412  msg[i] = 0;
413  }
414  if (avc && avc->parent_log_context_offset) {
415  AVClass** parent = *(AVClass ***) (((uint8_t *) ptr) +
417  if (parent && *parent) {
418  log_buffer[log_buffer_size].parent_name = av_strdup((*parent)->item_name(parent));
420  (*parent)->get_category ? (*parent)->get_category(parent) :(*parent)->category;
421  }
422  }
423  log_buffer_size ++;
424  }
425 
427 #endif
428 }
429 
430 
431 #define print_fmt(k, f, ...) do { \
432  av_bprint_clear(&pbuf); \
433  av_bprintf(&pbuf, f, __VA_ARGS__); \
434  avtext_print_string(tfc, k, pbuf.str, 0); \
435 } while (0)
436 
437 #define print_list_fmt(k, f, n, m, ...) do { \
438  av_bprint_clear(&pbuf); \
439  for (unsigned int idx = 0; idx < n; idx++) { \
440  for (unsigned int idx2 = 0; idx2 < m; idx2++) { \
441  if (idx > 0 || idx2 > 0) \
442  av_bprint_chars(&pbuf, ' ', 1); \
443  av_bprintf(&pbuf, f, __VA_ARGS__); \
444  } \
445  } \
446  avtext_print_string(tfc, k, pbuf.str, 0); \
447 } while (0)
448 
449 #define print_int(k, v) avtext_print_integer(tfc, k, v, 0)
450 #define print_q(k, v, s) avtext_print_rational(tfc, k, v, s)
451 #define print_str(k, v) avtext_print_string(tfc, k, v, 0)
452 #define print_str_opt(k, v) avtext_print_string(tfc, k, v, AV_TEXTFORMAT_PRINT_STRING_OPTIONAL)
453 #define print_str_validate(k, v) avtext_print_string(tfc, k, v, AV_TEXTFORMAT_PRINT_STRING_VALIDATE)
454 #define print_time(k, v, tb) avtext_print_time(tfc, k, v, tb, 0)
455 #define print_ts(k, v) avtext_print_ts(tfc, k, v, 0)
456 #define print_duration_time(k, v, tb) avtext_print_time(tfc, k, v, tb, 1)
457 #define print_duration_ts(k, v) avtext_print_ts(tfc, k, v, 1)
458 #define print_val(k, v, u) avtext_print_unit_integer(tfc, k, v, AV_TEXTFORMAT_VALUE_FMT_INT, u)
459 #define print_int_fmt(k, v, f, u) avtext_print_unit_integer(tfc, k, v, f, u)
460 #define print_decibel(k, v) avtext_print_unit_double(tfc, k, v, AV_TEXTFORMAT_VALUE_FMT_DECIBEL, 0)
461 
462 static void print_integers(AVTextFormatContext *tfc, const char *key,
463  const void *data, int size, const char *format,
464  int columns, int bytes, int offset_add)
465 {
466  AVBPrint bp;
467  unsigned offset = 0;
468 
470  av_bprint_chars(&bp, '\n', 1);
471  while (size) {
472  av_bprintf(&bp, "%08x: ", offset);
473  for (int i = 0, l = FFMIN(size, columns); i < l; i++) {
474  if (bytes == 1) av_bprintf(&bp, format, *(const uint8_t*)data);
475  else if (bytes == 2) av_bprintf(&bp, format, AV_RN16(data));
476  else if (bytes == 4) av_bprintf(&bp, format, AV_RN32(data));
477  data = (const char*)data + bytes;
478  size--;
479  }
480  av_bprint_chars(&bp, '\n', 1);
481  offset += offset_add;
482  }
483  avtext_print_string(tfc, key, bp.str, 0);
484 }
485 
486 #define REALLOCZ_ARRAY_STREAM(ptr, cur_n, new_n) \
487 { \
488  ret = av_reallocp_array(&(ptr), (new_n), sizeof(*(ptr))); \
489  if (ret < 0) \
490  goto end; \
491  memset( (ptr) + (cur_n), 0, ((new_n) - (cur_n)) * sizeof(*(ptr)) ); \
492 }
493 
494 static inline int show_tags(AVTextFormatContext *tfc, AVDictionary *tags, int section_id)
495 {
496  const AVDictionaryEntry *tag = NULL;
497  int ret = 0;
498 
499  if (!tags)
500  return 0;
501  avtext_print_section_header(tfc, NULL, section_id);
502 
503  while ((tag = av_dict_iterate(tags, tag))) {
504  if ((ret = print_str_validate(tag->key, tag->value)) < 0)
505  break;
506  }
508 
509  return ret;
510 }
511 
513  const AVDownmixInfo *downmix_info)
514 {
515  switch (downmix_info->preferred_downmix_type) {
517  print_str("preferred_downmix_type", "loro");
518  break;
520  print_str("preferred_downmix_type", "ltrt");
521  break;
523  print_str("preferred_downmix_type", "dplII");
524  break;
525  default:
526  print_str("preferred_downmix_type", "unknown");
527  break;
528  }
529  print_decibel("center_mix_level_db", downmix_info->center_mix_level);
530  print_decibel("center_mix_level_ltrt_db", downmix_info->center_mix_level_ltrt);
531  print_decibel("surround_mix_level_db", downmix_info->surround_mix_level);
532  print_decibel("surround_mix_level_ltrt_db", downmix_info->surround_mix_level_ltrt);
533  print_decibel("lfe_mix_level_db", downmix_info->lfe_mix_level);
534 }
535 
537 {
538  double rotation = av_display_rotation_get(matrix);
539  if (isnan(rotation))
540  rotation = 0;
541  print_integers(tfc, "displaymatrix", matrix, 9, " %11d", 3, 4, 1);
542  print_int("rotation", rotation);
543 }
544 
547 {
548  if (metadata->has_primaries) {
549  print_q("red_x", metadata->display_primaries[0][0], '/');
550  print_q("red_y", metadata->display_primaries[0][1], '/');
551  print_q("green_x", metadata->display_primaries[1][0], '/');
552  print_q("green_y", metadata->display_primaries[1][1], '/');
553  print_q("blue_x", metadata->display_primaries[2][0], '/');
554  print_q("blue_y", metadata->display_primaries[2][1], '/');
555 
556  print_q("white_point_x", metadata->white_point[0], '/');
557  print_q("white_point_y", metadata->white_point[1], '/');
558  }
559 
560  if (metadata->has_luminance) {
561  print_q("min_luminance", metadata->min_luminance, '/');
562  print_q("max_luminance", metadata->max_luminance, '/');
563  }
564 }
565 
568 {
569  print_int("max_content", metadata->MaxCLL);
570  print_int("max_average", metadata->MaxFALL);
571 }
572 
574 {
575  if (!dovi)
576  return;
577 
578  {
579  const AVDOVIRpuDataHeader *hdr = av_dovi_get_header(dovi);
580  const AVDOVIDataMapping *mapping = av_dovi_get_mapping(dovi);
582  AVBPrint pbuf;
583 
585 
586  // header
587  print_int("rpu_type", hdr->rpu_type);
588  print_int("rpu_format", hdr->rpu_format);
589  print_int("vdr_rpu_profile", hdr->vdr_rpu_profile);
590  print_int("vdr_rpu_level", hdr->vdr_rpu_level);
591  print_int("chroma_resampling_explicit_filter_flag",
593  print_int("coef_data_type", hdr->coef_data_type);
594  print_int("coef_log2_denom", hdr->coef_log2_denom);
595  print_int("vdr_rpu_normalized_idc", hdr->vdr_rpu_normalized_idc);
596  print_int("bl_video_full_range_flag", hdr->bl_video_full_range_flag);
597  print_int("bl_bit_depth", hdr->bl_bit_depth);
598  print_int("el_bit_depth", hdr->el_bit_depth);
599  print_int("vdr_bit_depth", hdr->vdr_bit_depth);
600  print_int("spatial_resampling_filter_flag",
602  print_int("el_spatial_resampling_filter_flag",
604  print_int("disable_residual_flag", hdr->disable_residual_flag);
605 
606  // data mapping values
607  print_int("vdr_rpu_id", mapping->vdr_rpu_id);
608  print_int("mapping_color_space", mapping->mapping_color_space);
609  print_int("mapping_chroma_format_idc",
610  mapping->mapping_chroma_format_idc);
611 
612  print_int("nlq_method_idc", mapping->nlq_method_idc);
613  switch (mapping->nlq_method_idc) {
614  case AV_DOVI_NLQ_NONE:
615  print_str("nlq_method_idc_name", "none");
616  break;
618  print_str("nlq_method_idc_name", "linear_dz");
619  break;
620  default:
621  print_str("nlq_method_idc_name", "unknown");
622  break;
623  }
624 
625  print_int("num_x_partitions", mapping->num_x_partitions);
626  print_int("num_y_partitions", mapping->num_y_partitions);
627 
629 
630  for (int c = 0; c < 3; c++) {
631  const AVDOVIReshapingCurve *curve = &mapping->curves[c];
633 
634  print_list_fmt("pivots", "%"PRIu16, curve->num_pivots, 1, curve->pivots[idx]);
635 
637  for (int i = 0; i < curve->num_pivots - 1; i++) {
638  AVBPrint piece_buf;
639 
641  switch (curve->mapping_idc[i]) {
643  av_bprintf(&piece_buf, "Polynomial");
644  break;
645  case AV_DOVI_MAPPING_MMR:
646  av_bprintf(&piece_buf, "MMR");
647  break;
648  default:
649  av_bprintf(&piece_buf, "Unknown");
650  break;
651  }
652  av_bprintf(&piece_buf, " mapping");
653 
655  print_int("mapping_idc", curve->mapping_idc[i]);
656  switch (curve->mapping_idc[i]) {
658  print_str("mapping_idc_name", "polynomial");
659  print_int("poly_order", curve->poly_order[i]);
660  print_list_fmt("poly_coef", "%"PRIi64,
661  curve->poly_order[i] + 1, 1,
662  curve->poly_coef[i][idx]);
663  break;
664  case AV_DOVI_MAPPING_MMR:
665  print_str("mapping_idc_name", "mmr");
666  print_int("mmr_order", curve->mmr_order[i]);
667  print_int("mmr_constant", curve->mmr_constant[i]);
668  print_list_fmt("mmr_coef", "%"PRIi64,
669  curve->mmr_order[i], 7,
670  curve->mmr_coef[i][idx][idx2]);
671  break;
672  default:
673  print_str("mapping_idc_name", "unknown");
674  break;
675  }
676 
677  // SECTION_ID_FRAME_SIDE_DATA_PIECE
679  }
680 
681  // SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST
683 
684  if (mapping->nlq_method_idc != AV_DOVI_NLQ_NONE) {
685  const AVDOVINLQParams *nlq = &mapping->nlq[c];
686  print_int("nlq_offset", nlq->nlq_offset);
687  print_int("vdr_in_max", nlq->vdr_in_max);
688 
689  switch (mapping->nlq_method_idc) {
691  print_int("linear_deadzone_slope", nlq->linear_deadzone_slope);
692  print_int("linear_deadzone_threshold", nlq->linear_deadzone_threshold);
693  break;
694  }
695  }
696 
697  // SECTION_ID_FRAME_SIDE_DATA_COMPONENT
699  }
700 
701  // SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST
703 
704  // color metadata
705  print_int("dm_metadata_id", color->dm_metadata_id);
706  print_int("scene_refresh_flag", color->scene_refresh_flag);
707  print_list_fmt("ycc_to_rgb_matrix", "%d/%d",
708  FF_ARRAY_ELEMS(color->ycc_to_rgb_matrix), 1,
709  color->ycc_to_rgb_matrix[idx].num,
710  color->ycc_to_rgb_matrix[idx].den);
711  print_list_fmt("ycc_to_rgb_offset", "%d/%d",
712  FF_ARRAY_ELEMS(color->ycc_to_rgb_offset), 1,
713  color->ycc_to_rgb_offset[idx].num,
714  color->ycc_to_rgb_offset[idx].den);
715  print_list_fmt("rgb_to_lms_matrix", "%d/%d",
716  FF_ARRAY_ELEMS(color->rgb_to_lms_matrix), 1,
717  color->rgb_to_lms_matrix[idx].num,
718  color->rgb_to_lms_matrix[idx].den);
719  print_int("signal_eotf", color->signal_eotf);
720  print_int("signal_eotf_param0", color->signal_eotf_param0);
721  print_int("signal_eotf_param1", color->signal_eotf_param1);
722  print_int("signal_eotf_param2", color->signal_eotf_param2);
723  print_int("signal_bit_depth", color->signal_bit_depth);
724  print_int("signal_color_space", color->signal_color_space);
725  print_int("signal_chroma_format", color->signal_chroma_format);
726  print_int("signal_full_range_flag", color->signal_full_range_flag);
727  print_int("source_min_pq", color->source_min_pq);
728  print_int("source_max_pq", color->source_max_pq);
729  print_int("source_diagonal", color->source_diagonal);
730 
731  av_bprint_finalize(&pbuf, NULL);
732  }
733 }
734 
736 {
737  if (!metadata)
738  return;
739  print_int("application version", metadata->application_version);
740  print_int("num_windows", metadata->num_windows);
741  for (int n = 1; n < metadata->num_windows; n++) {
742  const AVHDRPlusColorTransformParams *params = &metadata->params[n];
743  print_q("window_upper_left_corner_x",
744  params->window_upper_left_corner_x,'/');
745  print_q("window_upper_left_corner_y",
746  params->window_upper_left_corner_y,'/');
747  print_q("window_lower_right_corner_x",
748  params->window_lower_right_corner_x,'/');
749  print_q("window_lower_right_corner_y",
750  params->window_lower_right_corner_y,'/');
751  print_q("window_upper_left_corner_x",
752  params->window_upper_left_corner_x,'/');
753  print_q("window_upper_left_corner_y",
754  params->window_upper_left_corner_y,'/');
755  print_int("center_of_ellipse_x",
756  params->center_of_ellipse_x ) ;
757  print_int("center_of_ellipse_y",
758  params->center_of_ellipse_y );
759  print_int("rotation_angle",
760  params->rotation_angle);
761  print_int("semimajor_axis_internal_ellipse",
763  print_int("semimajor_axis_external_ellipse",
765  print_int("semiminor_axis_external_ellipse",
767  print_int("overlap_process_option",
768  params->overlap_process_option);
769  }
770  print_q("targeted_system_display_maximum_luminance",
771  metadata->targeted_system_display_maximum_luminance,'/');
772  if (metadata->targeted_system_display_actual_peak_luminance_flag) {
773  print_int("num_rows_targeted_system_display_actual_peak_luminance",
774  metadata->num_rows_targeted_system_display_actual_peak_luminance);
775  print_int("num_cols_targeted_system_display_actual_peak_luminance",
776  metadata->num_cols_targeted_system_display_actual_peak_luminance);
777  for (int i = 0; i < metadata->num_rows_targeted_system_display_actual_peak_luminance; i++) {
778  for (int j = 0; j < metadata->num_cols_targeted_system_display_actual_peak_luminance; j++) {
779  print_q("targeted_system_display_actual_peak_luminance",
780  metadata->targeted_system_display_actual_peak_luminance[i][j],'/');
781  }
782  }
783  }
784  for (int n = 0; n < metadata->num_windows; n++) {
785  const AVHDRPlusColorTransformParams *params = &metadata->params[n];
786  for (int i = 0; i < 3; i++) {
787  print_q("maxscl",params->maxscl[i],'/');
788  }
789  print_q("average_maxrgb",
790  params->average_maxrgb,'/');
791  print_int("num_distribution_maxrgb_percentiles",
793  for (int i = 0; i < params->num_distribution_maxrgb_percentiles; i++) {
794  print_int("distribution_maxrgb_percentage",
795  params->distribution_maxrgb[i].percentage);
796  print_q("distribution_maxrgb_percentile",
797  params->distribution_maxrgb[i].percentile,'/');
798  }
799  print_q("fraction_bright_pixels",
800  params->fraction_bright_pixels,'/');
801  }
802  if (metadata->mastering_display_actual_peak_luminance_flag) {
803  print_int("num_rows_mastering_display_actual_peak_luminance",
804  metadata->num_rows_mastering_display_actual_peak_luminance);
805  print_int("num_cols_mastering_display_actual_peak_luminance",
806  metadata->num_cols_mastering_display_actual_peak_luminance);
807  for (int i = 0; i < metadata->num_rows_mastering_display_actual_peak_luminance; i++) {
808  for (int j = 0; j < metadata->num_cols_mastering_display_actual_peak_luminance; j++) {
809  print_q("mastering_display_actual_peak_luminance",
810  metadata->mastering_display_actual_peak_luminance[i][j],'/');
811  }
812  }
813  }
814 
815  for (int n = 0; n < metadata->num_windows; n++) {
816  const AVHDRPlusColorTransformParams *params = &metadata->params[n];
817  if (params->tone_mapping_flag) {
818  print_q("knee_point_x", params->knee_point_x,'/');
819  print_q("knee_point_y", params->knee_point_y,'/');
820  print_int("num_bezier_curve_anchors",
821  params->num_bezier_curve_anchors );
822  for (int i = 0; i < params->num_bezier_curve_anchors; i++) {
823  print_q("bezier_curve_anchors",
824  params->bezier_curve_anchors[i],'/');
825  }
826  }
827  if (params->color_saturation_mapping_flag) {
828  print_q("color_saturation_weight",
829  params->color_saturation_weight,'/');
830  }
831  }
832 }
833 
835 {
836  if (!metadata)
837  return;
838  print_int("application_version", metadata->application_version);
839  print_int("minimum_application_version", metadata->minimum_application_version);
840  print_int("has_custom_hdr_reference_white_flag", metadata->has_custom_hdr_reference_white_flag);
841  print_int("has_adaptive_tone_map_flag", metadata->has_adaptive_tone_map_flag);
842 
843  if (metadata->has_custom_hdr_reference_white_flag)
844  print_int("hdr_reference_white", metadata->hdr_reference_white);
845 
846  if (!metadata->has_adaptive_tone_map_flag)
847  return;
848 
849  print_int("baseline_hdr_headroom", metadata->baseline_hdr_headroom);
850  print_int("use_reference_white_tone_mapping_flag", metadata->use_reference_white_tone_mapping_flag);
851 
852  if (metadata->use_reference_white_tone_mapping_flag)
853  return;
854 
855  print_int("num_alternate_images", metadata->num_alternate_images);
856  print_int("gain_application_space_chromaticities_flag", metadata->gain_application_space_chromaticities_flag);
857  print_int("has_common_component_mix_params_flag", metadata->has_common_component_mix_params_flag);
858  print_int("has_common_curve_params_flag", metadata->has_common_curve_params_flag);
859 
860  if (metadata->gain_application_space_chromaticities_flag == 3) {
861  for (int i = 0; i < 8; i++)
862  print_int("gain_application_space_chromaticities", metadata->gain_application_space_chromaticities[i]);
863  }
864 
865  for (int a = 0; a < metadata->num_alternate_images; a++) {
866  print_int("alternate_hdr_headroom", metadata->alternate_hdr_headrooms[a]);
867 
868  print_int("component_mixing_type", metadata->component_mixing_type[a]);
869  if (metadata->component_mixing_type[a] == 3) {
870  for (int k = 0; k < 6; k++) {
871  print_int("has_component_mixing_coefficient_flag", metadata->has_component_mixing_coefficient_flag[a][k]);
872  if (metadata->has_component_mixing_coefficient_flag[a][k])
873  print_int("component_mixing_coefficient", metadata->component_mixing_coefficient[a][k]);
874  }
875  }
876 
877  print_int("gain_curve_num_control_points_minus_1", metadata->gain_curve_num_control_points_minus_1[a]);
878  print_int("gain_curve_use_pchip_slope_flag", metadata->gain_curve_use_pchip_slope_flag[a]);
879  for (int c = 0; c <= metadata->gain_curve_num_control_points_minus_1[a]; c++)
880  print_int("gain_curve_control_point_x", metadata->gain_curve_control_points_x[a][c]);
881  for (int c = 0; c <= metadata->gain_curve_num_control_points_minus_1[a]; c++)
882  print_int("gain_curve_control_point_y", metadata->gain_curve_control_points_y[a][c]);
883  if (!metadata->gain_curve_use_pchip_slope_flag[a]) {
884  for (int c = 0; c <= metadata->gain_curve_num_control_points_minus_1[a]; c++)
885  print_int("gain_curve_control_point_theta", metadata->gain_curve_control_points_theta[a][c]);
886  }
887  }
888 }
889 
891 {
892  if (!metadata)
893  return;
894  print_int("system_start_code", metadata->system_start_code);
895  print_int("num_windows", metadata->num_windows);
896 
897  for (int n = 0; n < metadata->num_windows; n++) {
898  const AVHDRVividColorTransformParams *params = &metadata->params[n];
899 
900  print_q("minimum_maxrgb", params->minimum_maxrgb, '/');
901  print_q("average_maxrgb", params->average_maxrgb, '/');
902  print_q("variance_maxrgb", params->variance_maxrgb, '/');
903  print_q("maximum_maxrgb", params->maximum_maxrgb, '/');
904  }
905 
906  for (int n = 0; n < metadata->num_windows; n++) {
907  const AVHDRVividColorTransformParams *params = &metadata->params[n];
908 
909  print_int("tone_mapping_mode_flag", params->tone_mapping_mode_flag);
910  if (params->tone_mapping_mode_flag) {
911  print_int("tone_mapping_param_num", params->tone_mapping_param_num);
912  for (int i = 0; i < params->tone_mapping_param_num; i++) {
913  const AVHDRVividColorToneMappingParams *tm_params = &params->tm_params[i];
914 
915  print_q("targeted_system_display_maximum_luminance",
917  print_int("base_enable_flag", tm_params->base_enable_flag);
918  if (tm_params->base_enable_flag) {
919  print_q("base_param_m_p", tm_params->base_param_m_p, '/');
920  print_q("base_param_m_m", tm_params->base_param_m_m, '/');
921  print_q("base_param_m_a", tm_params->base_param_m_a, '/');
922  print_q("base_param_m_b", tm_params->base_param_m_b, '/');
923  print_q("base_param_m_n", tm_params->base_param_m_n, '/');
924 
925  print_int("base_param_k1", tm_params->base_param_k1);
926  print_int("base_param_k2", tm_params->base_param_k2);
927  print_int("base_param_k3", tm_params->base_param_k3);
928  print_int("base_param_Delta_enable_mode",
929  tm_params->base_param_Delta_enable_mode);
930  print_q("base_param_Delta", tm_params->base_param_Delta, '/');
931  }
932  print_int("3Spline_enable_flag", tm_params->three_Spline_enable_flag);
933  if (tm_params->three_Spline_enable_flag) {
934  print_int("3Spline_num", tm_params->three_Spline_num);
935 
936  for (int j = 0; j < tm_params->three_Spline_num; j++) {
937  const AVHDRVivid3SplineParams *three_spline = &tm_params->three_spline[j];
938  print_int("3Spline_TH_mode", three_spline->th_mode);
939  if (three_spline->th_mode == 0 || three_spline->th_mode == 2)
940  print_q("3Spline_TH_enable_MB", three_spline->th_enable_mb, '/');
941  print_q("3Spline_TH_enable", three_spline->th_enable, '/');
942  print_q("3Spline_TH_Delta1", three_spline->th_delta1, '/');
943  print_q("3Spline_TH_Delta2", three_spline->th_delta2, '/');
944  print_q("3Spline_enable_Strength", three_spline->enable_strength, '/');
945  }
946  }
947  }
948  }
949 
950  print_int("color_saturation_mapping_flag", params->color_saturation_mapping_flag);
951  if (params->color_saturation_mapping_flag) {
952  print_int("color_saturation_num", params->color_saturation_num);
953  for (int i = 0; i < params->color_saturation_num; i++) {
954  print_q("color_saturation_gain", params->color_saturation_gain[i], '/');
955  }
956  }
957  }
958 }
959 
961  const AVAmbientViewingEnvironment *env)
962 {
963  if (!env)
964  return;
965 
966  print_q("ambient_illuminance", env->ambient_illuminance, '/');
967  print_q("ambient_light_x", env->ambient_light_x, '/');
968  print_q("ambient_light_y", env->ambient_light_y, '/');
969 }
970 
972  const AVFilmGrainParams *fgp)
973 {
974  const char *color_range, *color_primaries, *color_trc, *color_space;
975  const char *const film_grain_type_names[] = {
976  [AV_FILM_GRAIN_PARAMS_NONE] = "none",
977  [AV_FILM_GRAIN_PARAMS_AV1] = "av1",
978  [AV_FILM_GRAIN_PARAMS_H274] = "h274",
979  };
980 
981  AVBPrint pbuf;
982  if (!fgp || fgp->type >= FF_ARRAY_ELEMS(film_grain_type_names))
983  return;
984 
987  color_trc = av_color_transfer_name(fgp->color_trc);
988  color_space = av_color_space_name(fgp->color_space);
989 
991  print_str("type", film_grain_type_names[fgp->type]);
992  print_fmt("seed", "%"PRIu64, fgp->seed);
993  print_int("width", fgp->width);
994  print_int("height", fgp->height);
995  print_int("subsampling_x", fgp->subsampling_x);
996  print_int("subsampling_y", fgp->subsampling_y);
997  print_str("color_range", color_range ? color_range : "unknown");
998  print_str("color_primaries", color_primaries ? color_primaries : "unknown");
999  print_str("color_trc", color_trc ? color_trc : "unknown");
1000  print_str("color_space", color_space ? color_space : "unknown");
1001 
1002  switch (fgp->type) {
1004  break;
1005  case AV_FILM_GRAIN_PARAMS_AV1: {
1006  const AVFilmGrainAOMParams *aom = &fgp->codec.aom;
1007  const int num_ar_coeffs_y = 2 * aom->ar_coeff_lag * (aom->ar_coeff_lag + 1);
1008  const int num_ar_coeffs_uv = num_ar_coeffs_y + !!aom->num_y_points;
1009  print_int("chroma_scaling_from_luma", aom->chroma_scaling_from_luma);
1010  print_int("scaling_shift", aom->scaling_shift);
1011  print_int("ar_coeff_lag", aom->ar_coeff_lag);
1012  print_int("ar_coeff_shift", aom->ar_coeff_shift);
1013  print_int("grain_scale_shift", aom->grain_scale_shift);
1014  print_int("overlap_flag", aom->overlap_flag);
1015  print_int("limit_output_range", aom->limit_output_range);
1016 
1018 
1019  if (aom->num_y_points) {
1021 
1022  print_int("bit_depth_luma", fgp->bit_depth_luma);
1023  print_list_fmt("y_points_value", "%"PRIu8, aom->num_y_points, 1, aom->y_points[idx][0]);
1024  print_list_fmt("y_points_scaling", "%"PRIu8, aom->num_y_points, 1, aom->y_points[idx][1]);
1025  print_list_fmt("ar_coeffs_y", "%"PRId8, num_ar_coeffs_y, 1, aom->ar_coeffs_y[idx]);
1026 
1027  // SECTION_ID_FRAME_SIDE_DATA_COMPONENT
1029  }
1030 
1031  for (unsigned uv = 0; uv < 2; uv++) {
1032  if (!aom->num_uv_points[uv] && !aom->chroma_scaling_from_luma)
1033  continue;
1034 
1036 
1037  print_int("bit_depth_chroma", fgp->bit_depth_chroma);
1038  print_list_fmt("uv_points_value", "%"PRIu8, aom->num_uv_points[uv], 1, aom->uv_points[uv][idx][0]);
1039  print_list_fmt("uv_points_scaling", "%"PRIu8, aom->num_uv_points[uv], 1, aom->uv_points[uv][idx][1]);
1040  print_list_fmt("ar_coeffs_uv", "%"PRId8, num_ar_coeffs_uv, 1, aom->ar_coeffs_uv[uv][idx]);
1041  print_int("uv_mult", aom->uv_mult[uv]);
1042  print_int("uv_mult_luma", aom->uv_mult_luma[uv]);
1043  print_int("uv_offset", aom->uv_offset[uv]);
1044 
1045  // SECTION_ID_FRAME_SIDE_DATA_COMPONENT
1047  }
1048 
1049  // SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST
1051  break;
1052  }
1054  const AVFilmGrainH274Params *h274 = &fgp->codec.h274;
1055  print_int("model_id", h274->model_id);
1056  print_int("blending_mode_id", h274->blending_mode_id);
1057  print_int("log2_scale_factor", h274->log2_scale_factor);
1058 
1060 
1061  for (int c = 0; c < 3; c++) {
1062  if (!h274->component_model_present[c])
1063  continue;
1064 
1066  print_int(c ? "bit_depth_chroma" : "bit_depth_luma", c ? fgp->bit_depth_chroma : fgp->bit_depth_luma);
1067 
1069  for (int i = 0; i < h274->num_intensity_intervals[c]; i++) {
1070 
1072  print_int("intensity_interval_lower_bound", h274->intensity_interval_lower_bound[c][i]);
1073  print_int("intensity_interval_upper_bound", h274->intensity_interval_upper_bound[c][i]);
1074  print_list_fmt("comp_model_value", "%"PRId16, h274->num_model_values[c], 1, h274->comp_model_value[c][i][idx]);
1075 
1076  // SECTION_ID_FRAME_SIDE_DATA_PIECE
1078  }
1079 
1080  // SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST
1082 
1083  // SECTION_ID_FRAME_SIDE_DATA_COMPONENT
1085  }
1086 
1087  // SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST
1089  break;
1090  }
1091  }
1092 
1093  av_bprint_finalize(&pbuf, NULL);
1094 }
1095 
1097  int width,
1098  int height,
1099  const AVPacketSideData *sd,
1100  SectionID id_data)
1101 {
1102  const char *name = av_packet_side_data_name(sd->type);
1103 
1104  avtext_print_section_header(tfc, sd, id_data);
1105  print_str("side_data_type", name ? name : "unknown");
1106  if (sd->type == AV_PKT_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
1107  print_displaymatrix(tfc, (const int32_t*)sd->data);
1108  } else if (sd->type == AV_PKT_DATA_STEREO3D) {
1109  const AVStereo3D *stereo = (AVStereo3D *)sd->data;
1110  print_str("type", av_stereo3d_type_name(stereo->type));
1111  print_int("inverted", !!(stereo->flags & AV_STEREO3D_FLAG_INVERT));
1112  print_str("view", av_stereo3d_view_name(stereo->view));
1113  print_str("primary_eye", av_stereo3d_primary_eye_name(stereo->primary_eye));
1114  print_int("baseline", stereo->baseline);
1115  print_q("horizontal_disparity_adjustment", stereo->horizontal_disparity_adjustment, '/');
1116  print_q("horizontal_field_of_view", stereo->horizontal_field_of_view, '/');
1117  } else if (sd->type == AV_PKT_DATA_SPHERICAL) {
1118  const AVSphericalMapping *spherical = (AVSphericalMapping *)sd->data;
1119  print_str("projection", av_spherical_projection_name(spherical->projection));
1120  if (spherical->projection == AV_SPHERICAL_CUBEMAP) {
1121  print_int("padding", spherical->padding);
1122  } else if (spherical->projection == AV_SPHERICAL_EQUIRECTANGULAR_TILE) {
1123  size_t l, t, r, b;
1125  &l, &t, &r, &b);
1126  print_int("bound_left", l);
1127  print_int("bound_top", t);
1128  print_int("bound_right", r);
1129  print_int("bound_bottom", b);
1130  }
1131 
1132  print_int("yaw", (double) spherical->yaw / (1 << 16));
1133  print_int("pitch", (double) spherical->pitch / (1 << 16));
1134  print_int("roll", (double) spherical->roll / (1 << 16));
1135  } else if (sd->type == AV_PKT_DATA_SKIP_SAMPLES && sd->size == 10) {
1136  print_int("skip_samples", AV_RL32(sd->data));
1137  print_int("discard_padding", AV_RL32(sd->data + 4));
1138  print_int("skip_reason", AV_RL8(sd->data + 8));
1139  print_int("discard_reason", AV_RL8(sd->data + 9));
1140  } else if (sd->type == AV_PKT_DATA_MASTERING_DISPLAY_METADATA) {
1142  } else if (sd->type == AV_PKT_DATA_CONTENT_LIGHT_LEVEL) {
1144  } else if (sd->type == AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT) {
1146  tfc, (const AVAmbientViewingEnvironment *)sd->data);
1147  } else if (sd->type == AV_PKT_DATA_DYNAMIC_HDR10_PLUS) {
1150  } else if (sd->type == AV_PKT_DATA_DOVI_CONF) {
1152  const char *comp = "unknown";
1153  print_int("dv_version_major", dovi->dv_version_major);
1154  print_int("dv_version_minor", dovi->dv_version_minor);
1155  print_int("dv_profile", dovi->dv_profile);
1156  print_int("dv_level", dovi->dv_level);
1157  print_int("rpu_present_flag", dovi->rpu_present_flag);
1158  print_int("el_present_flag", dovi->el_present_flag);
1159  print_int("bl_present_flag", dovi->bl_present_flag);
1160  print_int("dv_bl_signal_compatibility_id", dovi->dv_bl_signal_compatibility_id);
1161  switch (dovi->dv_md_compression)
1162  {
1163  case AV_DOVI_COMPRESSION_NONE: comp = "none"; break;
1164  case AV_DOVI_COMPRESSION_LIMITED: comp = "limited"; break;
1165  case AV_DOVI_COMPRESSION_RESERVED: comp = "reserved"; break;
1166  case AV_DOVI_COMPRESSION_EXTENDED: comp = "extended"; break;
1167  }
1168  print_str("dv_md_compression", comp);
1169  } else if (sd->type == AV_PKT_DATA_AUDIO_SERVICE_TYPE) {
1170  enum AVAudioServiceType *t = (enum AVAudioServiceType *)sd->data;
1171  print_int("service_type", *t);
1172  } else if (sd->type == AV_PKT_DATA_MPEGTS_STREAM_ID) {
1173  print_int("id", *sd->data);
1174  } else if (sd->type == AV_PKT_DATA_CPB_PROPERTIES) {
1175  const AVCPBProperties *prop = (AVCPBProperties *)sd->data;
1176  print_int("max_bitrate", prop->max_bitrate);
1177  print_int("min_bitrate", prop->min_bitrate);
1178  print_int("avg_bitrate", prop->avg_bitrate);
1179  print_int("buffer_size", prop->buffer_size);
1180  print_int("vbv_delay", prop->vbv_delay);
1181  } else if (sd->type == AV_PKT_DATA_WEBVTT_IDENTIFIER ||
1183  if (do_show_data)
1184  avtext_print_data(tfc, "data", sd->data, sd->size);
1185  avtext_print_data_hash(tfc, "data_hash", sd->data, sd->size);
1186  } else if (sd->type == AV_PKT_DATA_FRAME_CROPPING && sd->size >= sizeof(uint32_t) * 4) {
1187  print_int("crop_top", AV_RL32(sd->data));
1188  print_int("crop_bottom", AV_RL32(sd->data + 4));
1189  print_int("crop_left", AV_RL32(sd->data + 8));
1190  print_int("crop_right", AV_RL32(sd->data + 12));
1191  } else if (sd->type == AV_PKT_DATA_AFD && sd->size > 0) {
1192  print_int("active_format", *sd->data);
1193  } else if (sd->type == AV_PKT_DATA_EXIF) {
1194  print_int("size", sd->size);
1195  } else if (sd->type == AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL && sd->size >= 8) {
1196  print_int("block_additional_id", AV_RB64(sd->data));
1197  if (do_show_data)
1198  avtext_print_data(tfc, "block_additional_data", sd->data + 8, sd->size - 8);
1199  }
1200 }
1201 
1202 static void print_private_data(AVTextFormatContext *tfc, void *priv_data)
1203 {
1204  const AVOption *opt = NULL;
1205  while (opt = av_opt_next(priv_data, opt)) {
1206  uint8_t *str;
1207  if (!(opt->flags & AV_OPT_FLAG_EXPORT)) continue;
1208  if (av_opt_get(priv_data, opt->name, 0, &str) >= 0) {
1209  print_str(opt->name, str);
1210  av_free(str);
1211  }
1212  }
1213 }
1214 
1216 {
1217  const char *s = av_get_pix_fmt_name(pix_fmt);
1218  enum AVPixelFormat swapped_pix_fmt;
1219 
1220  if (!s) {
1221  print_str_opt("pix_fmt", "unknown");
1222  } else if (!do_bitexact ||
1223  (swapped_pix_fmt = av_pix_fmt_swap_endianness(pix_fmt)) == AV_PIX_FMT_NONE) {
1224  print_str ("pix_fmt", s);
1225  } else {
1226  const char *s2 = av_get_pix_fmt_name(swapped_pix_fmt);
1227  char buf[128];
1228  size_t i = 0;
1229 
1230  while (s[i] && s[i] == s2[i] && i < sizeof(buf) - 1) {
1231  buf[i] = s[i];
1232  i++;
1233  }
1234  buf[i] = '\0';
1235 
1236  print_str ("pix_fmt", buf);
1237  }
1238 }
1239 
1241 {
1242  const char *val = av_color_range_name(color_range);
1244  print_str_opt("color_range", "unknown");
1245  } else {
1246  print_str("color_range", val);
1247  }
1248 }
1249 
1250 static void print_color_space(AVTextFormatContext *tfc, enum AVColorSpace color_space)
1251 {
1252  const char *val = av_color_space_name(color_space);
1253  if (!val || color_space == AVCOL_SPC_UNSPECIFIED) {
1254  print_str_opt("color_space", "unknown");
1255  } else {
1256  print_str("color_space", val);
1257  }
1258 }
1259 
1261 {
1264  print_str_opt("color_primaries", "unknown");
1265  } else {
1266  print_str("color_primaries", val);
1267  }
1268 }
1269 
1271 {
1272  const char *val = av_color_transfer_name(color_trc);
1273  if (!val || color_trc == AVCOL_TRC_UNSPECIFIED) {
1274  print_str_opt("color_transfer", "unknown");
1275  } else {
1276  print_str("color_transfer", val);
1277  }
1278 }
1279 
1280 static void print_chroma_location(AVTextFormatContext *tfc, enum AVChromaLocation chroma_location)
1281 {
1282  const char *val = av_chroma_location_name(chroma_location);
1283  if (!val || chroma_location == AVCHROMA_LOC_UNSPECIFIED) {
1284  print_str_opt("chroma_location", "unspecified");
1285  } else {
1286  print_str("chroma_location", val);
1287  }
1288 }
1289 
1290 static void print_alpha_mode(AVTextFormatContext *tfc, enum AVAlphaMode alpha_mode)
1291 {
1292  const char *val = av_alpha_mode_name(alpha_mode);
1293  if (!val || alpha_mode == AVALPHA_MODE_UNSPECIFIED) {
1294  print_str_opt("alpha_mode", "unspecified");
1295  } else {
1296  print_str("alpha_mode", val);
1297  }
1298 }
1299 
1300 static void clear_log(int need_lock)
1301 {
1302  int i;
1303 
1304  if (need_lock)
1306  for (i=0; i<log_buffer_size; i++) {
1307  av_freep(&log_buffer[i].context_name);
1308  av_freep(&log_buffer[i].parent_name);
1309  av_freep(&log_buffer[i].log_message);
1310  }
1311  log_buffer_size = 0;
1312  if(need_lock)
1314 }
1315 
1316 static int show_log(AVTextFormatContext *tfc, int section_ids, int section_id, int log_level)
1317 {
1318  int i;
1320  if (!log_buffer_size) {
1322  return 0;
1323  }
1324  avtext_print_section_header(tfc, NULL, section_ids);
1325 
1326  for (i=0; i<log_buffer_size; i++) {
1327  if (log_buffer[i].log_level <= log_level) {
1328  avtext_print_section_header(tfc, NULL, section_id);
1329  print_str("context", log_buffer[i].context_name);
1330  print_int("level", log_buffer[i].log_level);
1331  print_int("category", log_buffer[i].category);
1332  if (log_buffer[i].parent_name) {
1333  print_str("parent_context", log_buffer[i].parent_name);
1334  print_int("parent_category", log_buffer[i].parent_category);
1335  } else {
1336  print_str_opt("parent_context", "N/A");
1337  print_str_opt("parent_category", "N/A");
1338  }
1339  print_str("message", log_buffer[i].log_message);
1341  }
1342  }
1343  clear_log(0);
1345 
1347 
1348  return 0;
1349 }
1350 
1351 static void show_packet(AVTextFormatContext *tfc, InputFile *ifile, AVPacket *pkt, int packet_idx)
1352 {
1353  AVStream *st = ifile->streams[pkt->stream_index].st;
1354  AVBPrint pbuf;
1355  const char *s;
1356 
1358 
1360 
1362  if (s) print_str ("codec_type", s);
1363  else print_str_opt("codec_type", "unknown");
1364  print_int("stream_index", pkt->stream_index);
1365  print_ts ("pts", pkt->pts);
1366  print_time("pts_time", pkt->pts, &st->time_base);
1367  print_ts ("dts", pkt->dts);
1368  print_time("dts_time", pkt->dts, &st->time_base);
1369  print_duration_ts("duration", pkt->duration);
1370  print_duration_time("duration_time", pkt->duration, &st->time_base);
1372  if (pkt->pos != -1) print_fmt ("pos", "%"PRId64, pkt->pos);
1373  else print_str_opt("pos", "N/A");
1374  print_fmt("flags", "%c%c%c", pkt->flags & AV_PKT_FLAG_KEY ? 'K' : '_',
1375  pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_',
1376  pkt->flags & AV_PKT_FLAG_CORRUPT ? 'C' : '_');
1377  if (do_show_data)
1378  avtext_print_data(tfc, "data", pkt->data, pkt->size);
1379  avtext_print_data_hash(tfc, "data_hash", pkt->data, pkt->size);
1380 
1381  if (pkt->side_data_elems) {
1382  size_t size;
1383  const uint8_t *side_metadata;
1384 
1386  if (side_metadata && size && do_show_packet_tags) {
1387  AVDictionary *dict = NULL;
1388  if (av_packet_unpack_dictionary(side_metadata, size, &dict) >= 0)
1389  show_tags(tfc, dict, SECTION_ID_PACKET_TAGS);
1390  av_dict_free(&dict);
1391  }
1392 
1394  for (int i = 0; i < pkt->side_data_elems; i++) {
1398  }
1400  }
1401 
1403 
1404  av_bprint_finalize(&pbuf, NULL);
1405  fflush(stdout);
1406 }
1407 
1408 static void show_subtitle(AVTextFormatContext *tfc, AVSubtitle *sub, AVStream *stream,
1410 {
1411  AVBPrint pbuf;
1412 
1414 
1416 
1417  print_str ("media_type", "subtitle");
1418  print_ts ("pts", sub->pts);
1419  print_time("pts_time", sub->pts, &AV_TIME_BASE_Q);
1420  print_int ("format", sub->format);
1421  print_int ("start_display_time", sub->start_display_time);
1422  print_int ("end_display_time", sub->end_display_time);
1423  print_int ("num_rects", sub->num_rects);
1424 
1426 
1427  av_bprint_finalize(&pbuf, NULL);
1428  fflush(stdout);
1429 }
1430 
1431 static void print_iamf_param_definition(AVTextFormatContext *tfc, const char *name,
1432  const AVIAMFParamDefinition *param, SectionID section_id);
1433 
1435  const AVFrame *frame,
1436  const AVStream *stream)
1437 {
1439 
1440  for (int i = 0; i < frame->nb_side_data; i++) {
1441  const AVFrameSideData *sd = frame->side_data[i];
1442  const char *name;
1443 
1446  print_str("side_data_type", name ? name : "unknown");
1447  if (sd->type == AV_FRAME_DATA_DOWNMIX_INFO) {
1448  print_downmix_info(tfc, (AVDownmixInfo *)sd->data);
1449  } else if (sd->type == AV_FRAME_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
1450  print_displaymatrix(tfc, (const int32_t*)sd->data);
1451  } else if (sd->type == AV_FRAME_DATA_AFD && sd->size > 0) {
1452  print_int("active_format", *sd->data);
1453  } else if (sd->type == AV_FRAME_DATA_GOP_TIMECODE && sd->size >= 8) {
1454  char tcbuf[AV_TIMECODE_STR_SIZE];
1455  av_timecode_make_mpeg_tc_string(tcbuf, *(int64_t *)(sd->data));
1456  print_str("timecode", tcbuf);
1457  } else if (sd->type == AV_FRAME_DATA_S12M_TIMECODE && sd->size == 16) {
1458  uint32_t *tc = (uint32_t*)sd->data;
1459  int m = FFMIN(tc[0],3);
1461  for (int j = 1; j <= m ; j++) {
1462  char tcbuf[AV_TIMECODE_STR_SIZE];
1463  av_timecode_make_smpte_tc_string2(tcbuf, stream->avg_frame_rate, tc[j], 0, 0);
1465  print_str("value", tcbuf);
1467  }
1469  } else if (sd->type == AV_FRAME_DATA_MASTERING_DISPLAY_METADATA) {
1471  } else if (sd->type == AV_FRAME_DATA_DYNAMIC_HDR_PLUS) {
1474  } else if (sd->type == AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5) {
1477  } else if (sd->type == AV_FRAME_DATA_CONTENT_LIGHT_LEVEL) {
1479  } else if (sd->type == AV_FRAME_DATA_ICC_PROFILE) {
1481  if (tag)
1482  print_str(tag->key, tag->value);
1483  print_int("size", sd->size);
1484  } else if (sd->type == AV_FRAME_DATA_DOVI_METADATA) {
1485  print_dovi_metadata(tfc, (const AVDOVIMetadata *)sd->data);
1486  } else if (sd->type == AV_FRAME_DATA_DYNAMIC_HDR_VIVID) {
1489  } else if (sd->type == AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT) {
1491  } else if (sd->type == AV_FRAME_DATA_FILM_GRAIN_PARAMS) {
1493  print_film_grain_params(tfc, fgp);
1494  } else if (sd->type == AV_FRAME_DATA_VIEW_ID) {
1495  print_int("view_id", *(int*)sd->data);
1496  } else if (sd->type == AV_FRAME_DATA_EXIF) {
1497  print_int("size", sd->size);
1498  } else if (sd->type == AV_FRAME_DATA_IAMF_MIX_GAIN_PARAM ||
1501  const AVIAMFParamDefinition *param = (AVIAMFParamDefinition *)sd->data;
1503  }
1505  }
1507 }
1508 
1511 {
1512  FrameData *fd = frame->opaque_ref ? (FrameData*)frame->opaque_ref->data : NULL;
1513  AVBPrint pbuf;
1514  char val_str[128];
1515  const char *s;
1516 
1518 
1520 
1522  if (s) print_str ("media_type", s);
1523  else print_str_opt("media_type", "unknown");
1524  print_int("stream_index", stream->index);
1525  print_int("key_frame", !!(frame->flags & AV_FRAME_FLAG_KEY));
1526  print_ts ("pts", frame->pts);
1527  print_time("pts_time", frame->pts, &stream->time_base);
1528  print_ts ("pkt_dts", frame->pkt_dts);
1529  print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base);
1530  print_ts ("best_effort_timestamp", frame->best_effort_timestamp);
1531  print_time("best_effort_timestamp_time", frame->best_effort_timestamp, &stream->time_base);
1532  print_duration_ts ("duration", frame->duration);
1533  print_duration_time("duration_time", frame->duration, &stream->time_base);
1534  if (fd && fd->pkt_pos != -1) print_fmt ("pkt_pos", "%"PRId64, fd->pkt_pos);
1535  else print_str_opt("pkt_pos", "N/A");
1536  if (fd && fd->pkt_size != -1) print_int_fmt("pkt_size", fd->pkt_size, AV_TEXTFORMAT_VALUE_FMT_BYTE, unit_byte_str);
1537  else print_str_opt("pkt_size", "N/A");
1538 
1539  switch (stream->codecpar->codec_type) {
1540  AVRational sar;
1541 
1542  case AVMEDIA_TYPE_VIDEO:
1543  print_int("width", frame->width);
1544  print_int("height", frame->height);
1545  print_int("crop_top", frame->crop_top);
1546  print_int("crop_bottom", frame->crop_bottom);
1547  print_int("crop_left", frame->crop_left);
1548  print_int("crop_right", frame->crop_right);
1549  print_pixel_format(tfc, frame->format);
1550  sar = av_guess_sample_aspect_ratio(fmt_ctx, stream, frame);
1551  if (sar.num) {
1552  print_q("sample_aspect_ratio", sar, ':');
1553  } else {
1554  print_str_opt("sample_aspect_ratio", "N/A");
1555  }
1556  print_fmt("pict_type", "%c", av_get_picture_type_char(frame->pict_type));
1557  print_int("interlaced_frame", !!(frame->flags & AV_FRAME_FLAG_INTERLACED));
1558  print_int("top_field_first", !!(frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST));
1559  print_int("lossless", !!(frame->flags & AV_FRAME_FLAG_LOSSLESS));
1560  print_int("repeat_pict", frame->repeat_pict);
1561 
1562  print_color_range(tfc, frame->color_range);
1563  print_color_space(tfc, frame->colorspace);
1564  print_primaries(tfc, frame->color_primaries);
1565  print_color_trc(tfc, frame->color_trc);
1566  print_chroma_location(tfc, frame->chroma_location);
1567  print_alpha_mode(tfc, frame->alpha_mode);
1568  break;
1569 
1570  case AVMEDIA_TYPE_AUDIO:
1571  s = av_get_sample_fmt_name(frame->format);
1572  if (s) print_str ("sample_fmt", s);
1573  else print_str_opt("sample_fmt", "unknown");
1574  print_int("nb_samples", frame->nb_samples);
1575  print_int("channels", frame->ch_layout.nb_channels);
1576  if (frame->ch_layout.order != AV_CHANNEL_ORDER_UNSPEC) {
1577  av_channel_layout_describe(&frame->ch_layout, val_str, sizeof(val_str));
1578  print_str ("channel_layout", val_str);
1579  } else
1580  print_str_opt("channel_layout", "unknown");
1581  break;
1582  }
1583  if (do_show_frame_tags)
1584  show_tags(tfc, frame->metadata, SECTION_ID_FRAME_TAGS);
1585  if (do_show_log)
1587  if (frame->nb_side_data)
1588  print_frame_side_data(tfc, frame, stream);
1589 
1591 
1592  av_bprint_finalize(&pbuf, NULL);
1593  fflush(stdout);
1594 }
1595 
1597  InputFile *ifile,
1598  AVFrame *frame, const AVPacket *pkt,
1599  int *packet_new)
1600 {
1601  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
1604  AVSubtitle sub;
1605  int ret = 0, got_frame = 0;
1606 
1607  clear_log(1);
1608  if (dec_ctx) {
1609  switch (par->codec_type) {
1610  case AVMEDIA_TYPE_VIDEO:
1611  case AVMEDIA_TYPE_AUDIO:
1612  if (*packet_new) {
1614  if (ret == AVERROR(EAGAIN)) {
1615  ret = 0;
1616  } else if (ret >= 0 || ret == AVERROR_EOF) {
1617  ret = 0;
1618  *packet_new = 0;
1619  }
1620  }
1621  if (ret >= 0) {
1623  if (ret >= 0) {
1624  got_frame = 1;
1625  } else if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
1626  ret = 0;
1627  }
1628  }
1629  break;
1630 
1631  case AVMEDIA_TYPE_SUBTITLE:
1632  if (*packet_new)
1633  ret = avcodec_decode_subtitle2(dec_ctx, &sub, &got_frame, pkt);
1634  *packet_new = 0;
1635  break;
1636  default:
1637  *packet_new = 0;
1638  }
1639  } else {
1640  *packet_new = 0;
1641  }
1642 
1643  if (ret < 0)
1644  return ret;
1645  if (got_frame) {
1646  int is_sub = (par->codec_type == AVMEDIA_TYPE_SUBTITLE);
1648  if (do_show_frames)
1649  if (is_sub)
1650  show_subtitle(tfc, &sub, ifile->streams[pkt->stream_index].st, fmt_ctx);
1651  else
1652  show_frame(tfc, frame, ifile->streams[pkt->stream_index].st, fmt_ctx);
1653 
1654  if (!is_sub && do_analyze_frames) {
1655  for (int i = 0; i < frame->nb_side_data; i++) {
1656  if (frame->side_data[i]->type == AV_FRAME_DATA_A53_CC)
1658  else if (frame->side_data[i]->type == AV_FRAME_DATA_FILM_GRAIN_PARAMS)
1660  }
1661  }
1662 
1663  if (is_sub)
1664  avsubtitle_free(&sub);
1665  }
1666  return got_frame || *packet_new;
1667 }
1668 
1669 static void log_read_interval(const ReadInterval *interval, void *log_ctx, int log_level)
1670 {
1671  av_log(log_ctx, log_level, "id:%d", interval->id);
1672 
1673  if (interval->has_start) {
1674  av_log(log_ctx, log_level, " start:%s%s", interval->start_is_offset ? "+" : "",
1675  av_ts2timestr(interval->start, &AV_TIME_BASE_Q));
1676  } else {
1677  av_log(log_ctx, log_level, " start:N/A");
1678  }
1679 
1680  if (interval->has_end) {
1681  av_log(log_ctx, log_level, " end:%s", interval->end_is_offset ? "+" : "");
1682  if (interval->duration_frames)
1683  av_log(log_ctx, log_level, "#%"PRId64, interval->end);
1684  else
1685  av_log(log_ctx, log_level, "%s", av_ts2timestr(interval->end, &AV_TIME_BASE_Q));
1686  } else {
1687  av_log(log_ctx, log_level, " end:N/A");
1688  }
1689 
1690  av_log(log_ctx, log_level, "\n");
1691 }
1692 
1694  const ReadInterval *interval, int64_t *cur_ts)
1695 {
1696  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
1697  AVPacket *pkt = NULL;
1698  AVFrame *frame = NULL;
1699  int ret = 0, i = 0, frame_count = 0;
1700  int64_t start = -INT64_MAX, end = interval->end;
1701  int has_start = 0, has_end = interval->has_end && !interval->end_is_offset;
1702 
1703  av_log(NULL, AV_LOG_VERBOSE, "Processing read interval ");
1705 
1706  if (interval->has_start) {
1707  int64_t target;
1708  if (interval->start_is_offset) {
1709  if (*cur_ts == AV_NOPTS_VALUE) {
1711  "Could not seek to relative position since current "
1712  "timestamp is not defined\n");
1713  ret = AVERROR(EINVAL);
1714  goto end;
1715  }
1716  target = *cur_ts + interval->start;
1717  } else {
1718  target = interval->start;
1719  }
1720 
1721  av_log(NULL, AV_LOG_VERBOSE, "Seeking to read interval start point %s\n",
1722  av_ts2timestr(target, &AV_TIME_BASE_Q));
1723  if ((ret = avformat_seek_file(fmt_ctx, -1, -INT64_MAX, target, INT64_MAX, 0)) < 0) {
1724  av_log(NULL, AV_LOG_ERROR, "Could not seek to position %"PRId64": %s\n",
1725  interval->start, av_err2str(ret));
1726  goto end;
1727  }
1728  }
1729 
1730  frame = av_frame_alloc();
1731  if (!frame) {
1732  ret = AVERROR(ENOMEM);
1733  goto end;
1734  }
1735  pkt = av_packet_alloc();
1736  if (!pkt) {
1737  ret = AVERROR(ENOMEM);
1738  goto end;
1739  }
1740  while (!av_read_frame(fmt_ctx, pkt)) {
1741  if (fmt_ctx->nb_streams > nb_streams) {
1748  }
1750  AVRational tb = ifile->streams[pkt->stream_index].st->time_base;
1751  int64_t pts = pkt->pts != AV_NOPTS_VALUE ? pkt->pts : pkt->dts;
1752 
1753  if (pts != AV_NOPTS_VALUE)
1754  *cur_ts = av_rescale_q(pts, tb, AV_TIME_BASE_Q);
1755 
1756  if (!has_start && *cur_ts != AV_NOPTS_VALUE) {
1757  start = *cur_ts;
1758  has_start = 1;
1759  }
1760 
1761  if (has_start && !has_end && interval->end_is_offset) {
1762  end = start + interval->end;
1763  has_end = 1;
1764  }
1765 
1766  if (interval->end_is_offset && interval->duration_frames) {
1767  if (frame_count >= interval->end)
1768  break;
1769  } else if (has_end && *cur_ts != AV_NOPTS_VALUE && *cur_ts >= end) {
1770  break;
1771  }
1772 
1773  frame_count++;
1774  if (do_read_packets) {
1775  if (do_show_packets)
1776  show_packet(tfc, ifile, pkt, i++);
1778  }
1779  if (do_read_frames) {
1780  int packet_new = 1;
1781  FrameData *fd;
1782 
1783  pkt->opaque_ref = av_buffer_allocz(sizeof(*fd));
1784  if (!pkt->opaque_ref) {
1785  ret = AVERROR(ENOMEM);
1786  goto end;
1787  }
1788  fd = (FrameData*)pkt->opaque_ref->data;
1789  fd->pkt_pos = pkt->pos;
1790  fd->pkt_size = pkt->size;
1791 
1792  while (process_frame(tfc, ifile, frame, pkt, &packet_new) > 0);
1793  }
1794  }
1796  }
1798  //Flush remaining frames that are cached in the decoder
1799  for (int i = 0; i < ifile->nb_streams; i++) {
1800  pkt->stream_index = i;
1801  if (do_read_frames) {
1802  while (process_frame(tfc, ifile, frame, pkt, &(int){1}) > 0);
1803  }
1804  }
1805 
1806 end:
1807  av_frame_free(&frame);
1808  av_packet_free(&pkt);
1809  if (ret < 0) {
1810  av_log(NULL, AV_LOG_ERROR, "Could not read packets in interval ");
1811  log_read_interval(interval, NULL, AV_LOG_ERROR);
1812  }
1813  return ret;
1814 }
1815 
1816 static void flush_buffers(InputFile *ifile)
1817 {
1818  int i;
1819 
1820  if (!do_read_frames)
1821  return;
1822  for (i = 0; i < ifile->nb_streams; i++) {
1823  if (ifile->streams[i].dec_ctx)
1825  }
1826 }
1827 
1829 {
1830  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
1831  int ret = 0;
1832  int64_t cur_ts = fmt_ctx->start_time;
1833 
1834  if (read_intervals_nb == 0) {
1835  ReadInterval interval = (ReadInterval) { .has_start = 0, .has_end = 0 };
1836  ret = read_interval_packets(tfc, ifile, &interval, &cur_ts);
1837  } else {
1838  for (int i = 0; i < read_intervals_nb; i++) {
1839  /* flushing buffers can reset parts of the private context which may be
1840  * read by show_streams(), so only flush between each read_interval */
1841  if (i)
1842  flush_buffers(ifile);
1843  ret = read_interval_packets(tfc, ifile, &read_intervals[i], &cur_ts);
1844  if (ret < 0)
1845  break;
1846  }
1847  }
1848 
1849  return ret;
1850 }
1851 
1852 static void print_dispositions(AVTextFormatContext *tfc, uint32_t disposition, SectionID section_id)
1853 {
1854  avtext_print_section_header(tfc, NULL, section_id);
1855  for (unsigned i = 0; i < sizeof(disposition) * CHAR_BIT; i++) {
1856  const char *disposition_str = av_disposition_to_string(1U << i);
1857 
1858  if (disposition_str)
1859  print_int(disposition_str, !!(disposition & (1U << i)));
1860  }
1862 }
1863 
1864 #define IN_PROGRAM 1
1865 #define IN_STREAM_GROUP 2
1866 
1867 static int show_stream(AVTextFormatContext *tfc, AVFormatContext *fmt_ctx, int stream_idx, InputStream *ist, int container)
1868 {
1869  AVStream *stream = ist->st;
1870  AVCodecParameters *par;
1872  char val_str[128];
1873  const char *s;
1874  AVRational sar, dar;
1875  AVBPrint pbuf;
1876  const AVCodecDescriptor *cd;
1877  const SectionID section_header[] = {
1881  };
1882  const SectionID section_disposition[] = {
1886  };
1887  const SectionID section_tags[] = {
1891  };
1892  int ret = 0;
1893  const char *profile = NULL;
1894 
1895  av_assert0(container < FF_ARRAY_ELEMS(section_header));
1896 
1898 
1899  avtext_print_section_header(tfc, NULL, section_header[container]);
1900 
1901  print_int("index", stream->index);
1902 
1903  par = stream->codecpar;
1904  dec_ctx = ist->dec_ctx;
1905  if (cd = avcodec_descriptor_get(par->codec_id)) {
1906  print_str("codec_name", cd->name);
1907  if (!do_bitexact) {
1908  print_str("codec_long_name",
1909  cd->long_name ? cd->long_name : "unknown");
1910  }
1911  } else {
1912  print_str_opt("codec_name", "unknown");
1913  if (!do_bitexact) {
1914  print_str_opt("codec_long_name", "unknown");
1915  }
1916  }
1917 
1918  if (!do_bitexact && (profile = avcodec_profile_name(par->codec_id, par->profile)))
1919  print_str("profile", profile);
1920  else {
1921  if (par->profile != AV_PROFILE_UNKNOWN) {
1922  char profile_num[12];
1923  snprintf(profile_num, sizeof(profile_num), "%d", par->profile);
1924  print_str("profile", profile_num);
1925  } else
1926  print_str_opt("profile", "unknown");
1927  }
1928 
1930  if (s) print_str ("codec_type", s);
1931  else print_str_opt("codec_type", "unknown");
1932 
1933  /* print AVI/FourCC tag */
1934  print_str("codec_tag_string", av_fourcc2str(par->codec_tag));
1935  print_fmt("codec_tag", "0x%04"PRIx32, par->codec_tag);
1936 
1937  av_bprint_clear(&pbuf);
1938  if (!av_mime_codec_str(par, stream->avg_frame_rate, &pbuf))
1939  print_str("mime_codec_string", pbuf.str);
1940 
1941  switch (par->codec_type) {
1942  case AVMEDIA_TYPE_VIDEO:
1943  print_int("width", par->width);
1944  print_int("height", par->height);
1945  if (dec_ctx) {
1946  print_int("coded_width", dec_ctx->coded_width);
1947  print_int("coded_height", dec_ctx->coded_height);
1948 
1949  if (do_analyze_frames) {
1950  print_int("closed_captions", streams_with_closed_captions[stream->index]);
1951  print_int("film_grain", streams_with_film_grain[stream->index]);
1952  }
1953  }
1954  print_int("has_b_frames", par->video_delay);
1955  sar = av_guess_sample_aspect_ratio(fmt_ctx, stream, NULL);
1956  if (sar.num) {
1957  print_q("sample_aspect_ratio", sar, ':');
1958  av_reduce(&dar.num, &dar.den,
1959  (int64_t) par->width * sar.num,
1960  (int64_t) par->height * sar.den,
1961  1024*1024);
1962  print_q("display_aspect_ratio", dar, ':');
1963  } else {
1964  print_str_opt("sample_aspect_ratio", "N/A");
1965  print_str_opt("display_aspect_ratio", "N/A");
1966  }
1967  print_pixel_format(tfc, par->format);
1968  print_int("level", par->level);
1969 
1970  print_color_range(tfc, par->color_range);
1971  print_color_space(tfc, par->color_space);
1972  print_color_trc(tfc, par->color_trc);
1973  print_primaries(tfc, par->color_primaries);
1975 
1976  if (par->field_order == AV_FIELD_PROGRESSIVE)
1977  print_str("field_order", "progressive");
1978  else if (par->field_order == AV_FIELD_TT)
1979  print_str("field_order", "tt");
1980  else if (par->field_order == AV_FIELD_BB)
1981  print_str("field_order", "bb");
1982  else if (par->field_order == AV_FIELD_TB)
1983  print_str("field_order", "tb");
1984  else if (par->field_order == AV_FIELD_BT)
1985  print_str("field_order", "bt");
1986  else
1987  print_str_opt("field_order", "unknown");
1988 
1989  if (dec_ctx && do_read_frames)
1990  print_int("refs", dec_ctx->refs);
1991  break;
1992 
1993  case AVMEDIA_TYPE_AUDIO:
1995  if (s) print_str ("sample_fmt", s);
1996  else print_str_opt("sample_fmt", "unknown");
1997  print_val("sample_rate", par->sample_rate, unit_hertz_str);
1998  print_int("channels", par->ch_layout.nb_channels);
1999 
2000  if (par->ch_layout.order != AV_CHANNEL_ORDER_UNSPEC) {
2001  av_channel_layout_describe(&par->ch_layout, val_str, sizeof(val_str));
2002  print_str ("channel_layout", val_str);
2003  } else {
2004  print_str_opt("channel_layout", "unknown");
2005  }
2006 
2007  print_int("bits_per_sample", av_get_bits_per_sample(par->codec_id));
2008 
2009  print_int("initial_padding", par->initial_padding);
2010  break;
2011 
2012  case AVMEDIA_TYPE_SUBTITLE:
2013  if (par->width)
2014  print_int("width", par->width);
2015  else
2016  print_str_opt("width", "N/A");
2017  if (par->height)
2018  print_int("height", par->height);
2019  else
2020  print_str_opt("height", "N/A");
2021  break;
2022  }
2023 
2024  if (show_private_data) {
2025  if (dec_ctx && dec_ctx->codec->priv_class)
2027  if (fmt_ctx->iformat->priv_class)
2029  }
2030 
2031  if (fmt_ctx->iformat->flags & AVFMT_SHOW_IDS) print_fmt ("id", "0x%x", stream->id);
2032  else print_str_opt("id", "N/A");
2033  print_q("r_frame_rate", stream->r_frame_rate, '/');
2034  print_q("avg_frame_rate", stream->avg_frame_rate, '/');
2035  print_q("time_base", stream->time_base, '/');
2036  print_ts ("start_pts", stream->start_time);
2037  print_time("start_time", stream->start_time, &stream->time_base);
2038  print_ts ("duration_ts", stream->duration);
2039  print_time("duration", stream->duration, &stream->time_base);
2040  if (par->bit_rate > 0) print_val ("bit_rate", par->bit_rate, unit_bit_per_second_str);
2041  else print_str_opt("bit_rate", "N/A");
2042  if (dec_ctx && dec_ctx->rc_max_rate > 0)
2044  else
2045  print_str_opt("max_bit_rate", "N/A");
2046  if (dec_ctx && dec_ctx->bits_per_raw_sample > 0) print_fmt("bits_per_raw_sample", "%d", dec_ctx->bits_per_raw_sample);
2047  else print_str_opt("bits_per_raw_sample", "N/A");
2048  if (stream->nb_frames) print_fmt ("nb_frames", "%"PRId64, stream->nb_frames);
2049  else print_str_opt("nb_frames", "N/A");
2050  if (nb_streams_frames[stream_idx]) print_fmt ("nb_read_frames", "%"PRIu64, nb_streams_frames[stream_idx]);
2051  else print_str_opt("nb_read_frames", "N/A");
2052  if (nb_streams_packets[stream_idx]) print_fmt ("nb_read_packets", "%"PRIu64, nb_streams_packets[stream_idx]);
2053  else print_str_opt("nb_read_packets", "N/A");
2054  if (do_show_data)
2055  avtext_print_data(tfc, "extradata", par->extradata,
2056  par->extradata_size);
2057 
2058  if (par->extradata_size > 0) {
2059  print_int("extradata_size", par->extradata_size);
2060  avtext_print_data_hash(tfc, "extradata_hash", par->extradata,
2061  par->extradata_size);
2062  }
2063 
2064  /* Print disposition information */
2066  av_assert0(container < FF_ARRAY_ELEMS(section_disposition));
2067  print_dispositions(tfc, stream->disposition, section_disposition[container]);
2068  }
2069 
2070  if (do_show_stream_tags) {
2071  av_assert0(container < FF_ARRAY_ELEMS(section_tags));
2072  ret = show_tags(tfc, stream->metadata, section_tags[container]);
2073  }
2074 
2075  if (stream->codecpar->nb_coded_side_data) {
2077  for (int i = 0; i < stream->codecpar->nb_coded_side_data; i++) {
2078  print_pkt_side_data(tfc, stream->codecpar->width, stream->codecpar->height, &stream->codecpar->coded_side_data[i],
2081  }
2083  }
2084 
2086  av_bprint_finalize(&pbuf, NULL);
2087  fflush(stdout);
2088 
2089  return ret;
2090 }
2091 
2093 {
2094  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
2095  int ret = 0;
2096 
2098  for (int i = 0; i < ifile->nb_streams; i++)
2099  if (selected_streams[i]) {
2100  ret = show_stream(tfc, fmt_ctx, i, &ifile->streams[i], 0);
2101  if (ret < 0)
2102  break;
2103  }
2105 
2106  return ret;
2107 }
2108 
2110 {
2111  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
2112  int ret = 0;
2113 
2115  print_int("program_id", program->id);
2116  print_int("program_num", program->program_num);
2117  print_int("nb_streams", program->nb_stream_indexes);
2118  print_int("pmt_pid", program->pmt_pid);
2119  print_int("pcr_pid", program->pcr_pid);
2121  ret = show_tags(tfc, program->metadata, SECTION_ID_PROGRAM_TAGS);
2122  if (ret < 0)
2123  goto end;
2124 
2126  for (unsigned i = 0; i < program->nb_stream_indexes; i++) {
2127  if (selected_streams[program->stream_index[i]]) {
2128  ret = show_stream(tfc, fmt_ctx, program->stream_index[i], &ifile->streams[program->stream_index[i]], IN_PROGRAM);
2129  if (ret < 0)
2130  break;
2131  }
2132  }
2134 
2135 end:
2137  return ret;
2138 }
2139 
2141 {
2142  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
2143  int ret = 0;
2144 
2146  for (unsigned i = 0; i < fmt_ctx->nb_programs; i++) {
2148  if (!program)
2149  continue;
2150  ret = show_program(tfc, ifile, program);
2151  if (ret < 0)
2152  break;
2153  }
2155  return ret;
2156 }
2157 
2159  const AVStreamGroupTileGrid *tile_grid)
2160 {
2162  print_int("nb_tiles", tile_grid->nb_tiles);
2163  print_int("coded_width", tile_grid->coded_width);
2164  print_int("coded_height", tile_grid->coded_height);
2165  print_int("horizontal_offset", tile_grid->horizontal_offset);
2166  print_int("vertical_offset", tile_grid->vertical_offset);
2167  print_int("width", tile_grid->width);
2168  print_int("height", tile_grid->height);
2170  for (unsigned i = 0; i < tile_grid->nb_tiles; i++) {
2172  print_int("stream_index", tile_grid->offsets[i].idx);
2173  print_int("tile_horizontal_offset", tile_grid->offsets[i].horizontal);
2174  print_int("tile_vertical_offset", tile_grid->offsets[i].vertical);
2176  }
2178  if (tile_grid->nb_coded_side_data) {
2180  for (int i = 0; i < tile_grid->nb_coded_side_data; i++) {
2181  print_pkt_side_data(tfc, tile_grid->width, tile_grid->height, &tile_grid->coded_side_data[i],
2184  }
2186  }
2188 }
2189 
2191  const AVIAMFParamDefinition *param, SectionID section_id)
2192 {
2193  SectionID subsection_id, parameter_section_id;
2194  if (section_id == SECTION_ID_FRAME_SIDE_DATA)
2196  else {
2197  av_assert0(sections[section_id].children_ids[0] != -1);
2198  subsection_id = sections[section_id].children_ids[0];
2199  }
2200  av_assert0(sections[subsection_id].children_ids[0] != -1);
2201  parameter_section_id = sections[subsection_id].children_ids[0];
2202 
2203  // When printing as part of side-data, skip opening a section
2204  if (section_id != SECTION_ID_FRAME_SIDE_DATA)
2205  avtext_print_section_header(tfc, "IAMF Param Definition", section_id);
2206 
2207  if (name)
2208  print_str("name", name);
2209  print_int("nb_subblocks", param->nb_subblocks);
2210  print_int("type", param->type);
2211  print_int("parameter_id", param->parameter_id);
2212  print_int("parameter_rate", param->parameter_rate);
2213  print_int("duration", param->duration);
2214  print_int("constant_subblock_duration", param->constant_subblock_duration);
2215  if (param->nb_subblocks > 0)
2216  avtext_print_section_header(tfc, NULL, subsection_id);
2217  for (unsigned i = 0; i < param->nb_subblocks; i++) {
2218  const void *subblock = av_iamf_param_definition_get_subblock(param, i);
2219  switch(param->type) {
2221  const AVIAMFMixGain *mix = subblock;
2222  avtext_print_section_header(tfc, "IAMF Mix Gain Parameters", parameter_section_id);
2223  print_int("subblock_duration", mix->subblock_duration);
2224  print_int("animation_type", mix->animation_type);
2225  print_q("start_point_value", mix->start_point_value, '/');
2226  print_q("end_point_value", mix->end_point_value, '/');
2227  print_q("control_point_value", mix->control_point_value, '/');
2228  print_q("control_point_relative_time", mix->control_point_relative_time, '/');
2229  avtext_print_section_footer(tfc); // parameter_section_id
2230  break;
2231  }
2233  const AVIAMFDemixingInfo *demix = subblock;
2234  avtext_print_section_header(tfc, "IAMF Demixing Info", parameter_section_id);
2235  print_int("subblock_duration", demix->subblock_duration);
2236  print_int("dmixp_mode", demix->dmixp_mode);
2237  avtext_print_section_footer(tfc); // parameter_section_id
2238  break;
2239  }
2241  const AVIAMFReconGain *recon = subblock;
2242  avtext_print_section_header(tfc, "IAMF Recon Gain", parameter_section_id);
2243  print_int("subblock_duration", recon->subblock_duration);
2244  avtext_print_section_footer(tfc); // parameter_section_id
2245  break;
2246  }
2247  }
2248  }
2249  if (param->nb_subblocks > 0)
2250  avtext_print_section_footer(tfc); // subsection_id
2251 
2252  if (section_id != SECTION_ID_FRAME_SIDE_DATA)
2253  avtext_print_section_footer(tfc); // section_id
2254 }
2255 
2257  const AVIAMFAudioElement *audio_element)
2258 {
2259  AVBPrint pbuf;
2260 
2262 
2264  print_int("nb_layers", audio_element->nb_layers);
2265  print_int("audio_element_type", audio_element->audio_element_type);
2266  print_int("default_w", audio_element->default_w);
2268  for (unsigned i = 0; i < audio_element->nb_layers; i++) {
2269  const AVIAMFLayer *layer = audio_element->layers[i];
2270  char val_str[128];
2272  av_channel_layout_describe(&layer->ch_layout, val_str, sizeof(val_str));
2273  print_str("channel_layout", val_str);
2275  print_int("output_gain_flags", layer->output_gain_flags);
2276  print_q("output_gain", layer->output_gain, '/');
2277  } else if (audio_element->audio_element_type == AV_IAMF_AUDIO_ELEMENT_TYPE_SCENE) {
2278  print_int("ambisonics_mode", layer->ambisonics_mode);
2280  print_list_fmt("demixing_matrix", "%d/%d", layer->nb_demixing_matrix, 1, layer->demixing_matrix[idx].num,
2281  layer->demixing_matrix[idx].den);
2282  }
2283  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBCOMPONENT
2284  }
2285  if (audio_element->demixing_info)
2286  print_iamf_param_definition(tfc, "demixing_info", audio_element->demixing_info,
2288  if (audio_element->recon_gain_info)
2289  print_iamf_param_definition(tfc, "recon_gain_info", audio_element->recon_gain_info,
2291  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBCOMPONENTS
2292  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_COMPONENT
2293 
2294  av_bprint_finalize(&pbuf, NULL);
2295 }
2296 
2298 {
2300  print_int("nb_elements", submix->nb_elements);
2301  print_int("nb_layouts", submix->nb_layouts);
2302  print_q("default_mix_gain", submix->default_mix_gain, '/');
2304  for (unsigned i = 0; i < submix->nb_elements; i++) {
2305  const AVIAMFSubmixElement *element = submix->elements[i];
2306  avtext_print_section_header(tfc, "IAMF Submix Element", SECTION_ID_STREAM_GROUP_PIECE);
2307  print_int("stream_id", element->audio_element_id);
2308  print_q("default_mix_gain", element->default_mix_gain, '/');
2309  print_int("headphones_rendering_mode", element->headphones_rendering_mode);
2311  if (element->annotations) {
2312  const AVDictionaryEntry *annotation = NULL;
2314  while (annotation = av_dict_iterate(element->annotations, annotation))
2315  print_str(annotation->key, annotation->value);
2316  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBPIECE
2317  }
2318  if (element->element_mix_config)
2319  print_iamf_param_definition(tfc, "element_mix_config", element->element_mix_config,
2321  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBPIECES
2322  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_PIECE
2323  }
2324  if (submix->output_mix_config)
2325  print_iamf_param_definition(tfc, "output_mix_config", submix->output_mix_config,
2327  for (unsigned i = 0; i < submix->nb_layouts; i++) {
2328  const AVIAMFSubmixLayout *layout = submix->layouts[i];
2329  char val_str[128];
2330  avtext_print_section_header(tfc, "IAMF Submix Layout", SECTION_ID_STREAM_GROUP_PIECE);
2331  av_channel_layout_describe(&layout->sound_system, val_str, sizeof(val_str));
2332  print_str("sound_system", val_str);
2333  print_q("integrated_loudness", layout->integrated_loudness, '/');
2334  print_q("digital_peak", layout->digital_peak, '/');
2335  print_q("true_peak", layout->true_peak, '/');
2336  print_q("dialogue_anchored_loudness", layout->dialogue_anchored_loudness, '/');
2337  print_q("album_anchored_loudness", layout->album_anchored_loudness, '/');
2338  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_PIECE
2339  }
2340  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_PIECES
2341  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBCOMPONENT
2342 }
2343 
2345  const AVIAMFMixPresentation *mix_presentation)
2346 {
2348  print_int("nb_submixes", mix_presentation->nb_submixes);
2350  if (mix_presentation->annotations) {
2351  const AVDictionaryEntry *annotation = NULL;
2353  while (annotation = av_dict_iterate(mix_presentation->annotations, annotation))
2354  print_str(annotation->key, annotation->value);
2355  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBCOMPONENT
2356  }
2357  for (unsigned i = 0; i < mix_presentation->nb_submixes; i++)
2358  print_iamf_submix_params(tfc, mix_presentation->submixes[i]);
2359  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_SUBCOMPONENTS
2360  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_COMPONENT
2361 }
2362 
2364 {
2367  print_tile_grid_params(tfc, stg, stg->params.tile_grid);
2372  avtext_print_section_footer(tfc); // SECTION_ID_STREAM_GROUP_COMPONENTS
2373 }
2374 
2376 {
2377  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
2378  AVBPrint pbuf;
2379  int ret = 0;
2380 
2383  print_int("index", stg->index);
2384  if (fmt_ctx->iformat->flags & AVFMT_SHOW_IDS) print_fmt ("id", "0x%"PRIx64, stg->id);
2385  else print_str_opt("id", "N/A");
2386  print_int("nb_streams", stg->nb_streams);
2387  if (stg->type != AV_STREAM_GROUP_PARAMS_NONE)
2388  print_str("type", av_x_if_null(avformat_stream_group_name(stg->type), "unknown"));
2389  else
2390  print_str_opt("type", "unknown");
2392  print_stream_group_params(tfc, stg);
2393 
2394  /* Print disposition information */
2397 
2400  if (ret < 0)
2401  goto end;
2402 
2404  for (unsigned i = 0; i < stg->nb_streams; i++) {
2405  if (selected_streams[stg->streams[i]->index]) {
2406  ret = show_stream(tfc, fmt_ctx, stg->streams[i]->index, &ifile->streams[stg->streams[i]->index], IN_STREAM_GROUP);
2407  if (ret < 0)
2408  break;
2409  }
2410  }
2412 
2413 end:
2414  av_bprint_finalize(&pbuf, NULL);
2416  return ret;
2417 }
2418 
2420 {
2421  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
2422  int ret = 0;
2423 
2425  for (unsigned i = 0; i < fmt_ctx->nb_stream_groups; i++) {
2427 
2428  ret = show_stream_group(tfc, ifile, stg);
2429  if (ret < 0)
2430  break;
2431  }
2433  return ret;
2434 }
2435 
2437 {
2438  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
2439  int ret = 0;
2440 
2442  for (unsigned i = 0; i < fmt_ctx->nb_chapters; i++) {
2443  AVChapter *chapter = fmt_ctx->chapters[i];
2444 
2446  print_int("id", chapter->id);
2447  print_q ("time_base", chapter->time_base, '/');
2448  print_int("start", chapter->start);
2449  print_time("start_time", chapter->start, &chapter->time_base);
2450  print_int("end", chapter->end);
2451  print_time("end_time", chapter->end, &chapter->time_base);
2453  ret = show_tags(tfc, chapter->metadata, SECTION_ID_CHAPTER_TAGS);
2455  }
2457 
2458  return ret;
2459 }
2460 
2462 {
2463  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
2464  int64_t size = fmt_ctx->pb ? avio_size(fmt_ctx->pb) : -1;
2465  int ret = 0;
2466 
2468  print_str_validate("filename", fmt_ctx->url);
2469  print_int("nb_streams", fmt_ctx->nb_streams);
2470  print_int("nb_programs", fmt_ctx->nb_programs);
2471  print_int("nb_stream_groups", fmt_ctx->nb_stream_groups);
2472  print_str("format_name", fmt_ctx->iformat->name);
2473  if (!do_bitexact) {
2474  if (fmt_ctx->iformat->long_name) print_str ("format_long_name", fmt_ctx->iformat->long_name);
2475  else print_str_opt("format_long_name", "unknown");
2476  }
2477  print_time("start_time", fmt_ctx->start_time, &AV_TIME_BASE_Q);
2478  print_time("duration", fmt_ctx->duration, &AV_TIME_BASE_Q);
2480  else print_str_opt("size", "N/A");
2482  else print_str_opt("bit_rate", "N/A");
2483  print_int("probe_score", fmt_ctx->probe_score);
2484  if (do_show_format_tags)
2486 
2488  fflush(stdout);
2489  return ret;
2490 }
2491 
2492 static void show_error(AVTextFormatContext *tfc, int err)
2493 {
2495  print_int("code", err);
2496  print_str("string", av_err2str(err));
2498 }
2499 
2500 static int get_decoder_by_name(const char *codec_name, const AVCodec **codec)
2501 {
2502  if (codec_name == NULL)
2503  return 0;
2504 
2505  *codec = avcodec_find_decoder_by_name(codec_name);
2506  if (*codec == NULL) {
2508  "No codec could be found with name '%s'\n", codec_name);
2509  return AVERROR(EINVAL);
2510  }
2511  return 0;
2512 }
2513 
2515 {
2516  int ret;
2517 
2518 #define GET_DECODER(type_) \
2519  ret = get_decoder_by_name(type_##_codec_name, &fmt_ctx->type_##_codec); \
2520  if (ret < 0) return ret;
2521 
2522  GET_DECODER(audio);
2523  GET_DECODER(data);
2524  GET_DECODER(subtitle);
2525  GET_DECODER(video);
2526  return 0;
2527 }
2528 
2530 {
2531  const AVCodec *codec = NULL;
2532  switch (stream->codecpar->codec_type) {
2533  case AVMEDIA_TYPE_VIDEO: codec = fmt_ctx->video_codec; break;
2534  case AVMEDIA_TYPE_AUDIO: codec = fmt_ctx->audio_codec; break;
2535  case AVMEDIA_TYPE_SUBTITLE: codec = fmt_ctx->subtitle_codec; break;
2536  case AVMEDIA_TYPE_DATA: codec = fmt_ctx->data_codec; break;
2537  }
2538 
2539  if (codec != NULL)
2540  return codec;
2541 
2542  if (stream->codecpar->codec_id == AV_CODEC_ID_PROBE) {
2544  "Failed to probe codec for input stream %d\n", stream->index);
2545  return NULL;
2546  }
2547 
2548  codec = avcodec_find_decoder(stream->codecpar->codec_id);
2549  if (codec == NULL) {
2551  "Unsupported codec with id %d for input stream %d\n",
2552  stream->codecpar->codec_id, stream->index);
2553  return NULL;
2554  }
2555 
2556  return codec;
2557 }
2558 
2559 static int open_input_file(InputFile *ifile, const char *filename,
2560  const char *print_filename)
2561 {
2562  int err;
2564  const AVDictionaryEntry *t = NULL;
2565  int scan_all_pmts_set = 0;
2566 
2568  if (!fmt_ctx)
2569  return AVERROR(ENOMEM);
2570 
2571  err = set_decoders(fmt_ctx);
2572  if (err < 0)
2573  return err;
2574  if (!av_dict_get(format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE)) {
2575  av_dict_set(&format_opts, "scan_all_pmts", "1", AV_DICT_DONT_OVERWRITE);
2576  scan_all_pmts_set = 1;
2577  }
2578  if ((err = avformat_open_input(&fmt_ctx, filename,
2579  iformat, &format_opts)) < 0) {
2580  print_error(filename, err);
2581  return err;
2582  }
2583  if (print_filename) {
2584  av_freep(&fmt_ctx->url);
2585  fmt_ctx->url = av_strdup(print_filename);
2586  }
2587  ifile->fmt_ctx = fmt_ctx;
2588  if (scan_all_pmts_set)
2589  av_dict_set(&format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE);
2590  while ((t = av_dict_iterate(format_opts, t)))
2591  av_log(NULL, AV_LOG_WARNING, "Option %s skipped - not known to demuxer.\n", t->key);
2592 
2593  if (find_stream_info) {
2594  AVDictionary **opts;
2595  int orig_nb_streams = fmt_ctx->nb_streams;
2596 
2598  if (err < 0)
2599  return err;
2600 
2602 
2603  for (int i = 0; i < orig_nb_streams; i++)
2604  av_dict_free(&opts[i]);
2605  av_freep(&opts);
2606 
2607  if (err < 0) {
2608  print_error(filename, err);
2609  return err;
2610  }
2611  }
2612 
2613  av_dump_format(fmt_ctx, 0, filename, 0);
2614 
2615  ifile->streams = av_calloc(fmt_ctx->nb_streams, sizeof(*ifile->streams));
2616  if (!ifile->streams)
2617  exit(1);
2618  ifile->nb_streams = fmt_ctx->nb_streams;
2619 
2620  /* bind a decoder to each input stream */
2621  for (unsigned i = 0; i < fmt_ctx->nb_streams; i++) {
2622  InputStream *ist = &ifile->streams[i];
2623  AVStream *stream = fmt_ctx->streams[i];
2624  const AVCodec *codec;
2625 
2626  ist->st = stream;
2627 
2628  codec = get_decoder_for_stream(fmt_ctx, stream);
2629  if (!codec)
2630  continue;
2631 
2632  {
2633  AVDictionary *opts;
2634 
2636  fmt_ctx, stream, codec, &opts, NULL);
2637  if (err < 0)
2638  exit(1);
2639 
2640  ist->dec_ctx = avcodec_alloc_context3(codec);
2641  if (!ist->dec_ctx)
2642  exit(1);
2643 
2644  err = avcodec_parameters_to_context(ist->dec_ctx, stream->codecpar);
2645  if (err < 0)
2646  exit(1);
2647 
2648  if (do_show_log) {
2649  // For logging it is needed to disable at least frame threads as otherwise
2650  // the log information would need to be reordered and matches up to contexts and frames
2651  // That is in fact possible but not trivial
2652  av_dict_set(&codec_opts, "threads", "1", 0);
2653  }
2654 
2655  av_dict_set(&opts, "flags", "+copy_opaque", AV_DICT_MULTIKEY);
2656 
2657  ist->dec_ctx->pkt_timebase = stream->time_base;
2658 
2659  if (avcodec_open2(ist->dec_ctx, codec, &opts) < 0) {
2660  av_log(NULL, AV_LOG_WARNING, "Could not open codec for input stream %d\n",
2661  stream->index);
2662  exit(1);
2663  }
2664 
2665  if ((t = av_dict_iterate(opts, NULL))) {
2666  av_log(NULL, AV_LOG_ERROR, "Option %s for input stream %d not found\n",
2667  t->key, stream->index);
2668  return AVERROR_OPTION_NOT_FOUND;
2669  }
2670  }
2671  }
2672 
2673  ifile->fmt_ctx = fmt_ctx;
2674  return 0;
2675 }
2676 
2677 static void close_input_file(InputFile *ifile)
2678 {
2679 
2680  /* close decoder for each stream */
2681  for (int i = 0; i < ifile->nb_streams; i++)
2683 
2684  av_freep(&ifile->streams);
2685  ifile->nb_streams = 0;
2686 
2687  avformat_close_input(&ifile->fmt_ctx);
2688 }
2689 
2690 static int probe_file(AVTextFormatContext *tfc, const char *filename,
2691  const char *print_filename)
2692 {
2693  InputFile ifile = { 0 };
2694  int ret;
2695  int section_id;
2696 
2700 
2701  ret = open_input_file(&ifile, filename, print_filename);
2702  if (ret < 0)
2703  goto end;
2704 
2705 #define CHECK_END if (ret < 0) goto end
2706 
2707  nb_streams = ifile.fmt_ctx->nb_streams;
2713 
2714  for (unsigned i = 0; i < ifile.fmt_ctx->nb_streams; i++) {
2715  if (stream_specifier) {
2717  ifile.fmt_ctx->streams[i],
2719  CHECK_END;
2720  else
2721  selected_streams[i] = ret;
2722  ret = 0;
2723  } else {
2724  selected_streams[i] = 1;
2725  }
2726  if (!selected_streams[i])
2727  ifile.fmt_ctx->streams[i]->discard = AVDISCARD_ALL;
2728  }
2729 
2733  section_id = SECTION_ID_PACKETS_AND_FRAMES;
2734  else if (do_show_packets && !do_show_frames)
2735  section_id = SECTION_ID_PACKETS;
2736  else // (!do_show_packets && do_show_frames)
2737  section_id = SECTION_ID_FRAMES;
2739  avtext_print_section_header(tfc, NULL, section_id);
2740  ret = read_packets(tfc, &ifile);
2743  CHECK_END;
2744  }
2745 
2746  if (do_show_programs) {
2747  ret = show_programs(tfc, &ifile);
2748  CHECK_END;
2749  }
2750 
2751  if (do_show_stream_groups) {
2752  ret = show_stream_groups(tfc, &ifile);
2753  CHECK_END;
2754  }
2755 
2756  if (do_show_streams) {
2757  ret = show_streams(tfc, &ifile);
2758  CHECK_END;
2759  }
2760  if (do_show_chapters) {
2761  ret = show_chapters(tfc, &ifile);
2762  CHECK_END;
2763  }
2764  if (do_show_format) {
2765  ret = show_format(tfc, &ifile);
2766  CHECK_END;
2767  }
2768 
2769 end:
2770  if (ifile.fmt_ctx)
2771  close_input_file(&ifile);
2781 
2782  return ret;
2783 }
2784 
2785 static void show_usage(void)
2786 {
2787  av_log(NULL, AV_LOG_INFO, "Simple multimedia streams analyzer\n");
2788  av_log(NULL, AV_LOG_INFO, "usage: %s [OPTIONS] INPUT_FILE\n", program_name);
2789  av_log(NULL, AV_LOG_INFO, "\n");
2790 }
2791 
2793 {
2794  AVBPrint pbuf;
2796 
2798  print_str("version", FFMPEG_VERSION);
2799  print_fmt("copyright", "Copyright (c) %d-%d the FFmpeg developers",
2800  program_birth_year, CONFIG_THIS_YEAR);
2801  print_str("compiler_ident", CC_IDENT);
2802  print_str("configuration", FFMPEG_CONFIGURATION);
2804 
2805  av_bprint_finalize(&pbuf, NULL);
2806 }
2807 
2808 #define SHOW_LIB_VERSION(libname, LIBNAME) \
2809  do { \
2810  if (CONFIG_##LIBNAME) { \
2811  unsigned int version = libname##_version(); \
2812  avtext_print_section_header(tfc, NULL, SECTION_ID_LIBRARY_VERSION); \
2813  print_str("name", "lib" #libname); \
2814  print_int("major", LIB##LIBNAME##_VERSION_MAJOR); \
2815  print_int("minor", LIB##LIBNAME##_VERSION_MINOR); \
2816  print_int("micro", LIB##LIBNAME##_VERSION_MICRO); \
2817  print_int("version", version); \
2818  print_str("ident", LIB##LIBNAME##_IDENT); \
2819  avtext_print_section_footer(tfc); \
2820  } \
2821  } while (0)
2822 
2824 {
2826  SHOW_LIB_VERSION(avutil, AVUTIL);
2827  SHOW_LIB_VERSION(avcodec, AVCODEC);
2828  SHOW_LIB_VERSION(avformat, AVFORMAT);
2829  SHOW_LIB_VERSION(avdevice, AVDEVICE);
2830  SHOW_LIB_VERSION(avfilter, AVFILTER);
2831  SHOW_LIB_VERSION(swscale, SWSCALE);
2832  SHOW_LIB_VERSION(swresample, SWRESAMPLE);
2834 }
2835 
2836 #define PRINT_PIX_FMT_FLAG(flagname, name) \
2837  do { \
2838  print_int(name, !!(pixdesc->flags & AV_PIX_FMT_FLAG_##flagname)); \
2839  } while (0)
2840 
2842 {
2843  const AVPixFmtDescriptor *pixdesc = NULL;
2844  int i, n;
2845 
2847  while (pixdesc = av_pix_fmt_desc_next(pixdesc)) {
2849  print_str("name", pixdesc->name);
2850  print_int("nb_components", pixdesc->nb_components);
2851  if ((pixdesc->nb_components >= 3) && !(pixdesc->flags & AV_PIX_FMT_FLAG_RGB)) {
2852  print_int ("log2_chroma_w", pixdesc->log2_chroma_w);
2853  print_int ("log2_chroma_h", pixdesc->log2_chroma_h);
2854  } else {
2855  print_str_opt("log2_chroma_w", "N/A");
2856  print_str_opt("log2_chroma_h", "N/A");
2857  }
2858  n = av_get_bits_per_pixel(pixdesc);
2859  if (n) print_int ("bits_per_pixel", n);
2860  else print_str_opt("bits_per_pixel", "N/A");
2863  PRINT_PIX_FMT_FLAG(BE, "big_endian");
2864  PRINT_PIX_FMT_FLAG(PAL, "palette");
2865  PRINT_PIX_FMT_FLAG(BITSTREAM, "bitstream");
2866  PRINT_PIX_FMT_FLAG(HWACCEL, "hwaccel");
2867  PRINT_PIX_FMT_FLAG(PLANAR, "planar");
2868  PRINT_PIX_FMT_FLAG(RGB, "rgb");
2869  PRINT_PIX_FMT_FLAG(ALPHA, "alpha");
2871  }
2872  if (do_show_pixel_format_components && (pixdesc->nb_components > 0)) {
2874  for (i = 0; i < pixdesc->nb_components; i++) {
2876  print_int("index", i + 1);
2877  print_int("bit_depth", pixdesc->comp[i].depth);
2879  }
2881  }
2883  }
2885 }
2886 
2887 static int opt_show_optional_fields(void *optctx, const char *opt, const char *arg)
2888 {
2892 
2894  double num;
2895  int ret = parse_number("show_optional_fields", arg, OPT_TYPE_INT,
2897  if (ret < 0)
2898  return ret;
2899  show_optional_fields = num;
2900  }
2901  return 0;
2902 }
2903 
2904 static int opt_format(void *optctx, const char *opt, const char *arg)
2905 {
2907  if (!iformat) {
2908  av_log(NULL, AV_LOG_ERROR, "Unknown input format: %s\n", arg);
2909  return AVERROR(EINVAL);
2910  }
2911  return 0;
2912 }
2913 
2914 static inline void mark_section_show_entries(SectionID section_id,
2915  int show_all_entries, AVDictionary *entries)
2916 {
2917  EntrySelection *selection = &selected_entries[section_id];
2918 
2919  selection->show_all_entries = show_all_entries;
2920  if (show_all_entries) {
2921  const AVTextFormatSection *section = &sections[section_id];
2922  for (const int *id = section->children_ids; *id != -1; id++)
2923  mark_section_show_entries(*id, show_all_entries, entries);
2924  } else {
2925  av_dict_copy(&selection->entries_to_show, entries, 0);
2926  }
2927 }
2928 
2929 static int match_section(const char *section_name,
2930  int show_all_entries, AVDictionary *entries)
2931 {
2932  int ret = 0;
2933 
2934  for (unsigned i = 0; i < FF_ARRAY_ELEMS(sections); i++) {
2935  const struct AVTextFormatSection *section = &sections[i];
2936  if (!strcmp(section_name, section->name) ||
2937  (section->unique_name && !strcmp(section_name, section->unique_name))) {
2939  "'%s' matches section with unique name '%s'\n", section_name,
2940  (char *)av_x_if_null(section->unique_name, section->name));
2941  ret++;
2942  mark_section_show_entries(section->id, show_all_entries, entries);
2943  }
2944  }
2945  return ret;
2946 }
2947 
2948 static int opt_show_entries(void *optctx, const char *opt, const char *arg)
2949 {
2950  const char *p = arg;
2951  int ret = 0;
2952 
2953  while (*p) {
2954  AVDictionary *entries = NULL;
2955  char *section_name = av_get_token(&p, "=:");
2956  int show_all_entries = 0;
2957 
2958  if (!section_name) {
2960  "Missing section name for option '%s'\n", opt);
2961  return AVERROR(EINVAL);
2962  }
2963 
2964  if (*p == '=') {
2965  p++;
2966  while (*p && *p != ':') {
2967  char *entry = av_get_token(&p, ",:");
2968  if (!entry)
2969  break;
2971  "Adding '%s' to the entries to show in section '%s'\n",
2972  entry, section_name);
2973  av_dict_set(&entries, entry, "", AV_DICT_DONT_STRDUP_KEY);
2974  if (*p == ',')
2975  p++;
2976  }
2977  } else {
2978  show_all_entries = 1;
2979  }
2980 
2981  ret = match_section(section_name, show_all_entries, entries);
2982  if (ret == 0) {
2983  av_log(NULL, AV_LOG_ERROR, "No match for section '%s'\n", section_name);
2984  ret = AVERROR(EINVAL);
2985  }
2986  av_dict_free(&entries);
2987  av_free(section_name);
2988 
2989  if (ret <= 0)
2990  break;
2991  if (*p)
2992  p++;
2993  }
2994 
2995  return ret;
2996 }
2997 
2998 static int opt_input_file(void *optctx, const char *arg)
2999 {
3000  if (input_filename) {
3002  "Argument '%s' provided as input filename, but '%s' was already specified.\n",
3003  arg, input_filename);
3004  return AVERROR(EINVAL);
3005  }
3006  if (!strcmp(arg, "-"))
3007  arg = "fd:";
3009  if (!input_filename)
3010  return AVERROR(ENOMEM);
3011 
3012  return 0;
3013 }
3014 
3015 static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
3016 {
3017  opt_input_file(optctx, arg);
3018  return 0;
3019 }
3020 
3021 static int opt_output_file_o(void *optctx, const char *opt, const char *arg)
3022 {
3023  if (output_filename) {
3025  "Argument '%s' provided as output filename, but '%s' was already specified.\n",
3026  arg, output_filename);
3027  return AVERROR(EINVAL);
3028  }
3029  if (!strcmp(arg, "-"))
3030  arg = "fd:";
3032  if (!output_filename)
3033  return AVERROR(ENOMEM);
3034 
3035  return 0;
3036 }
3037 
3038 static int opt_print_filename(void *optctx, const char *opt, const char *arg)
3039 {
3042  return print_input_filename ? 0 : AVERROR(ENOMEM);
3043 }
3044 
3045 void show_help_default(const char *opt, const char *arg)
3046 {
3048  show_usage();
3049  show_help_options(options, "Main options:", 0, 0);
3050  printf("\n");
3051 
3054 }
3055 
3056 /**
3057  * Parse interval specification, according to the format:
3058  * INTERVAL ::= [START|+START_OFFSET][%[END|+END_OFFSET]]
3059  * INTERVALS ::= INTERVAL[,INTERVALS]
3060 */
3061 static int parse_read_interval(const char *interval_spec,
3062  ReadInterval *interval)
3063 {
3064  int ret = 0;
3065  char *next, *p, *spec = av_strdup(interval_spec);
3066  if (!spec)
3067  return AVERROR(ENOMEM);
3068 
3069  if (!*spec) {
3070  av_log(NULL, AV_LOG_ERROR, "Invalid empty interval specification\n");
3071  ret = AVERROR(EINVAL);
3072  goto end;
3073  }
3074 
3075  p = spec;
3076  next = strchr(spec, '%');
3077  if (next)
3078  *next++ = 0;
3079 
3080  /* parse first part */
3081  if (*p) {
3082  interval->has_start = 1;
3083 
3084  if (*p == '+') {
3085  interval->start_is_offset = 1;
3086  p++;
3087  } else {
3088  interval->start_is_offset = 0;
3089  }
3090 
3091  ret = av_parse_time(&interval->start, p, 1);
3092  if (ret < 0) {
3093  av_log(NULL, AV_LOG_ERROR, "Invalid interval start specification '%s'\n", p);
3094  goto end;
3095  }
3096  } else {
3097  interval->has_start = 0;
3098  }
3099 
3100  /* parse second part */
3101  p = next;
3102  if (p && *p) {
3103  int64_t us;
3104  interval->has_end = 1;
3105 
3106  if (*p == '+') {
3107  interval->end_is_offset = 1;
3108  p++;
3109  } else {
3110  interval->end_is_offset = 0;
3111  }
3112 
3113  if (interval->end_is_offset && *p == '#') {
3114  long long int lli;
3115  char *tail;
3116  interval->duration_frames = 1;
3117  p++;
3118  lli = strtoll(p, &tail, 10);
3119  if (*tail || lli < 0) {
3121  "Invalid or negative value '%s' for duration number of frames\n", p);
3122  goto end;
3123  }
3124  interval->end = lli;
3125  } else {
3126  interval->duration_frames = 0;
3127  ret = av_parse_time(&us, p, 1);
3128  if (ret < 0) {
3129  av_log(NULL, AV_LOG_ERROR, "Invalid interval end/duration specification '%s'\n", p);
3130  goto end;
3131  }
3132  interval->end = us;
3133  }
3134  } else {
3135  interval->has_end = 0;
3136  }
3137 
3138 end:
3139  av_free(spec);
3140  return ret;
3141 }
3142 
3143 static int parse_read_intervals(const char *intervals_spec)
3144 {
3145  int ret, n, i;
3146  char *p, *spec = av_strdup(intervals_spec);
3147  if (!spec)
3148  return AVERROR(ENOMEM);
3149 
3150  /* preparse specification, get number of intervals */
3151  for (n = 0, p = spec; *p; p++)
3152  if (*p == ',')
3153  n++;
3154  n++;
3155 
3157  if (!read_intervals) {
3158  ret = AVERROR(ENOMEM);
3159  goto end;
3160  }
3161  read_intervals_nb = n;
3162 
3163  /* parse intervals */
3164  p = spec;
3165  for (i = 0; p; i++) {
3166  char *next;
3167 
3169  next = strchr(p, ',');
3170  if (next)
3171  *next++ = 0;
3172 
3173  read_intervals[i].id = i;
3175  if (ret < 0) {
3176  av_log(NULL, AV_LOG_ERROR, "Error parsing read interval #%d '%s'\n",
3177  i, p);
3178  goto end;
3179  }
3180  av_log(NULL, AV_LOG_VERBOSE, "Parsed log interval ");
3182  p = next;
3183  }
3185 
3186 end:
3187  av_free(spec);
3188  return ret;
3189 }
3190 
3191 static int opt_read_intervals(void *optctx, const char *opt, const char *arg)
3192 {
3193  return parse_read_intervals(arg);
3194 }
3195 
3196 static int opt_pretty(void *optctx, const char *opt, const char *arg)
3197 {
3198  show_value_unit = 1;
3199  use_value_prefix = 1;
3202  return 0;
3203 }
3204 
3205 static void print_section(SectionID id, int level)
3206 {
3207  const int *pid;
3208  const struct AVTextFormatSection *section = &sections[id];
3209  printf("%c%c%c%c",
3210  section->flags & AV_TEXTFORMAT_SECTION_FLAG_IS_WRAPPER ? 'W' : '.',
3211  section->flags & AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY ? 'A' : '.',
3213  section->flags & AV_TEXTFORMAT_SECTION_FLAG_HAS_TYPE ? 'T' : '.');
3214  printf("%*c %s", level * 4, ' ', section->name);
3215  if (section->unique_name)
3216  printf("/%s", section->unique_name);
3217  printf("\n");
3218 
3219  for (pid = section->children_ids; *pid != -1; pid++)
3220  print_section(*pid, level+1);
3221 }
3222 
3223 static int opt_sections(void *optctx, const char *opt, const char *arg)
3224 {
3225  printf("Sections:\n"
3226  "W... = Section is a wrapper (contains other sections, no local entries)\n"
3227  ".A.. = Section contains an array of elements of the same type\n"
3228  "..V. = Section may contain a variable number of fields with variable keys\n"
3229  "...T = Section contain a unique type\n"
3230  "FLAGS NAME/UNIQUE_NAME\n"
3231  "----\n");
3233  return 0;
3234 }
3235 
3236 static int opt_codec(void *optctx, const char *opt, const char *arg)
3237 {
3238  const char *spec = strchr(opt, ':');
3239  const char **name;
3240  if (!spec) {
3242  "No media specifier was specified for '%s' in option '%s'. Use -%s:<media_spec> "
3243  "where <media_spec> can be one of: 'a' (audio), 'v' (video), 's' (subtitle), 'd' (data)\n",
3244  arg, opt, opt);
3245  return AVERROR(EINVAL);
3246  }
3247  spec++;
3248 
3249  switch (spec[0]) {
3250  case 'a' : name = &audio_codec_name; break;
3251  case 'd' : name = &data_codec_name; break;
3252  case 's' : name = &subtitle_codec_name; break;
3253  case 'v' : name = &video_codec_name; break;
3254  default:
3256  "Invalid media specifier '%s' in option '%s'. "
3257  "Must be one of: 'a' (audio), 'v' (video), 's' (subtitle), 'd' (data)\n", spec, opt);
3258  return AVERROR(EINVAL);
3259  }
3260 
3261  av_freep(name);
3262  *name = av_strdup(arg);
3263  return *name ? 0 : AVERROR(ENOMEM);
3264 }
3265 
3266 static int opt_show_versions(void *optctx, const char *opt, const char *arg)
3267 {
3270  return 0;
3271 }
3272 
3273 #define DEFINE_OPT_SHOW_SECTION(section, target_section_id) \
3274  static int opt_show_##section(void *optctx, const char *opt, const char *arg) \
3275  { \
3276  mark_section_show_entries(SECTION_ID_##target_section_id, 1, NULL); \
3277  return 0; \
3278  }
3279 
3280 DEFINE_OPT_SHOW_SECTION(chapters, CHAPTERS)
3284 DEFINE_OPT_SHOW_SECTION(library_versions, LIBRARY_VERSIONS)
3285 DEFINE_OPT_SHOW_SECTION(packets, PACKETS)
3286 DEFINE_OPT_SHOW_SECTION(pixel_formats, PIXEL_FORMATS)
3287 DEFINE_OPT_SHOW_SECTION(program_version, PROGRAM_VERSION)
3288 DEFINE_OPT_SHOW_SECTION(streams, STREAMS)
3289 DEFINE_OPT_SHOW_SECTION(programs, PROGRAMS)
3290 DEFINE_OPT_SHOW_SECTION(stream_groups, STREAM_GROUPS)
3291 
3292 static const OptionDef real_options[] = {
3294  { "f", OPT_TYPE_FUNC, OPT_FUNC_ARG, {.func_arg = opt_format}, "force format", "format" },
3295  { "unit", OPT_TYPE_BOOL, 0, {&show_value_unit}, "show unit of the displayed values" },
3296  { "prefix", OPT_TYPE_BOOL, 0, {&use_value_prefix}, "use SI prefixes for the displayed values" },
3297  { "byte_binary_prefix", OPT_TYPE_BOOL, 0, {&use_byte_value_binary_prefix},
3298  "use binary prefixes for byte units" },
3299  { "sexagesimal", OPT_TYPE_BOOL, 0, {&use_value_sexagesimal_format},
3300  "use sexagesimal format HOURS:MM:SS.MICROSECONDS for time units" },
3301  { "pretty", OPT_TYPE_FUNC, 0, {.func_arg = opt_pretty},
3302  "prettify the format of displayed values, make it more human readable" },
3303  { "output_format", OPT_TYPE_STRING, 0, { &output_format },
3304  "set the output printing format (available formats are: default, compact, csv, flat, ini, json, xml)", "format" },
3305  { "print_format", OPT_TYPE_STRING, 0, { &output_format }, "alias for -output_format (deprecated)" },
3306  { "of", OPT_TYPE_STRING, 0, { &output_format }, "alias for -output_format", "format" },
3307  { "select_streams", OPT_TYPE_STRING, 0, { &stream_specifier }, "select the specified streams", "stream_specifier" },
3308  { "sections", OPT_TYPE_FUNC, OPT_EXIT, {.func_arg = opt_sections}, "print sections structure and section information, and exit" },
3309  { "data_dump_format", OPT_TYPE_STRING, 0, { &data_dump_format }, "set data dump format (available formats are: xxd, base64)" },
3310  { "show_data", OPT_TYPE_BOOL, 0, { &do_show_data }, "show packets data" },
3311  { "show_data_hash", OPT_TYPE_STRING, 0, { &show_data_hash }, "show packets data hash" },
3312  { "show_error", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_error }, "show probing error" },
3313  { "show_format", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_format }, "show format/container info" },
3314  { "show_frames", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_frames }, "show frames info" },
3315  { "show_entries", OPT_TYPE_FUNC, OPT_FUNC_ARG, {.func_arg = opt_show_entries},
3316  "show a set of specified entries", "entry_list" },
3317 #if HAVE_THREADS
3318  { "show_log", OPT_TYPE_INT, 0, { &do_show_log }, "show log" },
3319 #endif
3320  { "show_packets", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_packets }, "show packets info" },
3321  { "show_programs", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_programs }, "show programs info" },
3322  { "show_stream_groups", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_stream_groups }, "show stream groups info" },
3323  { "show_streams", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_streams }, "show streams info" },
3324  { "show_chapters", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_chapters }, "show chapters info" },
3325  { "count_frames", OPT_TYPE_BOOL, 0, { &do_count_frames }, "count the number of frames per stream" },
3326  { "count_packets", OPT_TYPE_BOOL, 0, { &do_count_packets }, "count the number of packets per stream" },
3327  { "show_program_version", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_program_version }, "show ffprobe version" },
3328  { "show_library_versions", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_library_versions }, "show library versions" },
3329  { "show_versions", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_versions }, "show program and library versions" },
3330  { "show_pixel_formats", OPT_TYPE_FUNC, 0, { .func_arg = &opt_show_pixel_formats }, "show pixel format descriptions" },
3331  { "show_optional_fields", OPT_TYPE_FUNC, OPT_FUNC_ARG, { .func_arg = &opt_show_optional_fields }, "show optional fields" },
3332  { "show_private_data", OPT_TYPE_BOOL, 0, { &show_private_data }, "show private data" },
3333  { "private", OPT_TYPE_BOOL, 0, { &show_private_data }, "same as show_private_data" },
3334  { "analyze_frames", OPT_TYPE_BOOL, 0, { &do_analyze_frames }, "analyze frames to provide additional stream-level information" },
3335  { "bitexact", OPT_TYPE_BOOL, 0, {&do_bitexact}, "force bitexact output" },
3336  { "read_intervals", OPT_TYPE_FUNC, OPT_FUNC_ARG, {.func_arg = opt_read_intervals}, "set read intervals", "read_intervals" },
3337  { "i", OPT_TYPE_FUNC, OPT_FUNC_ARG, {.func_arg = opt_input_file_i}, "read specified file", "input_file"},
3338  { "o", OPT_TYPE_FUNC, OPT_FUNC_ARG, {.func_arg = opt_output_file_o}, "write to specified output", "output_file"},
3339  { "print_filename", OPT_TYPE_FUNC, OPT_FUNC_ARG, {.func_arg = opt_print_filename}, "override the printed input filename", "print_file"},
3340  { "find_stream_info", OPT_TYPE_BOOL, OPT_INPUT | OPT_EXPERT, { &find_stream_info },
3341  "read and decode the streams to fill missing information with heuristics" },
3342  { "c", OPT_TYPE_FUNC, OPT_FUNC_ARG, { .func_arg = opt_codec}, "force decoder", "decoder_name" },
3343  { "codec", OPT_TYPE_FUNC, OPT_FUNC_ARG, { .func_arg = opt_codec}, "alias for -c (force decoder)", "decoder_name" },
3344  { NULL, },
3345 };
3346 
3347 static inline int check_section_show_entries(int section_id)
3348 {
3349  const EntrySelection *selection = &selected_entries[section_id];
3350 
3351  if (selection->show_all_entries || selection->entries_to_show)
3352  return 1;
3353 
3354  const AVTextFormatSection *section = &sections[section_id];
3355  for (const int *id = section->children_ids; *id != -1; id++)
3356  if (check_section_show_entries(*id))
3357  return 1;
3358  return 0;
3359 }
3360 
3361 #define SET_DO_SHOW(id, varname) do { \
3362  if (check_section_show_entries(SECTION_ID_##id)) \
3363  do_show_##varname = 1; \
3364  } while (0)
3365 
3366 int main(int argc, char **argv)
3367 {
3368  const AVTextFormatter *f;
3369  AVTextFormatContext *tctx;
3370  AVTextWriterContext *wctx;
3371  char *buf;
3372  char *f_name = NULL, *f_args = NULL;
3373  int ret, input_ret;
3374  AVTextFormatDataDump data_dump_format_id = AV_TEXTFORMAT_DATADUMP_XXD;
3375 
3376  init_dynload();
3377 
3378  setvbuf(stderr, NULL, _IONBF, 0); /* win32 runtime needs this */
3379 
3381 
3383  parse_loglevel(argc, argv, options);
3385 #if CONFIG_AVDEVICE
3387 #endif
3388 
3389  show_banner(argc, argv, options);
3390  ret = parse_options(NULL, argc, argv, options, opt_input_file);
3391  if (ret < 0) {
3392  ret = (ret == AVERROR_EXIT) ? 0 : ret;
3393  goto end;
3394  }
3395 
3396  if (do_show_log)
3398 
3399  /* mark things to show, based on -show_entries */
3400  SET_DO_SHOW(CHAPTERS, chapters);
3402  SET_DO_SHOW(FORMAT, format);
3403  SET_DO_SHOW(FRAMES, frames);
3404  SET_DO_SHOW(LIBRARY_VERSIONS, library_versions);
3405  SET_DO_SHOW(PACKETS, packets);
3406  SET_DO_SHOW(PIXEL_FORMATS, pixel_formats);
3407  SET_DO_SHOW(PIXEL_FORMAT_FLAGS, pixel_format_flags);
3408  SET_DO_SHOW(PIXEL_FORMAT_COMPONENTS, pixel_format_components);
3409  SET_DO_SHOW(PROGRAM_VERSION, program_version);
3410  SET_DO_SHOW(PROGRAMS, programs);
3411  SET_DO_SHOW(STREAM_GROUP_DISPOSITION, stream_group_disposition);
3412  SET_DO_SHOW(STREAM_GROUPS, stream_groups);
3413  SET_DO_SHOW(STREAM_GROUP_COMPONENTS, stream_group_components);
3414  SET_DO_SHOW(STREAMS, streams);
3415  SET_DO_SHOW(STREAM_DISPOSITION, stream_disposition);
3416  SET_DO_SHOW(PROGRAM_STREAM_DISPOSITION, stream_disposition);
3417  SET_DO_SHOW(STREAM_GROUP_STREAM_DISPOSITION, stream_disposition);
3418 
3419  SET_DO_SHOW(CHAPTER_TAGS, chapter_tags);
3420  SET_DO_SHOW(FORMAT_TAGS, format_tags);
3421  SET_DO_SHOW(FRAME_TAGS, frame_tags);
3422  SET_DO_SHOW(PROGRAM_TAGS, program_tags);
3423  SET_DO_SHOW(STREAM_GROUP_TAGS, stream_group_tags);
3424  SET_DO_SHOW(STREAM_TAGS, stream_tags);
3425  SET_DO_SHOW(PROGRAM_STREAM_TAGS, stream_tags);
3426  SET_DO_SHOW(STREAM_GROUP_STREAM_TAGS, stream_tags);
3427  SET_DO_SHOW(PACKET_TAGS, packet_tags);
3428 
3431  "-bitexact and -show_program_version or -show_library_versions "
3432  "options are incompatible\n");
3433  ret = AVERROR(EINVAL);
3434  goto end;
3435  }
3436 
3437  if (!output_format)
3438  output_format = av_strdup("default");
3439  if (!output_format) {
3440  ret = AVERROR(ENOMEM);
3441  goto end;
3442  }
3443  f_name = av_strtok(output_format, "=", &buf);
3444  if (!f_name) {
3446  "No name specified for the output format\n");
3447  ret = AVERROR(EINVAL);
3448  goto end;
3449  }
3450  f_args = buf;
3451 
3452  f = avtext_get_formatter_by_name(f_name);
3453  if (!f) {
3454  av_log(NULL, AV_LOG_ERROR, "Unknown output format with name '%s'\n", f_name);
3455  ret = AVERROR(EINVAL);
3456  goto end;
3457  }
3458 
3459  if (data_dump_format) {
3460  if (!strcmp(data_dump_format, "xxd")) {
3461  data_dump_format_id = AV_TEXTFORMAT_DATADUMP_XXD;
3462  } else if (!strcmp(data_dump_format, "base64")) {
3463  data_dump_format_id = AV_TEXTFORMAT_DATADUMP_BASE64;
3464  } else {
3465  av_log(NULL, AV_LOG_ERROR, "Unknown data dump format with name '%s'\n", data_dump_format);
3466  ret = AVERROR(EINVAL);
3467  goto end;
3468  }
3469  }
3470 
3471  if (output_filename) {
3473  } else
3475 
3476  if (ret < 0)
3477  goto end;
3478 
3479  AVTextFormatOptions tf_options = {
3481  .show_optional_fields = show_optional_fields,
3482  .show_value_unit = show_value_unit,
3483  .use_value_prefix = use_value_prefix,
3484  .use_byte_value_binary_prefix = use_byte_value_binary_prefix,
3485  .use_value_sexagesimal_format = use_value_sexagesimal_format,
3486  .data_dump_format = data_dump_format_id,
3487  };
3488 
3489  if ((ret = avtext_context_open(&tctx, f, wctx, f_args, sections, FF_ARRAY_ELEMS(sections), tf_options, show_data_hash)) >= 0) {
3490  if (f == &avtextformatter_xml)
3492 
3494 
3501 
3502  if (!input_filename &&
3505  show_usage();
3506  av_log(NULL, AV_LOG_ERROR, "You have to specify one input file.\n");
3507  av_log(NULL, AV_LOG_ERROR, "Use -h to get full help or, even better, run 'man %s'.\n", program_name);
3508  ret = AVERROR(EINVAL);
3509  } else if (input_filename) {
3511  if (ret < 0 && do_show_error)
3512  show_error(tctx, ret);
3513  }
3514 
3515  input_ret = ret;
3516 
3518 
3520  if (ret < 0)
3521  av_log(NULL, AV_LOG_ERROR, "Writing output failed (closing writer): %s\n", av_err2str(ret));
3522 
3523  ret = avtext_context_close(&tctx);
3524  if (ret < 0)
3525  av_log(NULL, AV_LOG_ERROR, "Writing output failed (closing formatter): %s\n", av_err2str(ret));
3526 
3527  ret = FFMIN(ret, input_ret);
3528  }
3529 
3530 end:
3536 
3537  uninit_opts();
3538  for (size_t i = 0; i < FF_ARRAY_ELEMS(selected_entries); ++i)
3539  av_dict_free(&selected_entries[i].entries_to_show);
3540 
3542 
3543  return ret < 0;
3544 }
error
static void error(const char *err)
Definition: target_bsf_fuzzer.c:32
main
int main(int argc, char **argv)
Definition: ffprobe.c:3366
AVSubtitle
Definition: avcodec.h:2100
SECTION_ID_STREAM_SIDE_DATA_LIST
@ SECTION_ID_STREAM_SIDE_DATA_LIST
Definition: ffprobe.c:231
opt_format
static int opt_format(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:2904
AVHDRVividColorTransformParams::maximum_maxrgb
AVRational maximum_maxrgb
Indicates the maximum brightness of the displayed content.
Definition: hdr_dynamic_vivid_metadata.h:206
clear_log
static void clear_log(int need_lock)
Definition: ffprobe.c:1300
iamf.h
AVHDRPlusColorTransformParams::average_maxrgb
AVRational average_maxrgb
The average of linearized maxRGB values in the processing window in the scene.
Definition: hdr_dynamic_metadata.h:164
mark_section_show_entries
static void mark_section_show_entries(SectionID section_id, int show_all_entries, AVDictionary *entries)
Definition: ffprobe.c:2914
AV_PKT_DATA_DISPLAYMATRIX
@ AV_PKT_DATA_DISPLAYMATRIX
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
Definition: packet.h:105
RGB
Definition: cms.c:66
av_packet_unref
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
Definition: packet.c:433
OPT_EXIT
#define OPT_EXIT
Definition: cmdutils.h:207
show_help_options
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags)
Print help for all options matching specified flags.
Definition: cmdutils.c:107
AVCodec
AVCodec.
Definition: codec.h:172
av_pix_fmt_swap_endianness
enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
Utility function to swap the endianness of a pixel format.
Definition: pixdesc.c:3511
SECTION_ID_STREAM_GROUP_SIDE_DATA_LIST
@ SECTION_ID_STREAM_GROUP_SIDE_DATA_LIST
Definition: ffprobe.c:219
AV_FRAME_DATA_IAMF_MIX_GAIN_PARAM
@ AV_FRAME_DATA_IAMF_MIX_GAIN_PARAM
IAMF Mix Gain Parameter Data associated with the audio frame.
Definition: frame.h:278
AVMEDIA_TYPE_SUBTITLE
@ AVMEDIA_TYPE_SUBTITLE
Definition: avutil.h:203
AVIAMFSubmix::elements
AVIAMFSubmixElement ** elements
Array of submix elements.
Definition: iamf.h:568
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:216
AVIAMFAudioElement::nb_layers
unsigned int nb_layers
Number of layers, or channel groups, in the Audio Element.
Definition: iamf.h:371
AV_BPRINT_SIZE_UNLIMITED
#define AV_BPRINT_SIZE_UNLIMITED
AV_TIMECODE_STR_SIZE
#define AV_TIMECODE_STR_SIZE
Definition: timecode.h:33
AVDOVIDataMapping::nlq_method_idc
enum AVDOVINLQMethod nlq_method_idc
Definition: dovi_meta.h:159
use_byte_value_binary_prefix
static int use_byte_value_binary_prefix
Definition: ffprobe.c:131
av_mime_codec_str
int av_mime_codec_str(const AVCodecParameters *par, AVRational frame_rate, struct AVBPrint *out)
Make a RFC 4281/6381 like string describing a codec for MIME types.
Definition: codecstring.c:233
AVCodecParameters::extradata
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
Definition: codec_par.h:71
avtextwriter_create_stdout
int avtextwriter_create_stdout(AVTextWriterContext **pwctx)
Definition: tw_stdout.c:71
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:71
AVFormatContext::stream_groups
AVStreamGroup ** stream_groups
A list of all stream groups in the file.
Definition: avformat.h:1371
name
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 default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
entry
#define entry
Definition: aom_film_grain_template.c:66
AVHDRVividColorToneMappingParams::base_param_k2
int base_param_k2
indicates k2_0 in the base parameter, base_param_k2 <= 1: k2_0 = base_param_k2 base_param_k2 > 1: res...
Definition: hdr_dynamic_vivid_metadata.h:137
level
uint8_t level
Definition: svq3.c:208
do_show_log
static int do_show_log
Definition: ffprobe.c:119
AVStreamGroup::id
int64_t id
Group type-specific group ID.
Definition: avformat.h:1136
program
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C program
Definition: undefined.txt:6
InputFile::fmt_ctx
AVFormatContext * fmt_ctx
Definition: ffprobe.c:87
dec_ctx
static AVCodecContext * dec_ctx
Definition: decode_filter_audio.c:45
SECTION_ID_STREAM_SIDE_DATA
@ SECTION_ID_STREAM_SIDE_DATA
Definition: ffprobe.c:232
AVIAMFSubmix::layouts
AVIAMFSubmixLayout ** layouts
Array of submix layouts.
Definition: iamf.h:583
do_show_frame_tags
static int do_show_frame_tags
Definition: ffprobe.c:123
AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT
@ AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT
Ambient viewing environment metadata, as defined by H.274.
Definition: packet.h:327
mix
static int mix(int c0, int c1)
Definition: 4xm.c:717
PLANAR
#define PLANAR
Definition: flacdsp.c:42
AVChapter::metadata
AVDictionary * metadata
Definition: avformat.h:1247
r
const char * r
Definition: vf_curves.c:127
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
opt_show_optional_fields
static int opt_show_optional_fields(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:2887
printf
__device__ int printf(const char *,...)
opt.h
FrameData::pkt_pos
int64_t pkt_pos
Definition: ffplay.c:149
read_intervals_nb
static int read_intervals_nb
Definition: ffprobe.c:159
opt_output_file_o
static int opt_output_file_o(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3021
AVCodecParameters::codec_type
enum AVMediaType codec_type
General type of the encoded data.
Definition: codec_par.h:53
AVStreamGroup::tile_grid
struct AVStreamGroupTileGrid * tile_grid
Definition: avformat.h:1152
AVFMT_SHOW_IDS
#define AVFMT_SHOW_IDS
Show format stream IDs numbers.
Definition: avformat.h:477
AVSphericalMapping::projection
enum AVSphericalProjection projection
Projection type.
Definition: spherical.h:104
ReadInterval::end_is_offset
int end_is_offset
Definition: ffprobe.c:154
EntrySelection::show_all_entries
int show_all_entries
Definition: ffprobe.c:334
LogBuffer::log_message
char * log_message
Definition: ffprobe.c:364
AVColorTransferCharacteristic
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition: pixfmt.h:666
libm.h
FrameData
Definition: ffmpeg.h:722
AVHDRVividColorToneMappingParams::base_param_Delta
AVRational base_param_Delta
base_param_Delta in the base parameter, in multiples of 1.0/127.
Definition: hdr_dynamic_vivid_metadata.h:157
AVFilmGrainParams::bit_depth_luma
int bit_depth_luma
Intended bit depth, or 0 for unknown/unspecified.
Definition: film_grain_params.h:238
AVHDRVividColorToneMappingParams::base_enable_flag
int base_enable_flag
This flag indicates that transfer the base parameter(for value of 1)
Definition: hdr_dynamic_vivid_metadata.h:88
print_str
#define print_str(k, v)
Definition: ffprobe.c:451
LogBuffer::context_name
char * context_name
Definition: ffprobe.c:362
color
Definition: vf_paletteuse.c:513
av_bprint_init
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
Definition: bprint.c:69
AVHDRPlusColorTransformParams::rotation_angle
uint8_t rotation_angle
The clockwise rotation angle in degree of arc with respect to the positive direction of the x-axis of...
Definition: hdr_dynamic_metadata.h:118
comp
static void comp(unsigned char *dst, ptrdiff_t dst_stride, unsigned char *src, ptrdiff_t src_stride, int add)
Definition: eamad.c:79
print_val
#define print_val(k, v, u)
Definition: ffprobe.c:458
AV_PKT_DATA_FRAME_CROPPING
@ AV_PKT_DATA_FRAME_CROPPING
The number of pixels to discard from the top/bottom/left/right border of the decoded frame to obtain ...
Definition: packet.h:340
SECTION_ID_PACKET_SIDE_DATA_LIST
@ SECTION_ID_PACKET_SIDE_DATA_LIST
Definition: ffprobe.c:191
AVFormatContext::nb_chapters
unsigned int nb_chapters
Number of chapters in AVChapter array.
Definition: avformat.h:1384
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:49
AVHDRPlusPercentile::percentile
AVRational percentile
The linearized maxRGB value at a specific percentile in the processing window in the scene.
Definition: hdr_dynamic_metadata.h:52
AVCodec::priv_class
const AVClass * priv_class
AVClass for the private context.
Definition: codec.h:206
AVAmbientViewingEnvironment
Ambient viewing environment metadata as defined by H.274.
Definition: ambient_viewing_environment.h:36
SECTION_ID_STREAM_GROUP_SIDE_DATA
@ SECTION_ID_STREAM_GROUP_SIDE_DATA
Definition: ffprobe.c:220
AVCodecParameters::color_space
enum AVColorSpace color_space
Definition: codec_par.h:192
AVIAMFAudioElement::default_w
unsigned int default_w
Default weight value as defined in section 3.6 of IAMF.
Definition: iamf.h:396
thread.h
AVERROR_EOF
#define AVERROR_EOF
End of file.
Definition: error.h:57
AVBufferRef::data
uint8_t * data
The data buffer.
Definition: buffer.h:90
AVStreamGroupTileGrid::horizontal_offset
int horizontal_offset
Offset in pixels from the left edge of the canvas where the actual image meant for presentation start...
Definition: avformat.h:1021
AVIAMFAudioElement::layers
AVIAMFLayer ** layers
Definition: iamf.h:362
AV_FRAME_DATA_IAMF_RECON_GAIN_INFO_PARAM
@ AV_FRAME_DATA_IAMF_RECON_GAIN_INFO_PARAM
IAMF Recon Gain Info Parameter Data associated with the audio frame.
Definition: frame.h:294
AV_FRAME_DATA_A53_CC
@ AV_FRAME_DATA_A53_CC
ATSC A53 Part 4 Closed Captions.
Definition: frame.h:59
AVStream::discard
enum AVDiscard discard
Selects which packets can be discarded at will and do not need to be demuxed.
Definition: avformat.h:818
AV_FIELD_PROGRESSIVE
@ AV_FIELD_PROGRESSIVE
Definition: defs.h:213
process_frame
static av_always_inline int process_frame(AVTextFormatContext *tfc, InputFile *ifile, AVFrame *frame, const AVPacket *pkt, int *packet_new)
Definition: ffprobe.c:1596
AV_PKT_DATA_MASTERING_DISPLAY_METADATA
@ AV_PKT_DATA_MASTERING_DISPLAY_METADATA
Mastering display metadata (based on SMPTE-2086:2014).
Definition: packet.h:219
AVCodecDescriptor::long_name
const char * long_name
A more descriptive name for this codec.
Definition: codec_desc.h:50
AV_DOVI_COMPRESSION_LIMITED
@ AV_DOVI_COMPRESSION_LIMITED
Definition: dovi_meta.h:69
matrix
Definition: vc1dsp.c:43
AV_PKT_FLAG_DISCARD
#define AV_PKT_FLAG_DISCARD
Flag is used to discard packets which are required to maintain valid decoder state but are not requir...
Definition: packet.h:657
version.h
AVHDRVividColorToneMappingParams::three_Spline_num
int three_Spline_num
The number of three Spline.
Definition: hdr_dynamic_vivid_metadata.h:169
AV_FRAME_DATA_DOVI_METADATA
@ AV_FRAME_DATA_DOVI_METADATA
Parsed Dolby Vision metadata, suitable for passing to a software implementation.
Definition: frame.h:208
AV_TIME_BASE_Q
#define AV_TIME_BASE_Q
Internal time base represented as fractional value.
Definition: avutil.h:263
AVCodecDescriptor::name
const char * name
Name of the codec described by this descriptor.
Definition: codec_desc.h:46
int64_t
long long int64_t
Definition: coverity.c:34
av_alpha_mode_name
const char * av_alpha_mode_name(enum AVAlphaMode mode)
Definition: pixdesc.c:3921
selected_streams
static int * selected_streams
Definition: ffprobe.c:355
SECTION_ID_PROGRAM_TAGS
@ SECTION_ID_PROGRAM_TAGS
Definition: ffprobe.c:203
AVSubtitle::num_rects
unsigned num_rects
Definition: avcodec.h:2104
EntrySelection
Definition: ffprobe.c:333
AVFilmGrainAOMParams::uv_points
uint8_t uv_points[2][10][2]
Definition: film_grain_params.h:63
av_strcasecmp
int av_strcasecmp(const char *a, const char *b)
Locale-independent case-insensitive compare.
Definition: avstring.c:208
AV_FRAME_DATA_FILM_GRAIN_PARAMS
@ AV_FRAME_DATA_FILM_GRAIN_PARAMS
Film grain parameters for a frame, described by AVFilmGrainParams.
Definition: frame.h:188
AVHDRPlusColorTransformParams::semimajor_axis_external_ellipse
uint16_t semimajor_axis_external_ellipse
The semi-major axis value of the external ellipse of the elliptical pixel selector in amount of pixel...
Definition: hdr_dynamic_metadata.h:134
AVFilmGrainH274Params::blending_mode_id
int blending_mode_id
Specifies the blending mode used to blend the simulated film grain with the decoded images.
Definition: film_grain_params.h:145
AVIAMFMixPresentation::nb_submixes
unsigned int nb_submixes
Number of submixes in the presentation.
Definition: iamf.h:632
avformat_get_class
const AVClass * avformat_get_class(void)
Get the AVClass for AVFormatContext.
Definition: options.c:192
AVStreamGroup::disposition
int disposition
Stream group disposition - a combination of AV_DISPOSITION_* flags.
Definition: avformat.h:1195
AV_FRAME_DATA_S12M_TIMECODE
@ AV_FRAME_DATA_S12M_TIMECODE
Timecode which conforms to SMPTE ST 12-1.
Definition: frame.h:152
AVHDRVividColorTransformParams::tone_mapping_param_num
int tone_mapping_param_num
The number of tone mapping param.
Definition: hdr_dynamic_vivid_metadata.h:218
AVHDRPlusColorTransformParams
Color transform parameters at a processing window in a dynamic metadata for SMPTE 2094-40.
Definition: hdr_dynamic_metadata.h:59
AV_RN16
#define AV_RN16(p)
Definition: intreadwrite.h:356
av_frame_free
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
Definition: frame.c:64
AVFilmGrainParams::aom
AVFilmGrainAOMParams aom
Definition: film_grain_params.h:247
print_ts
#define print_ts(k, v)
Definition: ffprobe.c:455
opt_input_file_i
static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3015
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:459
pixdesc.h
AVFormatContext::streams
AVStream ** streams
A list of all streams in the file.
Definition: avformat.h:1352
AVPacketSideData
This structure stores auxiliary information for decoding, presenting, or otherwise processing the cod...
Definition: packet.h:416
OPT_INPUT
#define OPT_INPUT
Definition: cmdutils.h:237
AVHDRVividColorTransformParams::variance_maxrgb
AVRational variance_maxrgb
Indicates the variance brightness of the displayed content.
Definition: hdr_dynamic_vivid_metadata.h:199
av_disposition_to_string
const char * av_disposition_to_string(int disposition)
Definition: options.c:576
SECTION_ID_STREAM_GROUP_COMPONENTS
@ SECTION_ID_STREAM_GROUP_COMPONENTS
Definition: ffprobe.c:209
AVDOVIReshapingCurve::mmr_coef
int64_t mmr_coef[AV_DOVI_MAX_PIECES][3][7]
Definition: dovi_meta.h:127
SECTION_ID_FRAME_SIDE_DATA_COMPONENT
@ SECTION_ID_FRAME_SIDE_DATA_COMPONENT
Definition: ffprobe.c:180
AVIAMFParamDefinition::type
enum AVIAMFParamDefinitionType type
Parameters type.
Definition: iamf.h:213
parse_number
int parse_number(const char *context, const char *numstr, enum OptionType type, double min, double max, double *dst)
Parse a string and return its corresponding value as a double.
Definition: cmdutils.c:84
print_context_light_level
static void print_context_light_level(AVTextFormatContext *tfc, const AVContentLightMetadata *metadata)
Definition: ffprobe.c:566
SECTION_ID_PIXEL_FORMAT_COMPONENTS
@ SECTION_ID_PIXEL_FORMAT_COMPONENTS
Definition: ffprobe.c:196
AVPacket::data
uint8_t * data
Definition: packet.h:595
ReadInterval::duration_frames
int duration_frames
Definition: ffprobe.c:155
AVComponentDescriptor::depth
int depth
Number of bits in the component.
Definition: pixdesc.h:57
av_spherical_tile_bounds
void av_spherical_tile_bounds(const AVSphericalMapping *map, size_t width, size_t height, size_t *left, size_t *top, size_t *right, size_t *bottom)
Convert the bounding fields from an AVSphericalVideo from 0.32 fixed point to pixels.
Definition: spherical.c:40
AVPixFmtDescriptor::name
const char * name
Definition: pixdesc.h:70
AVAmbientViewingEnvironment::ambient_light_x
AVRational ambient_light_x
Normalized x chromaticity coordinate of the environmental ambient light in the nominal viewing enviro...
Definition: ambient_viewing_environment.h:47
AVHDRVivid3SplineParams::enable_strength
AVRational enable_strength
3Spline_enable_Strength of three Spline.
Definition: hdr_dynamic_vivid_metadata.h:70
AVOption
AVOption.
Definition: opt.h:429
b
#define b
Definition: input.c:43
AVCOL_TRC_UNSPECIFIED
@ AVCOL_TRC_UNSPECIFIED
Definition: pixfmt.h:669
SECTION_ID_STREAM
@ SECTION_ID_STREAM
Definition: ffprobe.c:227
SECTION_ID_PIXEL_FORMAT_FLAGS
@ SECTION_ID_PIXEL_FORMAT_FLAGS
Definition: ffprobe.c:194
LogBuffer
Definition: ffprobe.c:361
AVStream::avg_frame_rate
AVRational avg_frame_rate
Average framerate.
Definition: avformat.h:836
AVStreamGroupTileGrid::vertical_offset
int vertical_offset
Offset in pixels from the top edge of the canvas where the actual image meant for presentation starts...
Definition: avformat.h:1028
spherical.h
AVChapter::start
int64_t start
Definition: avformat.h:1246
data
const char data[16]
Definition: mxf.c:149
AVTextWriterContext
Definition: avtextwriters.h:42
av_pix_fmt_desc_next
const AVPixFmtDescriptor * av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
Iterate over all pixel format descriptors known to libavutil.
Definition: pixdesc.c:3463
avtextformat.h
format_opts
AVDictionary * format_opts
Definition: cmdutils.c:58
AV_DOVI_NLQ_NONE
@ AV_DOVI_NLQ_NONE
Definition: dovi_meta.h:131
AVTextFormatContext
Definition: avtextformat.h:133
AVFilmGrainParams::color_space
enum AVColorSpace color_space
Definition: film_grain_params.h:233
do_show_stream_tags
static int do_show_stream_tags
Definition: ffprobe.c:126
AVDOVIReshapingCurve::mapping_idc
enum AVDOVIMappingMethod mapping_idc[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:120
SECTION_ID_PIXEL_FORMAT
@ SECTION_ID_PIXEL_FORMAT
Definition: ffprobe.c:193
version.h
AVHDRPlusColorTransformParams::tone_mapping_flag
uint8_t tone_mapping_flag
This flag indicates that the metadata for the tone mapping function in the processing window is prese...
Definition: hdr_dynamic_metadata.h:189
streams_with_closed_captions
static int * streams_with_closed_captions
Definition: ffprobe.c:356
AV_LOG_VERBOSE
#define AV_LOG_VERBOSE
Detailed information.
Definition: log.h:226
SECTION_ID_PROGRAM_STREAM
@ SECTION_ID_PROGRAM_STREAM
Definition: ffprobe.c:202
AVFilmGrainParams::codec
union AVFilmGrainParams::@525 codec
Additional fields may be added both here and in any structure included.
nb_streams
static unsigned int nb_streams
Definition: ffprobe.c:352
category
category
Definition: openal-dec.c:249
AVFormatContext::programs
AVProgram ** programs
Definition: avformat.h:1482
video_codec_name
static const char * video_codec_name
Definition: ffprobe.c:138
SECTION_ID_FORMAT
@ SECTION_ID_FORMAT
Definition: ffprobe.c:170
show_help_children
void show_help_children(const AVClass *class, int flags)
Show help for all options with given flags in class and all its children.
Definition: cmdutils.c:140
AVIAMFParamDefinition
Parameters as defined in section 3.6.1 of IAMF.
Definition: iamf.h:193
AVOption::flags
int flags
A combination of AV_OPT_FLAG_*.
Definition: opt.h:472
show_subtitle
static void show_subtitle(AVTextFormatContext *tfc, AVSubtitle *sub, AVStream *stream, AVFormatContext *fmt_ctx)
Definition: ffprobe.c:1408
AV_FRAME_DATA_DISPLAYMATRIX
@ AV_FRAME_DATA_DISPLAYMATRIX
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
Definition: frame.h:85
av_get_bits_per_pixel
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
Definition: pixdesc.c:3408
AVPacket::duration
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
Definition: packet.h:613
SECTION_ID_STREAM_GROUP_SUBCOMPONENT
@ SECTION_ID_STREAM_GROUP_SUBCOMPONENT
Definition: ffprobe.c:212
AVCodecParameters::codec_tag
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC).
Definition: codec_par.h:61
AV_SPHERICAL_EQUIRECTANGULAR_TILE
@ AV_SPHERICAL_EQUIRECTANGULAR_TILE
Video represents a portion of a sphere mapped on a flat surface using equirectangular projection.
Definition: spherical.h:68
check_section_show_entries
static int check_section_show_entries(int section_id)
Definition: ffprobe.c:3347
AVStereo3D::baseline
uint32_t baseline
The distance between the centres of the lenses of the camera system, in micrometers.
Definition: stereo3d.h:228
print_section
static void print_section(SectionID id, int level)
Definition: ffprobe.c:3205
AVIAMFSubmixElement::default_mix_gain
AVRational default_mix_gain
Default mix gain value to apply when there are no AVIAMFParamDefinition with element_mix_config's par...
Definition: iamf.h:472
AVHDRVivid3SplineParams::th_mode
int th_mode
The mode of three Spline.
Definition: hdr_dynamic_vivid_metadata.h:35
AVHDRPlusColorTransformParams::distribution_maxrgb
AVHDRPlusPercentile distribution_maxrgb[15]
The linearized maxRGB values at given percentiles in the processing window in the scene.
Definition: hdr_dynamic_metadata.h:176
AVDictionary
Definition: dict.c:32
AVChannelLayout::order
enum AVChannelOrder order
Channel order used in this layout.
Definition: channel_layout.h:324
AVColorPrimaries
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition: pixfmt.h:636
AVStreamGroupTileGrid::vertical
int vertical
Offset in pixels from the top edge of the canvas where the tile should be placed.
Definition: avformat.h:1003
SECTION_ID_STREAM_GROUP_BLOCKS
@ SECTION_ID_STREAM_GROUP_BLOCKS
Definition: ffprobe.c:217
AVDOVIRpuDataHeader::rpu_format
uint16_t rpu_format
Definition: dovi_meta.h:89
avcodec_profile_name
const char * avcodec_profile_name(enum AVCodecID codec_id, int profile)
Return a name for the specified profile, if available.
Definition: utils.c:439
get_decoder_by_name
static int get_decoder_by_name(const char *codec_name, const AVCodec **codec)
Definition: ffprobe.c:2500
do_show_stream_group_components
static int do_show_stream_group_components
Definition: ffprobe.c:109
av_read_frame
int av_read_frame(AVFormatContext *s, AVPacket *pkt)
Return the next frame of a stream.
Definition: demux.c:1588
AVDOVIDataMapping::mapping_color_space
uint8_t mapping_color_space
Definition: dovi_meta.h:154
AVDOVIRpuDataHeader
Dolby Vision RPU data header.
Definition: dovi_meta.h:87
AVHDRPlusColorTransformParams::knee_point_x
AVRational knee_point_x
The x coordinate of the separation point between the linear part and the curved part of the tone mapp...
Definition: hdr_dynamic_metadata.h:196
output_filename
static const char * output_filename
Definition: ffprobe.c:346
AVHDRVividColorTransformParams::color_saturation_num
int color_saturation_num
The number of color saturation param.
Definition: hdr_dynamic_vivid_metadata.h:235
AVChannelLayout::nb_channels
int nb_channels
Number of channels in this layout.
Definition: channel_layout.h:329
print_frame_side_data
static void print_frame_side_data(AVTextFormatContext *tfc, const AVFrame *frame, const AVStream *stream)
Definition: ffprobe.c:1434
AV_RL8
#define AV_RL8(x)
Definition: intreadwrite.h:394
avio_size
int64_t avio_size(AVIOContext *s)
Get the filesize.
Definition: aviobuf.c:326
print_dispositions
static void print_dispositions(AVTextFormatContext *tfc, uint32_t disposition, SectionID section_id)
Definition: ffprobe.c:1852
ffprobe_show_pixel_formats
static void ffprobe_show_pixel_formats(AVTextFormatContext *tfc)
Definition: ffprobe.c:2841
AV_PKT_FLAG_KEY
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
Definition: packet.h:650
AVFilmGrainParams::color_trc
enum AVColorTransferCharacteristic color_trc
Definition: film_grain_params.h:232
do_show_format_tags
static int do_show_format_tags
Definition: ffprobe.c:122
av_packet_free
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
Definition: packet.c:74
AVFilmGrainParams::seed
uint64_t seed
Seed to use for the synthesis process, if the codec allows for it.
Definition: film_grain_params.h:213
av_chroma_location_name
const char * av_chroma_location_name(enum AVChromaLocation location)
Definition: pixdesc.c:3877
AVTextFormatDataDump
AVTextFormatDataDump
Definition: avtextformat.h:92
hdr_dynamic_vivid_metadata.h
do_show_frames
static int do_show_frames
Definition: ffprobe.c:105
AVDownmixInfo::surround_mix_level_ltrt
double surround_mix_level_ltrt
Absolute scale factor representing the nominal level of the surround channels during an Lt/Rt compati...
Definition: downmix_info.h:86
OptionDef
Definition: cmdutils.h:195
AV_FIELD_BT
@ AV_FIELD_BT
Bottom coded first, top displayed first.
Definition: defs.h:217
AVInputFormat::long_name
const char * long_name
Descriptive name for the format, meant to be more human-readable than name.
Definition: avformat.h:558
AV_FRAME_FLAG_TOP_FIELD_FIRST
#define AV_FRAME_FLAG_TOP_FIELD_FIRST
A flag to mark frames where the top field is displayed first if the content is interlaced.
Definition: frame.h:687
SECTION_ID_FRAME_TAGS
@ SECTION_ID_FRAME_TAGS
Definition: ffprobe.c:174
print_chroma_location
static void print_chroma_location(AVTextFormatContext *tfc, enum AVChromaLocation chroma_location)
Definition: ffprobe.c:1280
ReadInterval::id
int id
identifier
Definition: ffprobe.c:151
AVTextFormatSection::id
int id
unique id identifying a section
Definition: avtextformat.h:42
ff_mutex_unlock
static int ff_mutex_unlock(AVMutex *mutex)
Definition: thread.h:189
AVContentLightMetadata
Content light level needed by to transmit HDR over HDMI (CTA-861.3).
Definition: mastering_display_metadata.h:107
print_dynamic_hdr_smpte2094_app5
static void print_dynamic_hdr_smpte2094_app5(AVTextFormatContext *tfc, const AVDynamicHDRSmpte2094App5 *metadata)
Definition: ffprobe.c:834
AV_PKT_DATA_DOVI_CONF
@ AV_PKT_DATA_DOVI_CONF
DOVI configuration ref: dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2....
Definition: packet.h:280
AVDOVIRpuDataHeader::coef_data_type
uint8_t coef_data_type
Definition: dovi_meta.h:93
do_show_library_versions
static int do_show_library_versions
Definition: ffprobe.c:115
AVStereo3D::horizontal_field_of_view
AVRational horizontal_field_of_view
Horizontal field of view, in degrees.
Definition: stereo3d.h:239
AVCodecParameters::color_primaries
enum AVColorPrimaries color_primaries
Definition: codec_par.h:190
InputStream
Definition: ffmpeg.h:483
AVTextFormatContext::level
int level
current level, starting from 0
Definition: avtextformat.h:144
avformat_close_input
void avformat_close_input(AVFormatContext **s)
Close an opened input AVFormatContext.
Definition: demux.c:377
AVPacketSideData::size
size_t size
Definition: packet.h:418
match_section
static int match_section(const char *section_name, int show_all_entries, AVDictionary *entries)
Definition: ffprobe.c:2929
AVHDRPlusColorTransformParams::color_saturation_mapping_flag
uint8_t color_saturation_mapping_flag
This flag shall be equal to 0 in bitstreams conforming to this version of this Specification.
Definition: hdr_dynamic_metadata.h:222
AVTextFormatSection::name
const char * name
Definition: avtextformat.h:43
unit_hertz_str
static const char unit_hertz_str[]
Definition: ffprobe.c:348
AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES
#define AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES
exclude control codes not accepted by XML
Definition: avstring.h:374
subtitle_codec_name
static const char * subtitle_codec_name
Definition: ffprobe.c:137
AV_FIELD_TT
@ AV_FIELD_TT
Top coded_first, top displayed first.
Definition: defs.h:214
SHOW_OPTIONAL_FIELDS_NEVER
#define SHOW_OPTIONAL_FIELDS_NEVER
Definition: ffprobe.c:141
SECTION_ID_STREAMS
@ SECTION_ID_STREAMS
Definition: ffprobe.c:229
print_color_space
static void print_color_space(AVTextFormatContext *tfc, enum AVColorSpace color_space)
Definition: ffprobe.c:1250
AVHDRVividColorToneMappingParams::three_Spline_enable_flag
int three_Spline_enable_flag
indicates 3Spline_enable_flag in the base parameter, This flag indicates that transfer three Spline o...
Definition: hdr_dynamic_vivid_metadata.h:163
show_optional_fields
static int show_optional_fields
Definition: ffprobe.c:143
av_color_space_name
const char * av_color_space_name(enum AVColorSpace space)
Definition: pixdesc.c:3856
SECTION_ID_STREAM_GROUP
@ SECTION_ID_STREAM_GROUP
Definition: ffprobe.c:208
AVHDRPlusColorTransformParams::center_of_ellipse_x
uint16_t center_of_ellipse_x
The x coordinate of the center position of the concentric internal and external ellipses of the ellip...
Definition: hdr_dynamic_metadata.h:102
opt_pretty
static int opt_pretty(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3196
AVCodecContext::codec
const struct AVCodec * codec
Definition: avcodec.h:452
ffprobe_show_program_version
static void ffprobe_show_program_version(AVTextFormatContext *tfc)
Definition: ffprobe.c:2792
AVPacket::opaque_ref
AVBufferRef * opaque_ref
AVBufferRef for free use by the API user.
Definition: packet.h:631
AVHDRVividColorTransformParams::tm_params
AVHDRVividColorToneMappingParams tm_params[2]
The color tone mapping parameters.
Definition: hdr_dynamic_vivid_metadata.h:223
show_format
static int show_format(AVTextFormatContext *tfc, InputFile *ifile)
Definition: ffprobe.c:2461
AV_DOVI_COMPRESSION_EXTENDED
@ AV_DOVI_COMPRESSION_EXTENDED
Definition: dovi_meta.h:71
LogBuffer::log_level
int log_level
Definition: ffprobe.c:363
AVStreamGroupTileGrid
AVStreamGroupTileGrid holds information on how to combine several independent images on a single canv...
Definition: avformat.h:954
AVFilmGrainAOMParams::grain_scale_shift
int grain_scale_shift
Signals the down shift applied to the generated gaussian numbers during synthesis.
Definition: film_grain_params.h:99
AV_TEXTFORMAT_SECTION_FLAG_NUMBERING_BY_TYPE
#define AV_TEXTFORMAT_SECTION_FLAG_NUMBERING_BY_TYPE
the items in this array section should be numbered individually by type
Definition: avtextformat.h:50
AVDOVIRpuDataHeader::el_bit_depth
uint8_t el_bit_depth
Definition: dovi_meta.h:98
AVHDRVivid3SplineParams::th_delta1
AVRational th_delta1
3Spline_TH_Delta1 of three Spline.
Definition: hdr_dynamic_vivid_metadata.h:56
frames
if it could not because there are no more frames
Definition: filter_design.txt:267
timecode.h
AV_TEXTFORMAT_DATADUMP_BASE64
@ AV_TEXTFORMAT_DATADUMP_BASE64
Definition: avtextformat.h:94
AVIAMFSubmixLayout
Submix layout as defined in section 3.7.6 of IAMF.
Definition: iamf.h:517
avformat_stream_group_name
const char * avformat_stream_group_name(enum AVStreamGroupParamsType type)
Definition: avformat.c:264
AVDOVIDecoderConfigurationRecord::dv_md_compression
uint8_t dv_md_compression
Definition: dovi_meta.h:64
AVStreamGroupTileGrid::coded_width
int coded_width
Width of the canvas.
Definition: avformat.h:969
AVCodecContext::refs
int refs
number of reference frames
Definition: avcodec.h:701
AVERROR_OPTION_NOT_FOUND
#define AVERROR_OPTION_NOT_FOUND
Option not found.
Definition: error.h:63
AV_BPRINT_SIZE_AUTOMATIC
#define AV_BPRINT_SIZE_AUTOMATIC
AVChapter
Definition: avformat.h:1243
val
static double val(void *priv, double ch)
Definition: aeval.c:77
show_help_default
void show_help_default(const char *opt, const char *arg)
Per-fftool specific help handler.
Definition: ffprobe.c:3045
AVStreamGroupTileGrid::coded_height
int coded_height
Width of the canvas.
Definition: avformat.h:975
AVDownmixInfo
This structure describes optional metadata relevant to a downmix procedure.
Definition: downmix_info.h:58
pts
static int64_t pts
Definition: transcode_aac.c:644
SECTION_ID_FRAME_SIDE_DATA_PIECE
@ SECTION_ID_FRAME_SIDE_DATA_PIECE
Definition: ffprobe.c:182
AVCodecContext::coded_height
int coded_height
Definition: avcodec.h:619
AVFilmGrainAOMParams::limit_output_range
int limit_output_range
Signals to clip to limited color levels after film grain application.
Definition: film_grain_params.h:122
AVStream::duration
int64_t duration
Decoding: duration of the stream, in stream time base.
Definition: avformat.h:806
AVAmbientViewingEnvironment::ambient_illuminance
AVRational ambient_illuminance
Environmental illuminance of the ambient viewing environment in lux.
Definition: ambient_viewing_environment.h:40
input_filename
static const char * input_filename
Definition: ffprobe.c:343
print_private_data
static void print_private_data(AVTextFormatContext *tfc, void *priv_data)
Definition: ffprobe.c:1202
print_duration_ts
#define print_duration_ts(k, v)
Definition: ffprobe.c:457
AVFilmGrainAOMParams::num_y_points
int num_y_points
Number of points, and the scale and value for each point of the piecewise linear scaling function for...
Definition: film_grain_params.h:49
AVIAMFAudioElement::audio_element_type
enum AVIAMFAudioElementType audio_element_type
Audio element type as defined in section 3.6 of IAMF.
Definition: iamf.h:391
av_reduce
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction.
Definition: rational.c:35
streams_with_film_grain
static int * streams_with_film_grain
Definition: ffprobe.c:357
AVIAMFReconGain
Recon Gain Info Parameter Data as defined in section 3.8.3 of IAMF.
Definition: iamf.h:148
AVRational::num
int num
Numerator.
Definition: rational.h:59
avformat_network_init
int avformat_network_init(void)
Do global initialization of network libraries.
Definition: utils.c:561
AV_FIELD_TB
@ AV_FIELD_TB
Top coded first, bottom displayed first.
Definition: defs.h:216
InputFile
Definition: ffmpeg.h:529
AVHDRPlusColorTransformParams::knee_point_y
AVRational knee_point_y
The y coordinate of the separation point between the linear part and the curved part of the tone mapp...
Definition: hdr_dynamic_metadata.h:203
AVDOVIRpuDataHeader::vdr_rpu_normalized_idc
uint8_t vdr_rpu_normalized_idc
Definition: dovi_meta.h:95
AVDOVIRpuDataHeader::el_spatial_resampling_filter_flag
uint8_t el_spatial_resampling_filter_flag
Definition: dovi_meta.h:101
do_read_packets
static int do_read_packets
Definition: ffprobe.c:101
AVFilmGrainAOMParams
This structure describes how to handle film grain synthesis for AOM codecs.
Definition: film_grain_params.h:44
AVHDRPlusColorTransformParams::num_bezier_curve_anchors
uint8_t num_bezier_curve_anchors
The number of the intermediate anchor parameters of the tone mapping function in the processing windo...
Definition: hdr_dynamic_metadata.h:209
av_stereo3d_view_name
const char * av_stereo3d_view_name(unsigned int view)
Provide a human-readable name of a given stereo3d view.
Definition: stereo3d.c:112
opt_read_intervals
static int opt_read_intervals(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3191
AVFilmGrainH274Params::intensity_interval_upper_bound
uint8_t intensity_interval_upper_bound[3][256]
Specifies the upper bound of each intensity interval for which the set of model values applies for th...
Definition: film_grain_params.h:179
avsubtitle_free
void avsubtitle_free(AVSubtitle *sub)
Free all allocated data in the given subtitle struct.
Definition: avcodec.c:421
AV_PKT_DATA_WEBVTT_SETTINGS
@ AV_PKT_DATA_WEBVTT_SETTINGS
The optional settings (rendering instructions) that immediately follow the timestamp specifier of a W...
Definition: packet.h:199
AV_IAMF_PARAMETER_DEFINITION_RECON_GAIN
@ AV_IAMF_PARAMETER_DEFINITION_RECON_GAIN
Subblocks are of struct type AVIAMFReconGain.
Definition: iamf.h:181
close_input_file
static void close_input_file(InputFile *ifile)
Definition: ffprobe.c:2677
av_frame_alloc
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
Definition: frame.c:52
parse_read_intervals
static int parse_read_intervals(const char *intervals_spec)
Definition: ffprobe.c:3143
AVFormatContext::bit_rate
int64_t bit_rate
Total stream bitrate in bit/s, 0 if not available.
Definition: avformat.h:1426
av_get_bits_per_sample
int av_get_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
Definition: utils.c:549
AVCodecParameters::color_trc
enum AVColorTransferCharacteristic color_trc
Definition: codec_par.h:191
avcodec_decode_subtitle2
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, const AVPacket *avpkt)
Decode a subtitle message.
Definition: decode.c:926
show_error
static void show_error(AVTextFormatContext *tfc, int err)
Definition: ffprobe.c:2492
AVIAMFSubmixElement::annotations
AVDictionary * annotations
A dictionary of strings describing the submix in different languages.
Definition: iamf.h:493
AVTextFormatSection::flags
int flags
Definition: avtextformat.h:56
AVFilmGrainParams::bit_depth_chroma
int bit_depth_chroma
Definition: film_grain_params.h:239
avassert.h
do_show_error
static int do_show_error
Definition: ffprobe.c:103
show_frame
static void show_frame(AVTextFormatContext *tfc, AVFrame *frame, AVStream *stream, AVFormatContext *fmt_ctx)
Definition: ffprobe.c:1509
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:210
CHECK_END
#define CHECK_END
AVTextFormatOptions::is_key_selected
int(* is_key_selected)(struct AVTextFormatContext *tctx, const char *key)
Callback to discard certain elements based upon the key used.
Definition: avtextformat.h:124
AVFormatContext::metadata
AVDictionary * metadata
Metadata that applies to the whole file.
Definition: avformat.h:1516
film_grain_params.h
AVFrameSideData::size
size_t size
Definition: frame.h:317
AVInputFormat
Definition: avformat.h:546
FF_ARRAY_ELEMS
#define FF_ARRAY_ELEMS(a)
Definition: sinewin_tablegen.c:29
AVDOVIRpuDataHeader::chroma_resampling_explicit_filter_flag
uint8_t chroma_resampling_explicit_filter_flag
Definition: dovi_meta.h:92
AV_PKT_FLAG_CORRUPT
#define AV_PKT_FLAG_CORRUPT
The packet content is corrupted.
Definition: packet.h:651
av_dump_format
void av_dump_format(AVFormatContext *ic, int index, const char *url, int is_output)
Print detailed information about the input or output format, such as duration, bitrate,...
Definition: dump.c:855
AV_PROFILE_UNKNOWN
#define AV_PROFILE_UNKNOWN
Definition: defs.h:65
AVStreamGroup::params
union AVStreamGroup::@448 params
Group type-specific parameters.
nb_streams_frames
static uint64_t * nb_streams_frames
Definition: ffprobe.c:354
AVFilmGrainParams::width
int width
Intended display resolution.
Definition: film_grain_params.h:220
print_int_fmt
#define print_int_fmt(k, v, f, u)
Definition: ffprobe.c:459
AV_FRAME_FLAG_KEY
#define AV_FRAME_FLAG_KEY
A flag to mark frames that are keyframes.
Definition: frame.h:674
avformat_open_input
int avformat_open_input(AVFormatContext **ps, const char *url, const AVInputFormat *fmt, AVDictionary **options)
Open an input stream and read the header.
Definition: demux.c:231
AVMutex
#define AVMutex
Definition: thread.h:184
av_dict_get
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
Definition: dict.c:60
av_channel_layout_describe
int av_channel_layout_describe(const AVChannelLayout *channel_layout, char *buf, size_t buf_size)
Get a human-readable string describing the channel layout properties.
Definition: channel_layout.c:654
SECTION_ID_STREAM_GROUP_STREAMS
@ SECTION_ID_STREAM_GROUP_STREAMS
Definition: ffprobe.c:221
av_log_format_line
void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, char *line, int line_size, int *print_prefix)
Format a line of log the same way as the default callback.
Definition: log.c:362
SECTION_ID_FORMAT_TAGS
@ SECTION_ID_FORMAT_TAGS
Definition: ffprobe.c:171
AVDOVIRpuDataHeader::vdr_bit_depth
uint8_t vdr_bit_depth
Definition: dovi_meta.h:99
AV_STREAM_GROUP_PARAMS_IAMF_MIX_PRESENTATION
@ AV_STREAM_GROUP_PARAMS_IAMF_MIX_PRESENTATION
Definition: avformat.h:1108
AVDOVIRpuDataHeader::rpu_type
uint8_t rpu_type
Definition: dovi_meta.h:88
avcodec_alloc_context3
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
Definition: options.c:149
av_packet_side_data_name
const char * av_packet_side_data_name(enum AVPacketSideDataType type)
Definition: packet.c:269
do_count_frames
static int do_count_frames
Definition: ffprobe.c:98
AVChapter::end
int64_t end
chapter start/end time in time_base units
Definition: avformat.h:1246
AVDOVIMetadata
Combined struct representing a combination of header, mapping and color metadata, for attaching to fr...
Definition: dovi_meta.h:345
ReadInterval::end
int64_t end
start, end in second/AV_TIME_BASE units
Definition: ffprobe.c:152
AVCodecDescriptor
This struct describes the properties of a single codec described by an AVCodecID.
Definition: codec_desc.h:38
stereo3d.h
print_displaymatrix
static void print_displaymatrix(AVTextFormatContext *tfc, const int32_t matrix[9])
Definition: ffprobe.c:536
log_read_interval
static void log_read_interval(const ReadInterval *interval, void *log_ctx, int log_level)
Definition: ffprobe.c:1669
intreadwrite.h
AVFormatContext::video_codec
const struct AVCodec * video_codec
Forced video codec.
Definition: avformat.h:1811
s
#define s(width, name)
Definition: cbs_vp9.c:198
AV_FRAME_DATA_IAMF_DEMIXING_INFO_PARAM
@ AV_FRAME_DATA_IAMF_DEMIXING_INFO_PARAM
IAMF Demixing Info Parameter Data associated with the audio frame.
Definition: frame.h:286
AVTextFormatter
Definition: avtextformat.h:97
AVDOVIReshapingCurve::mmr_order
uint8_t mmr_order[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:125
AVHDRPlusColorTransformParams::semiminor_axis_external_ellipse
uint16_t semiminor_axis_external_ellipse
The semi-minor axis value of the external ellipse of the elliptical pixel selector in amount of pixel...
Definition: hdr_dynamic_metadata.h:141
show_packet
static void show_packet(AVTextFormatContext *tfc, InputFile *ifile, AVPacket *pkt, int packet_idx)
Definition: ffprobe.c:1351
unit_bit_per_second_str
static const char unit_bit_per_second_str[]
Definition: ffprobe.c:350
av_realloc_array
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
Definition: mem.c:217
AVFormatContext::nb_programs
unsigned int nb_programs
Definition: avformat.h:1481
AVHDRPlusColorTransformParams::window_upper_left_corner_y
AVRational window_upper_left_corner_y
The relative y coordinate of the top left pixel of the processing window.
Definition: hdr_dynamic_metadata.h:76
avtext_print_data_hash
void avtext_print_data_hash(AVTextFormatContext *tctx, const char *key, const uint8_t *data, int size)
Definition: avtextformat.c:587
AVInputFormat::name
const char * name
A comma separated list of short names for the format.
Definition: avformat.h:551
AVFormatContext::iformat
const struct AVInputFormat * iformat
The input container format.
Definition: avformat.h:1296
audio_codec_name
static const char * audio_codec_name
Definition: ffprobe.c:135
AVFormatContext::chapters
AVChapter ** chapters
Definition: avformat.h:1385
AVHDRPlusColorTransformParams::window_lower_right_corner_x
AVRational window_lower_right_corner_x
The relative x coordinate of the bottom right pixel of the processing window.
Definition: hdr_dynamic_metadata.h:85
SECTION_ID_SUBTITLE
@ SECTION_ID_SUBTITLE
Definition: ffprobe.c:233
pix_fmt
static enum AVPixelFormat pix_fmt
Definition: demux_decode.c:41
AVDictionaryEntry::key
char * key
Definition: dict.h:91
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:201
AVDOVIRpuDataHeader::spatial_resampling_filter_flag
uint8_t spatial_resampling_filter_flag
Definition: dovi_meta.h:100
AVCodecParameters::width
int width
The width of the video frame in pixels.
Definition: codec_par.h:143
show_program
static int show_program(AVTextFormatContext *tfc, InputFile *ifile, AVProgram *program)
Definition: ffprobe.c:2109
av_iamf_param_definition_get_subblock
static av_always_inline void * av_iamf_param_definition_get_subblock(const AVIAMFParamDefinition *par, unsigned int idx)
Get the subblock at the specified.
Definition: iamf.h:260
AV_CHANNEL_ORDER_UNSPEC
@ AV_CHANNEL_ORDER_UNSPEC
Only the channel count is specified, without any further information about the channel order.
Definition: channel_layout.h:119
avtextwriter_context_close
int avtextwriter_context_close(AVTextWriterContext **pwctx)
Definition: avtextformat.c:625
AVTextFormatSection
Definition: avtextformat.h:41
av_strtok
char * av_strtok(char *s, const char *delim, char **saveptr)
Split the string into several tokens which can be accessed by successive calls to av_strtok().
Definition: avstring.c:179
get_decoder_for_stream
static const AVCodec * get_decoder_for_stream(AVFormatContext *fmt_ctx, AVStream *stream)
Definition: ffprobe.c:2529
get_frame_side_data_type
static const char * get_frame_side_data_type(const void *data)
Definition: ffprobe.c:242
print_fmt
#define print_fmt(k, f,...)
Definition: ffprobe.c:431
avcodec_receive_frame
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
Alias for avcodec_receive_frame_flags(avctx, frame, 0).
Definition: avcodec.c:731
av_assert0
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Definition: avassert.h:42
print_primaries
static void print_primaries(AVTextFormatContext *tfc, enum AVColorPrimaries color_primaries)
Definition: ffprobe.c:1260
AVIAMFSubmixElement::headphones_rendering_mode
enum AVIAMFHeadphonesMode headphones_rendering_mode
A value that indicates whether the referenced channel-based Audio Element shall be rendered to stereo...
Definition: iamf.h:481
do_show_stream_group_tags
static int do_show_stream_group_tags
Definition: ffprobe.c:125
AVStreamGroup::index
unsigned int index
Group index in AVFormatContext.
Definition: avformat.h:1128
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition: avcodec.h:1571
AV_LOG_DEBUG
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
Definition: log.h:231
AVPacketSideData::data
uint8_t * data
Definition: packet.h:417
AVDOVIDecoderConfigurationRecord::dv_profile
uint8_t dv_profile
Definition: dovi_meta.h:58
av_guess_sample_aspect_ratio
AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame)
Guess the sample aspect ratio of a frame, based on both the stream and the frame aspect ratio.
Definition: avformat.c:783
avtext_context_open
int avtext_context_open(AVTextFormatContext **ptctx, const AVTextFormatter *formatter, AVTextWriterContext *writer_context, const char *args, const AVTextFormatSection *sections, int nb_sections, AVTextFormatOptions options, char *show_data_hash)
Definition: avtextformat.c:127
get_raw_string_type
static const char * get_raw_string_type(const void *data)
Definition: ffprobe.c:248
SECTION_ID_ROOT
@ SECTION_ID_ROOT
Definition: ffprobe.c:226
AVIAMFLayer::ch_layout
AVChannelLayout ch_layout
Definition: iamf.h:297
AV_PKT_DATA_STEREO3D
@ AV_PKT_DATA_STEREO3D
This side data should be associated with a video stream and contains Stereoscopic 3D information in f...
Definition: packet.h:111
AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5
@ AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5
HDR dynamic metadata associated with a video frame.
Definition: frame.h:270
av_rescale_q
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
Definition: mathematics.c:142
IN_STREAM_GROUP
#define IN_STREAM_GROUP
Definition: ffprobe.c:1865
AVSubtitle::pts
int64_t pts
Same as packet pts, in AV_TIME_BASE.
Definition: avcodec.h:2106
pixel_formats
static enum AVPixelFormat pixel_formats[]
Definition: vf_sr.c:64
do_show_chapter_tags
static int do_show_chapter_tags
Definition: ffprobe.c:121
AVPixFmtDescriptor::log2_chroma_w
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
Definition: pixdesc.h:80
do_show_pixel_format_components
static int do_show_pixel_format_components
Definition: ffprobe.c:118
AV_DOVI_MAPPING_POLYNOMIAL
@ AV_DOVI_MAPPING_POLYNOMIAL
Definition: dovi_meta.h:108
AV_TEXTFORMAT_DATADUMP_XXD
@ AV_TEXTFORMAT_DATADUMP_XXD
Definition: avtextformat.h:93
AVCodecContext::rc_max_rate
int64_t rc_max_rate
maximum bitrate
Definition: avcodec.h:1288
SECTION_ID_STREAM_GROUP_SUBPIECE
@ SECTION_ID_STREAM_GROUP_SUBPIECE
Definition: ffprobe.c:216
av_get_sample_fmt_name
const char * av_get_sample_fmt_name(enum AVSampleFormat sample_fmt)
Return the name of sample_fmt, or NULL if sample_fmt is not recognized.
Definition: samplefmt.c:51
AVFilmGrainH274Params::comp_model_value
int16_t comp_model_value[3][256][6]
Specifies the model values for the component for each intensity interval.
Definition: film_grain_params.h:190
key
const char * key
Definition: hwcontext_opencl.c:189
AVCodecParameters::nb_coded_side_data
int nb_coded_side_data
Amount of entries in coded_side_data.
Definition: codec_par.h:88
color_range
color_range
Definition: vf_selectivecolor.c:43
AVMEDIA_TYPE_DATA
@ AVMEDIA_TYPE_DATA
Opaque data information usually continuous.
Definition: avutil.h:202
AV_TEXTFORMAT_SECTION_FLAG_HAS_TYPE
#define AV_TEXTFORMAT_SECTION_FLAG_HAS_TYPE
For these sections the element_name field is mandatory.
Definition: avtextformat.h:49
InputStream::dec_ctx
AVCodecContext * dec_ctx
Definition: ffprobe.c:83
do_show_chapters
static int do_show_chapters
Definition: ffprobe.c:102
AVCOL_PRI_UNSPECIFIED
@ AVCOL_PRI_UNSPECIFIED
Definition: pixfmt.h:639
AVCPBProperties
This structure describes the bitrate properties of an encoded bitstream.
Definition: defs.h:282
AV_FILM_GRAIN_PARAMS_NONE
@ AV_FILM_GRAIN_PARAMS_NONE
Definition: film_grain_params.h:25
AVFormatContext::data_codec
const struct AVCodec * data_codec
Forced data codec.
Definition: avformat.h:1835
AVFormatContext::probe_score
int probe_score
format probing score.
Definition: avformat.h:1754
AVDOVIDecoderConfigurationRecord::dv_version_major
uint8_t dv_version_major
Definition: dovi_meta.h:56
av_dovi_get_header
static av_always_inline AVDOVIRpuDataHeader * av_dovi_get_header(const AVDOVIMetadata *data)
Definition: dovi_meta.h:363
AVDOVIReshapingCurve::poly_order
uint8_t poly_order[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:122
AV_FRAME_DATA_DYNAMIC_HDR_VIVID
@ AV_FRAME_DATA_DYNAMIC_HDR_VIVID
HDR Vivid dynamic metadata associated with a video frame.
Definition: frame.h:215
find_stream_info
static int find_stream_info
Definition: ffprobe.c:161
SECTION_ID_FRAME_LOGS
@ SECTION_ID_FRAME_LOGS
Definition: ffprobe.c:184
arg
const char * arg
Definition: jacosubdec.c:65
AVStereo3D::flags
int flags
Additional information about the frame packing.
Definition: stereo3d.h:212
do_show_pixel_format_flags
static int do_show_pixel_format_flags
Definition: ffprobe.c:117
AVHDRPlusPercentile::percentage
uint8_t percentage
The percentage value corresponding to a specific percentile linearized RGB value in the processing wi...
Definition: hdr_dynamic_metadata.h:45
AVFilmGrainH274Params::model_id
int model_id
Specifies the film grain simulation mode.
Definition: film_grain_params.h:137
open_input_file
static int open_input_file(InputFile *ifile, const char *filename, const char *print_filename)
Definition: ffprobe.c:2559
AVDOVINLQParams::linear_deadzone_threshold
uint64_t linear_deadzone_threshold
Definition: dovi_meta.h:144
InputFile::streams
InputStream * streams
Definition: ffprobe.c:89
AVTextFormatSection::unique_name
const char * unique_name
unique section name, in case the name is ambiguous
Definition: avtextformat.h:59
print_tile_grid_params
static void print_tile_grid_params(AVTextFormatContext *tfc, const AVStreamGroup *stg, const AVStreamGroupTileGrid *tile_grid)
Definition: ffprobe.c:2158
av_color_range_name
const char * av_color_range_name(enum AVColorRange range)
Definition: pixdesc.c:3772
ReadInterval::start
int64_t start
Definition: ffprobe.c:152
AVDISCARD_ALL
@ AVDISCARD_ALL
discard all
Definition: defs.h:232
AVFormatContext
Format I/O context.
Definition: avformat.h:1284
print_int
#define print_int(k, v)
Definition: ffprobe.c:449
AVFilmGrainAOMParams::uv_mult_luma
int uv_mult_luma[2]
Definition: film_grain_params.h:106
init_dynload
void init_dynload(void)
Initialize dynamic library loading.
Definition: cmdutils.c:75
opts
static AVDictionary * opts
Definition: movenc.c:51
read_intervals
static ReadInterval * read_intervals
Definition: ffprobe.c:158
AVIAMFDemixingInfo
Demixing Info Parameter Data as defined in section 3.8.2 of IAMF.
Definition: iamf.h:128
AVStream::codecpar
AVCodecParameters * codecpar
Codec parameters associated with this stream.
Definition: avformat.h:770
SECTION_ID_STREAM_GROUPS
@ SECTION_ID_STREAM_GROUPS
Definition: ffprobe.c:225
AVCodecParameters::avcodec_parameters_to_context
int avcodec_parameters_to_context(AVCodecContext *codec, const struct AVCodecParameters *par)
Fill the codec context based on the values from the supplied codec parameters.
AV_PKT_DATA_EXIF
@ AV_PKT_DATA_EXIF
Extensible image file format metadata.
Definition: packet.h:369
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:76
ReadInterval::has_end
int has_end
Definition: ffprobe.c:153
avcodec_get_class
const AVClass * avcodec_get_class(void)
Get the AVClass for AVCodecContext.
Definition: options.c:184
print_alpha_mode
static void print_alpha_mode(AVTextFormatContext *tfc, enum AVAlphaMode alpha_mode)
Definition: ffprobe.c:1290
metadata
Stream codec metadata
Definition: ogg-flac-chained-meta.txt:2
SECTION_ID_FRAME_LOG
@ SECTION_ID_FRAME_LOG
Definition: ffprobe.c:183
AVStream::time_base
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
Definition: avformat.h:786
NULL
#define NULL
Definition: coverity.c:32
avtext_print_string
int avtext_print_string(AVTextFormatContext *tctx, const char *key, const char *val, int flags)
Definition: avtextformat.c:457
AVTextFormatContext::section
const AVTextFormatSection * section[SECTION_MAX_NB_LEVELS]
section per each level
Definition: avtextformat.h:151
SET_DO_SHOW
#define SET_DO_SHOW(id, varname)
Definition: ffprobe.c:3361
avcodec_find_decoder_by_name
const AVCodec * avcodec_find_decoder_by_name(const char *name)
Find a registered decoder with the specified name.
Definition: allcodecs.c:1077
AVDOVIDecoderConfigurationRecord::dv_level
uint8_t dv_level
Definition: dovi_meta.h:59
AVDownmixInfo::surround_mix_level
double surround_mix_level
Absolute scale factor representing the nominal level of the surround channels during a regular downmi...
Definition: downmix_info.h:80
program_name
const char program_name[]
program name, defined by the program for show_version().
Definition: ffprobe.c:93
format
New swscale design to change SwsGraph is what coordinates multiple passes These can include cascaded scaling error diffusion and so on Or we could have separate passes for the vertical and horizontal scaling In between each SwsPass lies a fully allocated image buffer Graph passes may have different levels of e g we can have a single threaded error diffusion pass following a multi threaded scaling pass SwsGraph is internally recreated whenever the image format
Definition: swscale-v2.txt:14
AVDOVIDecoderConfigurationRecord::dv_bl_signal_compatibility_id
uint8_t dv_bl_signal_compatibility_id
Definition: dovi_meta.h:63
InputStream::st
AVStream * st
Definition: ffmpeg.h:491
AV_DICT_MULTIKEY
#define AV_DICT_MULTIKEY
Allow to store several equal keys in the dictionary.
Definition: dict.h:84
AVHDRVividColorTransformParams::color_saturation_gain
AVRational color_saturation_gain[8]
Indicates the color correction strength parameter.
Definition: hdr_dynamic_vivid_metadata.h:242
AVPixFmtDescriptor::nb_components
uint8_t nb_components
The number of components each pixel has, (1-4)
Definition: pixdesc.h:71
show_stream_groups
static int show_stream_groups(AVTextFormatContext *tfc, InputFile *ifile)
Definition: ffprobe.c:2419
AV_DOVI_MAPPING_MMR
@ AV_DOVI_MAPPING_MMR
Definition: dovi_meta.h:109
OPT_EXPERT
#define OPT_EXPERT
Definition: cmdutils.h:211
ERROR
static void ERROR(const char *str)
Definition: audio_fifo.c:58
do_read_frames
static int do_read_frames
Definition: ffprobe.c:100
AVDynamicHDRSmpte2094App5
This struct represents dynamic metadata for color volume transform as specified in the SMPTE 2094-50 ...
Definition: hdr_dynamic_metadata.h:387
AVStreamGroupTileGrid::coded_side_data
AVPacketSideData * coded_side_data
Additional data associated with the grid.
Definition: avformat.h:1057
SECTION_ID_LIBRARY_VERSION
@ SECTION_ID_LIBRARY_VERSION
Definition: ffprobe.c:185
avcodec_free_context
void avcodec_free_context(AVCodecContext **avctx)
Free the codec context and everything associated with it and write NULL to the provided pointer.
Definition: options.c:164
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
AVIAMFParamDefinition::duration
unsigned int duration
The accumulated duration of all blocks in this parameter definition, in units of 1 / parameter_rate.
Definition: iamf.h:231
SECTION_ID_STREAM_TAGS
@ SECTION_ID_STREAM_TAGS
Definition: ffprobe.c:230
isnan
#define isnan(x)
Definition: libm.h:342
SHOW_OPTIONAL_FIELDS_ALWAYS
#define SHOW_OPTIONAL_FIELDS_ALWAYS
Definition: ffprobe.c:142
AV_TEXTFORMAT_VALUE_FMT_BYTE
@ AV_TEXTFORMAT_VALUE_FMT_BYTE
Definition: avtextformat.h:166
AVPacketSideData::type
enum AVPacketSideDataType type
Definition: packet.h:419
filter_codec_opts
int filter_codec_opts(const AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec, AVDictionary **dst, AVDictionary **opts_used)
Filter out options for given codec.
Definition: cmdutils.c:1423
print_q
#define print_q(k, v, s)
Definition: ffprobe.c:450
AVStereo3D::horizontal_disparity_adjustment
AVRational horizontal_disparity_adjustment
Relative shift of the left and right images, which changes the zero parallax plane.
Definition: stereo3d.h:234
AVFormatContext::pb
AVIOContext * pb
I/O context.
Definition: avformat.h:1326
av_log_set_flags
void av_log_set_flags(int arg)
Definition: log.c:482
AV_RN32
#define AV_RN32(p)
Definition: intreadwrite.h:360
parseutils.h
AVIAMFLayer
A layer defining a Channel Layout in the Audio Element.
Definition: iamf.h:294
SECTION_ID_STREAM_GROUP_PIECE
@ SECTION_ID_STREAM_GROUP_PIECE
Definition: ffprobe.c:214
AV_FRAME_DATA_ICC_PROFILE
@ AV_FRAME_DATA_ICC_PROFILE
The data contains an ICC profile as an opaque octet buffer following the format described by ISO 1507...
Definition: frame.h:144
AVDynamicHDRVivid
This struct represents dynamic metadata for color volume transform - CUVA 005.1:2021 standard.
Definition: hdr_dynamic_vivid_metadata.h:256
is_key_selected_callback
static int is_key_selected_callback(AVTextFormatContext *tctx, const char *key)
Definition: ffprobe.c:373
options
Definition: swscale.c:45
AVHDRVividColorTransformParams::color_saturation_mapping_flag
int color_saturation_mapping_flag
This flag indicates that the metadata for the color saturation mapping in the processing window is pr...
Definition: hdr_dynamic_vivid_metadata.h:229
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA
@ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA
Mastering display metadata associated with a video frame.
Definition: frame.h:120
AVStream::metadata
AVDictionary * metadata
Definition: avformat.h:827
av_color_primaries_name
const char * av_color_primaries_name(enum AVColorPrimaries primaries)
Definition: pixdesc.c:3790
show_stream
static int show_stream(AVTextFormatContext *tfc, AVFormatContext *fmt_ctx, int stream_idx, InputStream *ist, int container)
Definition: ffprobe.c:1867
print_decibel
#define print_decibel(k, v)
Definition: ffprobe.c:460
AVHDRPlusColorTransformParams::fraction_bright_pixels
AVRational fraction_bright_pixels
The fraction of selected pixels in the image that contains the brightest pixel in the scene.
Definition: hdr_dynamic_metadata.h:183
av_parse_time
int av_parse_time(int64_t *timeval, const char *timestr, int duration)
Parse timestr and return in *time a corresponding number of microseconds.
Definition: parseutils.c:592
ALPHA
@ ALPHA
Definition: drawutils.c:33
AV_DICT_DONT_OVERWRITE
#define AV_DICT_DONT_OVERWRITE
Don't overwrite existing entries.
Definition: dict.h:81
avcodec_open2
int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
Definition: avcodec.c:144
AVTextFormatContext::formatter
const AVTextFormatter * formatter
the AVTextFormatter of which this is an instance
Definition: avtextformat.h:135
GET_DECODER
#define GET_DECODER(type_)
print_integers
static void print_integers(AVTextFormatContext *tfc, const char *key, const void *data, int size, const char *format, int columns, int bytes, int offset_add)
Definition: ffprobe.c:462
set_decoders
static int set_decoders(AVFormatContext *fmt_ctx)
Definition: ffprobe.c:2514
AVCodecParameters::ch_layout
AVChannelLayout ch_layout
The channel layout and number of channels.
Definition: codec_par.h:207
AVFilmGrainParams::subsampling_x
int subsampling_x
Intended subsampling ratio, or 0 for luma-only streams.
Definition: film_grain_params.h:225
AVDOVIReshapingCurve::mmr_constant
int64_t mmr_constant[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:126
do_show_programs
static int do_show_programs
Definition: ffprobe.c:107
AVHDRPlusColorTransformParams::color_saturation_weight
AVRational color_saturation_weight
The color saturation gain in the processing window in the scene.
Definition: hdr_dynamic_metadata.h:229
avtext_get_formatter_by_name
const AVTextFormatter * avtext_get_formatter_by_name(const char *name)
Definition: avtextformat.c:703
AVHDRVividColorTransformParams::tone_mapping_mode_flag
int tone_mapping_mode_flag
This flag indicates that the metadata for the tone mapping function in the processing window is prese...
Definition: hdr_dynamic_vivid_metadata.h:212
AV_FRAME_DATA_AFD
@ AV_FRAME_DATA_AFD
Active Format Description data consisting of a single byte as specified in ETSI TS 101 154 using AVAc...
Definition: frame.h:90
AVPixFmtDescriptor::flags
uint64_t flags
Combination of AV_PIX_FMT_FLAG_...
Definition: pixdesc.h:94
real_options
static const OptionDef real_options[]
Definition: ffprobe.c:3292
AV_PKT_DATA_CONTENT_LIGHT_LEVEL
@ AV_PKT_DATA_CONTENT_LIGHT_LEVEL
Content light level (based on CTA-861.3).
Definition: packet.h:232
AVCOL_RANGE_UNSPECIFIED
@ AVCOL_RANGE_UNSPECIFIED
Definition: pixfmt.h:743
AVCodecParameters::level
int level
Definition: codec_par.h:136
swresample.h
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
unit_byte_str
static const char unit_byte_str[]
Definition: ffprobe.c:349
program_birth_year
const int program_birth_year
program birth year, defined by the program for show_banner()
Definition: ffprobe.c:94
AVCodecParameters::sample_rate
int sample_rate
The number of audio samples per second.
Definition: codec_par.h:213
AVIAMFLayer::output_gain_flags
unsigned int output_gain_flags
Output gain channel flags as defined in section 3.6.2 of IAMF.
Definition: iamf.h:310
print_color_trc
static void print_color_trc(AVTextFormatContext *tfc, enum AVColorTransferCharacteristic color_trc)
Definition: ffprobe.c:1270
AVAudioServiceType
AVAudioServiceType
Definition: defs.h:235
AVFormatContext::audio_codec
const struct AVCodec * audio_codec
Forced audio codec.
Definition: avformat.h:1819
print_iamf_audio_element_params
static void print_iamf_audio_element_params(AVTextFormatContext *tfc, const AVStreamGroup *stg, const AVIAMFAudioElement *audio_element)
Definition: ffprobe.c:2256
AVStream::nb_frames
int64_t nb_frames
number of frames in this stream if known or 0
Definition: avformat.h:808
SECTION_ID_CHAPTER
@ SECTION_ID_CHAPTER
Definition: ffprobe.c:166
AVIAMFSubmixElement::audio_element_id
unsigned int audio_element_id
The id of the Audio Element this submix element references.
Definition: iamf.h:455
avcodec_find_decoder
const AVCodec * avcodec_find_decoder(enum AVCodecID id)
Find a registered decoder with a matching codec ID.
Definition: allcodecs.c:1049
print_duration_time
#define print_duration_time(k, v, tb)
Definition: ffprobe.c:456
print_iamf_param_definition
static void print_iamf_param_definition(AVTextFormatContext *tfc, const char *name, const AVIAMFParamDefinition *param, SectionID section_id)
Definition: ffprobe.c:2190
AV_PKT_DATA_SPHERICAL
@ AV_PKT_DATA_SPHERICAL
This side data should be associated with a video stream and corresponds to the AVSphericalMapping str...
Definition: packet.h:225
AVCodecParameters::extradata_size
int extradata_size
Size of the extradata content in bytes.
Definition: codec_par.h:75
AVIAMFSubmix
Submix layout as defined in section 3.7 of IAMF.
Definition: iamf.h:559
show_value_unit
static int show_value_unit
Definition: ffprobe.c:129
print_dynamic_hdr_vivid
static void print_dynamic_hdr_vivid(AVTextFormatContext *tfc, const AVDynamicHDRVivid *metadata)
Definition: ffprobe.c:890
AVFormatContext::nb_streams
unsigned int nb_streams
Number of elements in AVFormatContext.streams.
Definition: avformat.h:1340
AVStereo3D::primary_eye
enum AVStereo3DPrimaryEye primary_eye
Which eye is the primary eye when rendering in 2D.
Definition: stereo3d.h:222
color_primaries
static const AVColorPrimariesDesc color_primaries[AVCOL_PRI_NB]
Definition: csp.c:76
AV_STREAM_GROUP_PARAMS_TILE_GRID
@ AV_STREAM_GROUP_PARAMS_TILE_GRID
Definition: avformat.h:1109
print_input_filename
static const char * print_input_filename
Definition: ffprobe.c:344
AVAlphaMode
AVAlphaMode
Correlation between the alpha channel and color values.
Definition: pixfmt.h:810
AVFilmGrainAOMParams::num_uv_points
int num_uv_points[2]
If chroma_scaling_from_luma is set to 0, signals the chroma scaling function parameters.
Definition: film_grain_params.h:62
AVIAMFReconGain::subblock_duration
unsigned int subblock_duration
Duration for the given subblock, in units of 1 / parameter_rate.
Definition: iamf.h:156
SECTION_ID_FRAMES
@ SECTION_ID_FRAMES
Definition: ffprobe.c:173
codec_opts
AVDictionary * codec_opts
Definition: cmdutils.c:58
FrameData::pkt_size
int pkt_size
Definition: ffprobe.c:77
avformat_find_stream_info
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
Read packets of a media file to get stream information.
Definition: demux.c:2607
fmt_ctx
static AVFormatContext * fmt_ctx
Definition: decode_filter_audio.c:44
av_spherical_projection_name
const char * av_spherical_projection_name(enum AVSphericalProjection projection)
Provide a human-readable name of a given AVSphericalProjection.
Definition: spherical.c:68
f
f
Definition: af_crystalizer.c:122
SECTION_ID_STREAM_GROUP_PIECES
@ SECTION_ID_STREAM_GROUP_PIECES
Definition: ffprobe.c:213
AV_SPHERICAL_CUBEMAP
@ AV_SPHERICAL_CUBEMAP
Video frame is split into 6 faces of a cube, and arranged on a 3x2 layout.
Definition: spherical.h:61
av_ts2timestr
#define av_ts2timestr(ts, tb)
Convenience macro, the return value should be used only directly in function arguments but never stan...
Definition: timestamp.h:83
OPT_TYPE_INT
@ OPT_TYPE_INT
Definition: cmdutils.h:84
AVIAMFDemixingInfo::subblock_duration
unsigned int subblock_duration
Duration for the given subblock, in units of 1 / parameter_rate.
Definition: iamf.h:136
av_log_set_callback
void av_log_set_callback(void(*callback)(void *, int, const char *, va_list))
Set the logging callback.
Definition: log.c:492
AVPacket::size
int size
Definition: packet.h:596
ReadInterval::start_is_offset
int start_is_offset
Definition: ffprobe.c:154
do_show_packet_tags
static int do_show_packet_tags
Definition: ffprobe.c:127
avformat_match_stream_specifier
int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Check if the stream st contained in s is matched by the stream specifier spec.
Definition: avformat.c:737
SECTION_ID_STREAM_DISPOSITION
@ SECTION_ID_STREAM_DISPOSITION
Definition: ffprobe.c:228
avformat_alloc_context
AVFormatContext * avformat_alloc_context(void)
Allocate an AVFormatContext.
Definition: options.c:164
AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT
@ AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT
Ambient viewing environment metadata, as defined by H.274.
Definition: frame.h:220
height
#define height
Definition: dsp.h:89
av_bprint_finalize
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
Definition: bprint.c:235
PRINT_PIX_FMT_FLAG
#define PRINT_PIX_FMT_FLAG(flagname, name)
Definition: ffprobe.c:2836
AV_PIX_FMT_FLAG_RGB
#define AV_PIX_FMT_FLAG_RGB
The pixel format contains RGB-like data (as opposed to YUV/grayscale).
Definition: pixdesc.h:136
AVClass::category
AVClassCategory category
Category used for visualization (like color).
Definition: log.h:133
AVFilmGrainH274Params::component_model_present
int component_model_present[3]
Indicates if the modelling of film grain for a given component is present.
Definition: film_grain_params.h:155
show_programs
static int show_programs(AVTextFormatContext *tfc, InputFile *ifile)
Definition: ffprobe.c:2140
AV_DOVI_NLQ_LINEAR_DZ
@ AV_DOVI_NLQ_LINEAR_DZ
Definition: dovi_meta.h:132
AV_PKT_DATA_DYNAMIC_HDR10_PLUS
@ AV_PKT_DATA_DYNAMIC_HDR10_PLUS
HDR10+ dynamic metadata associated with a video frame.
Definition: packet.h:296
AVDOVIRpuDataHeader::vdr_rpu_profile
uint8_t vdr_rpu_profile
Definition: dovi_meta.h:90
i
#define i(width, name, range_min, range_max)
Definition: cbs_h264.c:63
av_err2str
#define av_err2str(errnum)
Convenience macro, the return value should be used only directly in function arguments but never stan...
Definition: error.h:122
av_stereo3d_primary_eye_name
const char * av_stereo3d_primary_eye_name(unsigned int eye)
Provide a human-readable name of a given stereo3d primary eye.
Definition: stereo3d.c:132
AVFormatContext::url
char * url
input or output URL.
Definition: avformat.h:1400
avtext_print_section_footer
void avtext_print_section_footer(AVTextFormatContext *tctx)
Definition: avtextformat.c:261
AVCodecContext::pkt_timebase
AVRational pkt_timebase
Timebase in which pkt_dts/pts and AVPacket.dts/pts are expressed.
Definition: avcodec.h:554
SectionID
SectionID
Definition: ffprobe.c:165
AV_MUTEX_INITIALIZER
#define AV_MUTEX_INITIALIZER
Definition: thread.h:185
REALLOCZ_ARRAY_STREAM
#define REALLOCZ_ARRAY_STREAM(ptr, cur_n, new_n)
Definition: ffprobe.c:486
SECTION_ID_STREAM_GROUP_COMPONENT
@ SECTION_ID_STREAM_GROUP_COMPONENT
Definition: ffprobe.c:210
print_iamf_submix_params
static void print_iamf_submix_params(AVTextFormatContext *tfc, const AVIAMFSubmix *submix)
Definition: ffprobe.c:2297
uninit_opts
void uninit_opts(void)
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.
Definition: cmdutils.c:62
AVClass::get_category
AVClassCategory(* get_category)(void *ctx)
Callback to return the instance category.
Definition: log.h:140
size
int size
Definition: twinvq_data.h:10344
SECTION_ID_CHAPTER_TAGS
@ SECTION_ID_CHAPTER_TAGS
Definition: ffprobe.c:167
AVHDRVividColorTransformParams::average_maxrgb
AVRational average_maxrgb
Indicates the average brightness of the displayed content.
Definition: hdr_dynamic_vivid_metadata.h:192
show_private_data
static int show_private_data
Definition: ffprobe.c:133
avformat_seek_file
int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags)
Seek to timestamp ts.
Definition: seek.c:664
AV_NOPTS_VALUE
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition: avutil.h:247
AVStreamGroup::iamf_audio_element
struct AVIAMFAudioElement * iamf_audio_element
Definition: avformat.h:1150
opt_show_versions
static int opt_show_versions(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3266
AVFrameSideData::data
uint8_t * data
Definition: frame.h:316
AVFilmGrainParams
This structure describes how to handle film grain synthesis in video for specific codecs.
Definition: film_grain_params.h:201
opt_input_file
static int opt_input_file(void *optctx, const char *arg)
Definition: ffprobe.c:2998
AVCodecParameters::profile
int profile
Codec-specific bitstream restrictions that the stream conforms to.
Definition: codec_par.h:135
AVDownmixInfo::center_mix_level_ltrt
double center_mix_level_ltrt
Absolute scale factor representing the nominal level of the center channel during an Lt/Rt compatible...
Definition: downmix_info.h:74
AVCHROMA_LOC_UNSPECIFIED
@ AVCHROMA_LOC_UNSPECIFIED
Definition: pixfmt.h:797
SECTION_ID_PACKETS_AND_FRAMES
@ SECTION_ID_PACKETS_AND_FRAMES
Definition: ffprobe.c:190
AVOption::name
const char * name
Definition: opt.h:430
use_value_prefix
static int use_value_prefix
Definition: ffprobe.c:130
SECTION_ID_ERROR
@ SECTION_ID_ERROR
Definition: ffprobe.c:169
AVCPBProperties::min_bitrate
int64_t min_bitrate
Minimum bitrate of the stream, in bits per second.
Definition: defs.h:292
AVSubtitle::end_display_time
uint32_t end_display_time
Definition: avcodec.h:2103
avdevice.h
av_packet_unpack_dictionary
int av_packet_unpack_dictionary(const uint8_t *data, size_t size, AVDictionary **dict)
Unpack a dictionary from side_data.
Definition: packet.c:353
show_banner
void show_banner(int argc, char **argv, const OptionDef *options)
Print the program banner to stderr.
Definition: opt_common.c:240
AVHDRPlusColorTransformParams::window_lower_right_corner_y
AVRational window_lower_right_corner_y
The relative y coordinate of the bottom right pixel of the processing window.
Definition: hdr_dynamic_metadata.h:94
AVDOVIRpuDataHeader::coef_log2_denom
uint8_t coef_log2_denom
Definition: dovi_meta.h:94
AVDOVIRpuDataHeader::bl_video_full_range_flag
uint8_t bl_video_full_range_flag
Definition: dovi_meta.h:96
AVHDRVividColorToneMappingParams::base_param_k1
int base_param_k1
indicates k1_0 in the base parameter, base_param_k1 <= 1: k1_0 = base_param_k1 base_param_k1 > 1: res...
Definition: hdr_dynamic_vivid_metadata.h:130
AVPacket::dts
int64_t dts
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed.
Definition: packet.h:594
AVSphericalMapping::padding
uint32_t padding
Number of pixels to pad from the edge of each cube face.
Definition: spherical.h:200
AVIAMFParamDefinition::constant_subblock_duration
unsigned int constant_subblock_duration
The duration of every subblock in the case where all subblocks, with the optional exception of the la...
Definition: iamf.h:238
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41
AVIAMFAudioElement
Information on how to combine one or more audio streams, as defined in section 3.6 of IAMF.
Definition: iamf.h:359
AVTextFormatter::flags
int flags
a combination or AV_TEXTFORMAT__FLAG_*
Definition: avtextformat.h:109
AVDOVIReshapingCurve::poly_coef
int64_t poly_coef[AV_DOVI_MAX_PIECES][3]
Definition: dovi_meta.h:123
SECTION_ID_FRAME_SIDE_DATA_LIST
@ SECTION_ID_FRAME_SIDE_DATA_LIST
Definition: ffprobe.c:175
print_iamf_mix_presentation_params
static void print_iamf_mix_presentation_params(AVTextFormatContext *tfc, const AVStreamGroup *stg, const AVIAMFMixPresentation *mix_presentation)
Definition: ffprobe.c:2344
SECTION_ID_PACKET_TAGS
@ SECTION_ID_PACKET_TAGS
Definition: ffprobe.c:188
AVStreamGroupTileGrid::nb_tiles
unsigned int nb_tiles
Amount of tiles in the grid.
Definition: avformat.h:962
offset
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 offset
Definition: writing_filters.txt:86
line
Definition: graph2dot.c:48
SECTION_ID_STREAM_GROUP_STREAM_TAGS
@ SECTION_ID_STREAM_GROUP_STREAM_TAGS
Definition: ffprobe.c:207
ff_mutex_lock
static int ff_mutex_lock(AVMutex *mutex)
Definition: thread.h:188
AVIAMFMixGain
Mix Gain Parameter Data as defined in section 3.8.1 of IAMF.
Definition: iamf.h:77
AVPacket::flags
int flags
A combination of AV_PKT_FLAG values.
Definition: packet.h:601
av_packet_alloc
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
Definition: packet.c:63
av_dict_free
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
Definition: dict.c:233
do_show_format
static int do_show_format
Definition: ffprobe.c:104
AVCPBProperties::avg_bitrate
int64_t avg_bitrate
Average bitrate of the stream, in bits per second.
Definition: defs.h:297
log_mutex
static AVMutex log_mutex
Definition: ffprobe.c:359
AVFilmGrainParams::h274
AVFilmGrainH274Params h274
Definition: film_grain_params.h:248
ReadInterval
Definition: ffprobe.c:150
va_copy
#define va_copy(dst, src)
Definition: va_copy.h:31
AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT
@ AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT
Definition: avformat.h:1107
OPT_TYPE_FUNC
@ OPT_TYPE_FUNC
Definition: cmdutils.h:81
AV_STEREO3D_FLAG_INVERT
#define AV_STEREO3D_FLAG_INVERT
Inverted views, Right/Bottom represents the left view.
Definition: stereo3d.h:194
AVStreamGroup::streams
AVStream ** streams
A list of streams in the group.
Definition: avformat.h:1185
AVFilmGrainAOMParams::ar_coeffs_y
int8_t ar_coeffs_y[24]
Luma auto-regression coefficients.
Definition: film_grain_params.h:80
print_color_range
static void print_color_range(AVTextFormatContext *tfc, enum AVColorRange color_range)
Definition: ffprobe.c:1240
OPT_TYPE_BOOL
@ OPT_TYPE_BOOL
Definition: cmdutils.h:82
AVStreamGroup::iamf_mix_presentation
struct AVIAMFMixPresentation * iamf_mix_presentation
Definition: avformat.h:1151
AVDownmixInfo::lfe_mix_level
double lfe_mix_level
Absolute scale factor representing the level at which the LFE data is mixed into L/R channels during ...
Definition: downmix_info.h:92
do_show_stream_disposition
static int do_show_stream_disposition
Definition: ffprobe.c:111
do_show_stream_groups
static int do_show_stream_groups
Definition: ffprobe.c:108
AV_LOG_INFO
#define AV_LOG_INFO
Standard information.
Definition: log.h:221
AV_FRAME_DATA_VIEW_ID
@ AV_FRAME_DATA_VIEW_ID
This side data must be associated with a video frame.
Definition: frame.h:245
AVChromaLocation
AVChromaLocation
Location of chroma samples.
Definition: pixfmt.h:796
AVHDRPlusColorTransformParams::window_upper_left_corner_x
AVRational window_upper_left_corner_x
The relative x coordinate of the top left pixel of the processing window.
Definition: hdr_dynamic_metadata.h:67
do_count_packets
static int do_count_packets
Definition: ffprobe.c:99
iformat
static const AVInputFormat * iformat
Definition: ffprobe.c:345
SHOW_OPTIONAL_FIELDS_AUTO
#define SHOW_OPTIONAL_FIELDS_AUTO
Definition: ffprobe.c:140
layout
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 layout
Definition: filter_design.txt:18
AV_PKT_DATA_STRINGS_METADATA
@ AV_PKT_DATA_STRINGS_METADATA
A list of zero terminated key/value strings.
Definition: packet.h:169
ReadInterval::has_start
int has_start
Definition: ffprobe.c:153
av_get_picture_type_char
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type.
Definition: utils.c:40
EntrySelection::entries_to_show
AVDictionary * entries_to_show
Definition: ffprobe.c:335
AVCPBProperties::vbv_delay
uint64_t vbv_delay
The delay between the time the packet this structure is associated with is received and the time when...
Definition: defs.h:312
AVStreamGroupTileGrid::nb_coded_side_data
int nb_coded_side_data
Amount of entries in coded_side_data.
Definition: avformat.h:1062
SECTION_ID_PROGRAM_STREAM_TAGS
@ SECTION_ID_PROGRAM_STREAM_TAGS
Definition: ffprobe.c:199
avcodec_send_packet
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
Supply raw packet data as input to a decoder.
Definition: decode.c:721
av_opt_next
const AVOption * av_opt_next(const void *obj, const AVOption *last)
Iterate over all AVOptions belonging to obj.
Definition: opt.c:48
AV_PKT_DATA_CPB_PROPERTIES
@ AV_PKT_DATA_CPB_PROPERTIES
This side data corresponds to the AVCPBProperties struct.
Definition: packet.h:142
bprint.h
AV_FRAME_DATA_CONTENT_LIGHT_LEVEL
@ AV_FRAME_DATA_CONTENT_LIGHT_LEVEL
Content light level (based on CTA-861.3).
Definition: frame.h:137
AVHDRPlusColorTransformParams::semimajor_axis_internal_ellipse
uint16_t semimajor_axis_internal_ellipse
The semi-major axis value of the internal ellipse of the elliptical pixel selector in amount of pixel...
Definition: hdr_dynamic_metadata.h:125
print_ambient_viewing_environment
static void print_ambient_viewing_environment(AVTextFormatContext *tfc, const AVAmbientViewingEnvironment *env)
Definition: ffprobe.c:960
AVStreamGroupTileGrid::width
int width
Width of the final image for presentation.
Definition: avformat.h:1039
AVSphericalMapping::roll
int32_t roll
Rotation around the forward vector [-180, 180].
Definition: spherical.h:146
AVDownmixInfo::center_mix_level
double center_mix_level
Absolute scale factor representing the nominal level of the center channel during a regular downmix.
Definition: downmix_info.h:68
AVSubtitle::format
uint16_t format
Definition: avcodec.h:2101
AVClassCategory
AVClassCategory
Definition: log.h:28
AVFilmGrainParams::color_primaries
enum AVColorPrimaries color_primaries
Definition: film_grain_params.h:231
AV_STREAM_GROUP_PARAMS_NONE
@ AV_STREAM_GROUP_PARAMS_NONE
Definition: avformat.h:1106
AVPacket::pts
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
Definition: packet.h:588
av_timecode_make_smpte_tc_string2
char * av_timecode_make_smpte_tc_string2(char *buf, AVRational rate, uint32_t tcsmpte, int prevent_df, int skip_field)
Get the timecode string from the SMPTE timecode format.
Definition: timecode.c:131
AVIAMFParamDefinition::parameter_id
unsigned int parameter_id
Identifier for the parameter substream.
Definition: iamf.h:218
AVIAMFLayer::demixing_matrix
AVRational * demixing_matrix
Demixing matrix as defined in section 3.6.3 of IAMF.
Definition: iamf.h:336
print_film_grain_params
static void print_film_grain_params(AVTextFormatContext *tfc, const AVFilmGrainParams *fgp)
Definition: ffprobe.c:971
SECTION_ID_PROGRAM
@ SECTION_ID_PROGRAM
Definition: ffprobe.c:200
downmix_info.h
AVChapter::id
int64_t id
unique ID to identify the chapter
Definition: avformat.h:1244
setup_find_stream_info_opts
int setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *local_codec_opts, AVDictionary ***dst)
Setup AVCodecContext options for avformat_find_stream_info().
Definition: cmdutils.c:1491
av_packet_get_side_data
uint8_t * av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, size_t *size)
Get side information from packet.
Definition: packet.c:252
AVFormatContext::subtitle_codec
const struct AVCodec * subtitle_codec
Forced subtitle codec.
Definition: avformat.h:1827
show_usage
static void show_usage(void)
Definition: ffprobe.c:2785
AVFilmGrainH274Params
This structure describes how to handle film grain synthesis for codecs using the ITU-T H....
Definition: film_grain_params.h:132
SECTION_ID_STREAM_GROUP_STREAM
@ SECTION_ID_STREAM_GROUP_STREAM
Definition: ffprobe.c:222
AVHDRVividColorToneMappingParams::targeted_system_display_maximum_luminance
AVRational targeted_system_display_maximum_luminance
The nominal maximum display luminance of the targeted system display, in multiples of 1....
Definition: hdr_dynamic_vivid_metadata.h:83
AVCodecParameters::height
int height
The height of the video frame in pixels.
Definition: codec_par.h:150
AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS
#define AV_TEXTFORMAT_SECTION_FLAG_HAS_VARIABLE_FIELDS
the section may contain a variable number of fields with variable keys.
Definition: avtextformat.h:47
AVFilmGrainH274Params::num_intensity_intervals
uint16_t num_intensity_intervals[3]
Specifies the number of intensity intervals for which a specific set of model values has been estimat...
Definition: film_grain_params.h:161
do_bitexact
static int do_bitexact
Definition: ffprobe.c:97
avtextwriter_create_file
int avtextwriter_create_file(AVTextWriterContext **pwctx, const char *output_filename)
Definition: tw_avio.c:79
av_malloc_array
#define av_malloc_array(a, b)
Definition: tableprint_vlc.h:32
read_interval_packets
static int read_interval_packets(AVTextFormatContext *tfc, InputFile *ifile, const ReadInterval *interval, int64_t *cur_ts)
Definition: ffprobe.c:1693
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition: pixfmt.h:700
display.h
SECTION_ID_PACKETS
@ SECTION_ID_PACKETS
Definition: ffprobe.c:189
AV_FIELD_BB
@ AV_FIELD_BB
Bottom coded first, bottom displayed first.
Definition: defs.h:215
AVIAMFMixPresentation
Information on how to render and mix one or more AVIAMFAudioElement to generate the final audio outpu...
Definition: iamf.h:616
AVFilmGrainParams::subsampling_y
int subsampling_y
Definition: film_grain_params.h:225
AVCPBProperties::max_bitrate
int64_t max_bitrate
Maximum bitrate of the stream, in bits per second.
Definition: defs.h:287
AVDOVIDataMapping::num_y_partitions
uint32_t num_y_partitions
Definition: dovi_meta.h:161
LogBuffer::category
AVClassCategory category
Definition: ffprobe.c:365
parse_options
int parse_options(void *optctx, int argc, char **argv, const OptionDef *options, int(*parse_arg_function)(void *, const char *))
Definition: cmdutils.c:420
opt_show_entries
static int opt_show_entries(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:2948
av_always_inline
#define av_always_inline
Definition: attributes.h:76
AVDownmixInfo::preferred_downmix_type
enum AVDownmixType preferred_downmix_type
Type of downmix preferred by the mastering engineer.
Definition: downmix_info.h:62
SECTION_ID_FRAME_SIDE_DATA
@ SECTION_ID_FRAME_SIDE_DATA
Definition: ffprobe.c:176
FFMIN
#define FFMIN(a, b)
Definition: macros.h:49
print_pixel_format
static void print_pixel_format(AVTextFormatContext *tfc, enum AVPixelFormat pix_fmt)
Definition: ffprobe.c:1215
SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST
@ SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST
Definition: ffprobe.c:179
opt_sections
static int opt_sections(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3223
avtextformatter_xml
const AVTextFormatter avtextformatter_xml
Definition: tf_xml.c:202
OPT_FUNC_ARG
#define OPT_FUNC_ARG
Definition: cmdutils.h:205
AVHDRPlusColorTransformParams::overlap_process_option
enum AVHDRPlusOverlapProcessOption overlap_process_option
Overlap process option indicates one of the two methods of combining rendered pixels in the processin...
Definition: hdr_dynamic_metadata.h:149
AVHDRVividColorTransformParams
Color transform parameters at a processing window in a dynamic metadata for CUVA 005....
Definition: hdr_dynamic_vivid_metadata.h:179
AVFilmGrainAOMParams::scaling_shift
int scaling_shift
Specifies the shift applied to the chroma components.
Definition: film_grain_params.h:69
AV_PKT_DATA_MPEGTS_STREAM_ID
@ AV_PKT_DATA_MPEGTS_STREAM_ID
MPEGTS stream ID as uint8_t, this is required to pass the stream ID information from the demuxer to t...
Definition: packet.h:212
AVProgram
New fields can be added to the end with minor version bumps.
Definition: avformat.h:1208
print_dynamic_hdr10_plus
static void print_dynamic_hdr10_plus(AVTextFormatContext *tfc, const AVDynamicHDRPlus *metadata)
Definition: ffprobe.c:735
AV_DOWNMIX_TYPE_LORO
@ AV_DOWNMIX_TYPE_LORO
Lo/Ro 2-channel downmix (Stereo).
Definition: downmix_info.h:46
AVCodecParameters::color_range
enum AVColorRange color_range
Additional colorspace characteristics.
Definition: codec_par.h:189
AVTextFormatContext::string_validation_utf8_flags
unsigned int string_validation_utf8_flags
Definition: avtextformat.h:161
AVMasteringDisplayMetadata
Mastering display metadata capable of representing the color volume of the display used to master the...
Definition: mastering_display_metadata.h:38
profile
int profile
Definition: mxfenc.c:2299
AVCOL_SPC_UNSPECIFIED
@ AVCOL_SPC_UNSPECIFIED
Definition: pixfmt.h:703
do_show_stream_group_disposition
static int do_show_stream_group_disposition
Definition: ffprobe.c:112
AVDOVINLQParams
Coefficients of the non-linear inverse quantization.
Definition: dovi_meta.h:139
AVHDRVividColorToneMappingParams::base_param_Delta_enable_mode
int base_param_Delta_enable_mode
This flag indicates that delta mode of base parameter(for value of 1)
Definition: hdr_dynamic_vivid_metadata.h:150
AVCodecParameters::coded_side_data
AVPacketSideData * coded_side_data
Additional data associated with the entire stream.
Definition: codec_par.h:83
SECTION_ID_PACKET_SIDE_DATA
@ SECTION_ID_PACKET_SIDE_DATA
Definition: ffprobe.c:192
ambient_viewing_environment.h
use_value_sexagesimal_format
static int use_value_sexagesimal_format
Definition: ffprobe.c:132
SECTION_ID_LIBRARY_VERSIONS
@ SECTION_ID_LIBRARY_VERSIONS
Definition: ffprobe.c:186
AV_FRAME_FLAG_INTERLACED
#define AV_FRAME_FLAG_INTERLACED
A flag to mark frames whose content is interlaced.
Definition: frame.h:682
av_calloc
void * av_calloc(size_t nmemb, size_t size)
Definition: mem.c:264
AVFilmGrainH274Params::intensity_interval_lower_bound
uint8_t intensity_interval_lower_bound[3][256]
Specifies the lower ounds of each intensity interval for whichthe set of model values applies for the...
Definition: film_grain_params.h:173
SECTION_ID_FRAME_SIDE_DATA_TIMECODE
@ SECTION_ID_FRAME_SIDE_DATA_TIMECODE
Definition: ffprobe.c:178
AVIAMFParamDefinition::nb_subblocks
unsigned int nb_subblocks
Number of subblocks in the array.
Definition: iamf.h:208
LogBuffer::parent_name
char * parent_name
Definition: ffprobe.c:366
AV_IAMF_AUDIO_ELEMENT_TYPE_SCENE
@ AV_IAMF_AUDIO_ELEMENT_TYPE_SCENE
Definition: iamf.h:349
AVCodecParameters::field_order
enum AVFieldOrder field_order
The order of the fields in interlaced video.
Definition: codec_par.h:182
SECTION_ID_PROGRAM_VERSION
@ SECTION_ID_PROGRAM_VERSION
Definition: ffprobe.c:204
AVIAMFLayer::nb_demixing_matrix
unsigned int nb_demixing_matrix
The length of the Demixing matrix array.
Definition: iamf.h:343
AVDynamicHDRPlus
This struct represents dynamic metadata for color volume transform - application 4 of SMPTE 2094-40:2...
Definition: hdr_dynamic_metadata.h:243
AVDOVIDataMapping::curves
AVDOVIReshapingCurve curves[3]
Definition: dovi_meta.h:156
AVStreamGroupTileGrid::horizontal
int horizontal
Offset in pixels from the left edge of the canvas where the tile should be placed.
Definition: avformat.h:998
AV_TEXTFORMAT_FLAG_SUPPORTS_MIXED_ARRAY_CONTENT
#define AV_TEXTFORMAT_FLAG_SUPPORTS_MIXED_ARRAY_CONTENT
Definition: avtextformat.h:70
avcodec.h
parse_loglevel
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Find the '-loglevel' option in the command line args and apply it.
Definition: cmdutils.c:556
AVDOVINLQParams::linear_deadzone_slope
uint64_t linear_deadzone_slope
Definition: dovi_meta.h:143
SECTION_ID_PROGRAMS
@ SECTION_ID_PROGRAMS
Definition: ffprobe.c:205
version.h
AVIAMFSubmix::nb_layouts
unsigned int nb_layouts
Number of layouts in the submix.
Definition: iamf.h:590
AVFilmGrainParams::height
int height
Definition: film_grain_params.h:220
AVDOVIReshapingCurve
Definition: dovi_meta.h:117
version.h
AVStream::disposition
int disposition
Stream disposition - a combination of AV_DISPOSITION_* flags.
Definition: avformat.h:816
AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL
@ AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL
Data found in BlockAdditional element of matroska container.
Definition: packet.h:188
av_buffer_allocz
AVBufferRef * av_buffer_allocz(size_t size)
Same as av_buffer_alloc(), except the returned buffer will be initialized to zero.
Definition: buffer.c:93
show_log
static int show_log(AVTextFormatContext *tfc, int section_ids, int section_id, int log_level)
Definition: ffprobe.c:1316
tag
uint32_t tag
Definition: movenc.c:2049
AVStream::id
int id
Format-specific stream ID.
Definition: avformat.h:759
ret
ret
Definition: filter_design.txt:187
AVStream
Stream structure.
Definition: avformat.h:747
AV_FRAME_DATA_GOP_TIMECODE
@ AV_FRAME_DATA_GOP_TIMECODE
The GOP timecode in 25 bit timecode format.
Definition: frame.h:125
log_buffer
static LogBuffer * log_buffer
Definition: ffprobe.c:370
avcodec_flush_buffers
void avcodec_flush_buffers(AVCodecContext *avctx)
Reset the internal codec state / flush internal buffers.
Definition: avcodec.c:389
AVALPHA_MODE_UNSPECIFIED
@ AVALPHA_MODE_UNSPECIFIED
Unknown alpha handling, or no alpha channel.
Definition: pixfmt.h:811
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:265
AVCPBProperties::buffer_size
int64_t buffer_size
The size of the buffer to which the ratecontrol is applied, in bits.
Definition: defs.h:303
AVSphericalMapping::pitch
int32_t pitch
Rotation around the right vector [-90, 90].
Definition: spherical.h:145
AVStreamGroup::metadata
AVDictionary * metadata
Metadata that applies to the whole group.
Definition: avformat.h:1165
AVDOVINLQParams::vdr_in_max
uint64_t vdr_in_max
Definition: dovi_meta.h:141
log_callback_help
void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
Trivial log callback.
Definition: cmdutils.c:70
AVStereo3D::type
enum AVStereo3DType type
How views are packed within the video.
Definition: stereo3d.h:207
AV_TEXTFORMAT_SECTION_FLAG_IS_WRAPPER
#define AV_TEXTFORMAT_SECTION_FLAG_IS_WRAPPER
the section only contains other sections, but has no data at its own level
Definition: avtextformat.h:45
InputFile::streams
InputStream ** streams
Definition: ffmpeg.h:548
parse_read_interval
static int parse_read_interval(const char *interval_spec, ReadInterval *interval)
Parse interval specification, according to the format: INTERVAL ::= [START|+START_OFFSET][%[END|+END_...
Definition: ffprobe.c:3061
AVHDRVivid3SplineParams
HDR Vivid three spline params.
Definition: hdr_dynamic_vivid_metadata.h:30
avformat.h
dovi_meta.h
av_bprintf
void av_bprintf(AVBPrint *buf, const char *fmt,...)
Definition: bprint.c:122
AVHDRVividColorTransformParams::minimum_maxrgb
AVRational minimum_maxrgb
Indicates the minimum brightness of the displayed content.
Definition: hdr_dynamic_vivid_metadata.h:185
dict.h
AVPacket::side_data
AVPacketSideData * side_data
Additional packet data that can be provided by the container.
Definition: packet.h:606
AV_LOG_SKIP_REPEATED
#define AV_LOG_SKIP_REPEATED
Skip repeated messages, this requires the user app to use av_log() instead of (f)printf as the 2 woul...
Definition: log.h:400
id
enum AVCodecID id
Definition: dts2pts.c:550
CMDUTILS_COMMON_OPTIONS
#define CMDUTILS_COMMON_OPTIONS
Definition: opt_common.h:199
AV_DICT_MATCH_CASE
#define AV_DICT_MATCH_CASE
Only get an entry with exact-case key match.
Definition: dict.h:74
AV_RL32
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
Definition: bytestream.h:92
log_buffer_size
static int log_buffer_size
Definition: ffprobe.c:371
U
#define U(x)
Definition: vpx_arith.h:37
AVCodecParameters::chroma_location
enum AVChromaLocation chroma_location
Definition: codec_par.h:193
AVDOVIReshapingCurve::num_pivots
uint8_t num_pivots
Definition: dovi_meta.h:118
AV_PKT_DATA_WEBVTT_IDENTIFIER
@ AV_PKT_DATA_WEBVTT_IDENTIFIER
The optional first identifier line of a WebVTT cue.
Definition: packet.h:193
avformat_network_deinit
int avformat_network_deinit(void)
Undo the initialization done by avformat_network_init.
Definition: utils.c:573
AVDOVIRpuDataHeader::vdr_rpu_level
uint8_t vdr_rpu_level
Definition: dovi_meta.h:91
SECTION_ID_FRAME
@ SECTION_ID_FRAME
Definition: ffprobe.c:172
av_dovi_get_color
static av_always_inline AVDOVIColorMetadata * av_dovi_get_color(const AVDOVIMetadata *data)
Definition: dovi_meta.h:375
AVStreamGroup
Definition: avformat.h:1117
AVHDRVividColorToneMappingParams::base_param_m_n
AVRational base_param_m_n
base_param_m_n in the base parameter, in multiples of 1.0/10.
Definition: hdr_dynamic_vivid_metadata.h:123
av_get_media_type_string
const char * av_get_media_type_string(enum AVMediaType media_type)
Return a string describing the media_type enum, NULL if media_type is unknown.
Definition: utils.c:28
AV_FRAME_DATA_DYNAMIC_HDR_PLUS
@ AV_FRAME_DATA_DYNAMIC_HDR_PLUS
HDR dynamic metadata associated with a video frame.
Definition: frame.h:159
AVHDRVividColorToneMappingParams::base_param_m_a
AVRational base_param_m_a
base_param_m_a in the base parameter, in multiples of 1.0/1023.
Definition: hdr_dynamic_vivid_metadata.h:109
AVCodecContext
main external API structure.
Definition: avcodec.h:443
AVStream::index
int index
stream index in AVFormatContext
Definition: avformat.h:753
show_tags
static int show_tags(AVTextFormatContext *tfc, AVDictionary *tags, int section_id)
Definition: ffprobe.c:494
av_timecode_make_mpeg_tc_string
char * av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit)
Get the timecode string from the 25-bit timecode format (MPEG GOP format).
Definition: timecode.c:147
flush_buffers
static void flush_buffers(InputFile *ifile)
Definition: ffprobe.c:1816
show_streams
static int show_streams(AVTextFormatContext *tfc, InputFile *ifile)
Definition: ffprobe.c:2092
AVFilmGrainAOMParams::ar_coeff_lag
int ar_coeff_lag
Specifies the auto-regression lag.
Definition: film_grain_params.h:74
AVDOVIDataMapping::mapping_chroma_format_idc
uint8_t mapping_chroma_format_idc
Definition: dovi_meta.h:155
AVStreamGroup::nb_streams
unsigned int nb_streams
Number of elements in AVStreamGroup.streams.
Definition: avformat.h:1172
get_packet_side_data_type
static const char * get_packet_side_data_type(const void *data)
Definition: ffprobe.c:236
AV_FILM_GRAIN_PARAMS_H274
@ AV_FILM_GRAIN_PARAMS_H274
The union is valid when interpreted as AVFilmGrainH274Params (codec.h274)
Definition: film_grain_params.h:35
channel_layout.h
AVIAMFSubmix::default_mix_gain
AVRational default_mix_gain
Default mix gain value to apply when there are no AVIAMFParamDefinition with output_mix_config's para...
Definition: iamf.h:606
nb_streams_packets
static uint64_t * nb_streams_packets
Definition: ffprobe.c:353
AVTextFormatSection::children_ids
const int children_ids[SECTION_MAX_NB_CHILDREN+1]
list of children section IDS, terminated by -1
Definition: avtextformat.h:57
do_show_program_version
static int do_show_program_version
Definition: ffprobe.c:114
AVFilmGrainAOMParams::y_points
uint8_t y_points[14][2]
Definition: film_grain_params.h:50
AVFilmGrainAOMParams::uv_offset
int uv_offset[2]
Offset used for component scaling function.
Definition: film_grain_params.h:112
opt_common.h
DEFINE_OPT_SHOW_SECTION
#define DEFINE_OPT_SHOW_SECTION(section, target_section_id)
Definition: ffprobe.c:3273
AVInputFormat::flags
int flags
Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_EXPERIMENTAL, AVFMT_SHOW_IDS,...
Definition: avformat.h:566
AVTextFormatOptions
Definition: avtextformat.h:115
AVRational::den
int den
Denominator.
Definition: rational.h:60
AV_PIX_FMT_NONE
@ AV_PIX_FMT_NONE
Definition: pixfmt.h:72
probe_file
static int probe_file(AVTextFormatContext *tfc, const char *filename, const char *print_filename)
Definition: ffprobe.c:2690
AVDOVIDecoderConfigurationRecord::bl_present_flag
uint8_t bl_present_flag
Definition: dovi_meta.h:62
AV_DOWNMIX_TYPE_DPLII
@ AV_DOWNMIX_TYPE_DPLII
Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible.
Definition: downmix_info.h:48
AVDOVIRpuDataHeader::bl_bit_depth
uint8_t bl_bit_depth
Definition: dovi_meta.h:97
av_get_token
char * av_get_token(const char **buf, const char *term)
Unescape the given string until a non escaped terminating char, and return the token corresponding to...
Definition: avstring.c:143
AVHDRVivid3SplineParams::th_enable
AVRational th_enable
3Spline_TH_enable of three Spline.
Definition: hdr_dynamic_vivid_metadata.h:49
av_bprint_clear
void av_bprint_clear(AVBPrint *buf)
Reset the string to "" but keep internal allocated data.
Definition: bprint.c:227
version.h
AVHDRPlusColorTransformParams::num_distribution_maxrgb_percentiles
uint8_t num_distribution_maxrgb_percentiles
The number of linearized maxRGB values at given percentiles in the processing window in the scene.
Definition: hdr_dynamic_metadata.h:170
AVHDRPlusColorTransformParams::maxscl
AVRational maxscl[3]
The maximum of the color components of linearized RGB values in the processing window in the scene.
Definition: hdr_dynamic_metadata.h:157
SECTION_ID_PIXEL_FORMATS
@ SECTION_ID_PIXEL_FORMATS
Definition: ffprobe.c:197
video
A Quick Description Of Rate Distortion Theory We want to encode a video
Definition: rate_distortion.txt:3
sections
static const AVTextFormatSection sections[]
Definition: ffprobe.c:259
SECTION_ID_STREAM_GROUP_BLOCK
@ SECTION_ID_STREAM_GROUP_BLOCK
Definition: ffprobe.c:218
print_str_validate
#define print_str_validate(k, v)
Definition: ffprobe.c:453
AVFrameSideData::type
enum AVFrameSideDataType type
Definition: frame.h:315
AVDOVIColorMetadata
Dolby Vision RPU colorspace metadata parameters.
Definition: dovi_meta.h:171
output_format
static char * output_format
Definition: ffprobe.c:145
AVFilmGrainH274Params::log2_scale_factor
int log2_scale_factor
Specifies a scale factor used in the film grain characterization equations.
Definition: film_grain_params.h:150
AVFilmGrainAOMParams::uv_mult
int uv_mult[2]
Specifies the luma/chroma multipliers for the index to the component scaling function.
Definition: film_grain_params.h:105
hdr_dynamic_metadata.h
AV_PKT_DATA_AFD
@ AV_PKT_DATA_AFD
Active Format Description data consisting of a single byte as specified in ETSI TS 101 154 using AVAc...
Definition: packet.h:258
selected_entries
static EntrySelection selected_entries[FF_ARRAY_ELEMS(sections)]
Definition: ffprobe.c:338
AVPixFmtDescriptor::comp
AVComponentDescriptor comp[4]
Parameters that describe how pixels are packed.
Definition: pixdesc.h:105
AVStream::r_frame_rate
AVRational r_frame_rate
Real base framerate of the stream.
Definition: avformat.h:881
AV_PKT_DATA_SKIP_SAMPLES
@ AV_PKT_DATA_SKIP_SAMPLES
Recommends skipping the specified number of samples.
Definition: packet.h:153
AVDOVIDecoderConfigurationRecord::rpu_present_flag
uint8_t rpu_present_flag
Definition: dovi_meta.h:60
options
static const OptionDef * options
Definition: ffprobe.c:340
do_show_pixel_formats
static int do_show_pixel_formats
Definition: ffprobe.c:116
AVDOVIDecoderConfigurationRecord::el_present_flag
uint8_t el_present_flag
Definition: dovi_meta.h:61
AV_CODEC_ID_PROBE
@ AV_CODEC_ID_PROBE
codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
Definition: codec_id.h:620
AV_IAMF_PARAMETER_DEFINITION_MIX_GAIN
@ AV_IAMF_PARAMETER_DEFINITION_MIX_GAIN
Subblocks are of struct type AVIAMFMixGain.
Definition: iamf.h:173
Windows::Graphics::DirectX::Direct3D11::p
IDirect3DDxgiInterfaceAccess _COM_Outptr_ void ** p
Definition: vsrc_gfxcapture_winrt.hpp:53
av_find_input_format
const AVInputFormat * av_find_input_format(const char *short_name)
Find AVInputFormat based on the short name of the input format.
Definition: format.c:146
AVFormatContext::duration
int64_t duration
Duration of the stream, in AV_TIME_BASE fractional seconds.
Definition: avformat.h:1419
AVHDRVividColorToneMappingParams
Color tone mapping parameters at a processing window in a dynamic metadata for CUVA 005....
Definition: hdr_dynamic_vivid_metadata.h:77
AVPacket::stream_index
int stream_index
Definition: packet.h:597
AVFilmGrainH274Params::num_model_values
uint8_t num_model_values[3]
Specifies the number of model values present for each intensity interval in which the film grain has ...
Definition: film_grain_params.h:167
AVFilmGrainParams::color_range
enum AVColorRange color_range
Intended video signal characteristics.
Definition: film_grain_params.h:230
ffprobe_show_library_versions
static void ffprobe_show_library_versions(AVTextFormatContext *tfc)
Definition: ffprobe.c:2823
data_codec_name
static const char * data_codec_name
Definition: ffprobe.c:136
opt_print_filename
static int opt_print_filename(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3038
AVIAMFSubmix::nb_elements
unsigned int nb_elements
Number of elements in the submix.
Definition: iamf.h:575
get_stream_group_type
static const char * get_stream_group_type(const void *data)
Definition: ffprobe.c:253
AVFilmGrainAOMParams::overlap_flag
int overlap_flag
Signals whether to overlap film grain blocks.
Definition: film_grain_params.h:117
AVCodecContext::coded_width
int coded_width
Bitstream width / height, may be different from width/height e.g.
Definition: avcodec.h:619
AV_PKT_DATA_AUDIO_SERVICE_TYPE
@ AV_PKT_DATA_AUDIO_SERVICE_TYPE
This side data should be associated with an audio stream and corresponds to enum AVAudioServiceType.
Definition: packet.h:117
AV_OPT_FLAG_DECODING_PARAM
#define AV_OPT_FLAG_DECODING_PARAM
A generic parameter which can be set by the user for demuxing or decoding.
Definition: opt.h:356
AVDOVIDecoderConfigurationRecord::dv_version_minor
uint8_t dv_version_minor
Definition: dovi_meta.h:57
do_show_program_tags
static int do_show_program_tags
Definition: ffprobe.c:124
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:200
AVHDRPlusColorTransformParams::center_of_ellipse_y
uint16_t center_of_ellipse_y
The y coordinate of the center position of the concentric internal and external ellipses of the ellip...
Definition: hdr_dynamic_metadata.h:110
av_log_default_callback
void av_log_default_callback(void *ptr, int level, const char *fmt, va_list vl)
Default logging callback.
Definition: log.c:380
avutil.h
us
#define us(width, name, range_min, range_max, subs,...)
Definition: cbs_apv.c:70
AVIAMFAudioElement::demixing_info
AVIAMFParamDefinition * demixing_info
Demixing information used to reconstruct a scalable channel audio representation.
Definition: iamf.h:379
AVIAMFDemixingInfo::dmixp_mode
unsigned int dmixp_mode
Pre-defined combination of demixing parameters.
Definition: iamf.h:140
mem.h
AVIAMFSubmix::output_mix_config
AVIAMFParamDefinition * output_mix_config
Information required for post-processing the mixed audio signal to generate the audio signal for play...
Definition: iamf.h:598
AVStreamGroup::type
enum AVStreamGroupParamsType type
Group type.
Definition: avformat.h:1144
print_stream_group_params
static void print_stream_group_params(AVTextFormatContext *tfc, AVStreamGroup *stg)
Definition: ffprobe.c:2363
AVIAMFLayer::ambisonics_mode
enum AVIAMFAmbisonicsMode ambisonics_mode
Ambisonics mode as defined in section 3.6.3 of IAMF.
Definition: iamf.h:328
av_strdup
#define av_strdup(s)
Definition: ops_asmgen.c:47
mastering_display_metadata.h
av_dovi_get_mapping
static av_always_inline AVDOVIDataMapping * av_dovi_get_mapping(const AVDOVIMetadata *data)
Definition: dovi_meta.h:369
AV_DOVI_COMPRESSION_NONE
@ AV_DOVI_COMPRESSION_NONE
Definition: dovi_meta.h:68
AVCodecParameters::video_delay
int video_delay
Number of delayed frames.
Definition: codec_par.h:200
AVFrameSideData
Structure to hold side data for an AVFrame.
Definition: frame.h:314
AVCodecParameters::format
int format
Definition: codec_par.h:94
AVPixFmtDescriptor
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
Definition: pixdesc.h:69
print_downmix_info
static void print_downmix_info(AVTextFormatContext *tfc, const AVDownmixInfo *downmix_info)
Definition: ffprobe.c:512
SECTION_ID_STREAM_GROUP_TAGS
@ SECTION_ID_STREAM_GROUP_TAGS
Definition: ffprobe.c:224
AVIAMFMixPresentation::annotations
AVDictionary * annotations
A dictionary of strings describing the mix in different languages.
Definition: iamf.h:644
SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST
@ SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST
Definition: ffprobe.c:177
AVFormatContext::nb_stream_groups
unsigned int nb_stream_groups
Number of elements in AVFormatContext.stream_groups.
Definition: avformat.h:1359
AVStreamGroupTileGrid::height
int height
Height of the final image for presentation.
Definition: avformat.h:1049
AVStereo3D::view
enum AVStereo3DView view
Determines which views are packed.
Definition: stereo3d.h:217
av_free
#define av_free(p)
Definition: tableprint_vlc.h:34
AVDictionaryEntry
Definition: dict.h:90
AVIAMFLayer::output_gain
AVRational output_gain
Output gain as defined in section 3.6.2 of IAMF.
Definition: iamf.h:316
AV_IAMF_AMBISONICS_MODE_PROJECTION
@ AV_IAMF_AMBISONICS_MODE_PROJECTION
Definition: iamf.h:274
AVCodecParameters::codec_id
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
Definition: codec_par.h:57
AV_OPT_FLAG_EXPORT
#define AV_OPT_FLAG_EXPORT
The option is intended for exporting values to the caller.
Definition: opt.h:363
OPT_TYPE_STRING
@ OPT_TYPE_STRING
Definition: cmdutils.h:83
AVCodecContext::priv_data
void * priv_data
Definition: avcodec.h:470
AVPacket
This structure stores compressed data.
Definition: packet.h:572
AVDOVIReshapingCurve::pivots
uint16_t pivots[AV_DOVI_MAX_PIECES+1]
Definition: dovi_meta.h:119
AVStreamGroupTileGrid::offsets
struct AVStreamGroupTileGrid::@447 * offsets
An nb_tiles sized array of offsets in pixels from the topleft edge of the canvas, indicating where ea...
av_freep
#define av_freep(p)
Definition: tableprint_vlc.h:35
av_dict_set
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
Definition: dict.c:86
av_dict_copy
int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags)
Copy entries from one AVDictionary struct into another.
Definition: dict.c:247
cmdutils.h
AVPacket::pos
int64_t pos
byte position in stream, -1 if unknown
Definition: packet.h:615
av_frame_side_data_name
const char * av_frame_side_data_name(enum AVFrameSideDataType type)
Definition: side_data.c:74
SHOW_LIB_VERSION
#define SHOW_LIB_VERSION(libname, LIBNAME)
Definition: ffprobe.c:2808
IN_PROGRAM
#define IN_PROGRAM
Definition: ffprobe.c:1864
data_dump_format
static char * data_dump_format
Definition: ffprobe.c:148
AVIAMFSubmixElement::element_mix_config
AVIAMFParamDefinition * element_mix_config
Information required required for applying any processing to the referenced and rendered Audio Elemen...
Definition: iamf.h:464
AVIAMFParamDefinition::parameter_rate
unsigned int parameter_rate
Sample rate for the parameter substream.
Definition: iamf.h:222
AV_FRAME_DATA_EXIF
@ AV_FRAME_DATA_EXIF
Exchangeable image file format metadata.
Definition: frame.h:263
read_packets
static int read_packets(AVTextFormatContext *tfc, InputFile *ifile)
Definition: ffprobe.c:1828
int32_t
int32_t
Definition: audioconvert.c:56
AVIAMFSubmixElement
Submix element as defined in section 3.7 of IAMF.
Definition: iamf.h:449
AVDOVINLQParams::nlq_offset
uint16_t nlq_offset
Definition: dovi_meta.h:140
timestamp.h
AV_IAMF_AUDIO_ELEMENT_TYPE_CHANNEL
@ AV_IAMF_AUDIO_ELEMENT_TYPE_CHANNEL
Definition: iamf.h:348
AVFrameSideData::metadata
AVDictionary * metadata
Definition: frame.h:318
AVCodecParameters::bit_rate
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
Definition: codec_par.h:99
av_opt_get
int av_opt_get(void *obj, const char *name, int search_flags, uint8_t **out_val)
Definition: opt.c:1205
AVDOVIDataMapping::vdr_rpu_id
uint8_t vdr_rpu_id
Definition: dovi_meta.h:153
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
AVFormatContext::start_time
int64_t start_time
Position of the first frame of the component, in AV_TIME_BASE fractional seconds.
Definition: avformat.h:1409
SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST
@ SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST
Definition: ffprobe.c:181
AVHDRVividColorToneMappingParams::base_param_k3
int base_param_k3
indicates k3_0 in the base parameter, base_param_k3 == 1: k3_0 = base_param_k3 base_param_k3 == 2: k3...
Definition: hdr_dynamic_vivid_metadata.h:145
SECTION_ID_PROGRAM_STREAMS
@ SECTION_ID_PROGRAM_STREAMS
Definition: ffprobe.c:201
av_stereo3d_type_name
const char * av_stereo3d_type_name(unsigned int type)
Provide a human-readable name of a given stereo3d type.
Definition: stereo3d.c:92
do_show_data
static int do_show_data
Definition: ffprobe.c:113
AVDOVIRpuDataHeader::disable_residual_flag
uint8_t disable_residual_flag
Definition: dovi_meta.h:102
AVClass::parent_log_context_offset
int parent_log_context_offset
Offset in the structure where a pointer to the parent context for logging is stored.
Definition: log.h:124
AVERROR_EXIT
#define AVERROR_EXIT
Immediate exit was requested; the called function should not be restarted.
Definition: error.h:58
SECTION_ID_STREAM_GROUP_DISPOSITION
@ SECTION_ID_STREAM_GROUP_DISPOSITION
Definition: ffprobe.c:223
avtext_print_data
void avtext_print_data(AVTextFormatContext *tctx, const char *key, const uint8_t *data, int size)
Definition: avtextformat.c:568
av_bprint_chars
void av_bprint_chars(AVBPrint *buf, char c, unsigned n)
Append char c n times to a print buffer.
Definition: bprint.c:130
LogBuffer::parent_category
AVClassCategory parent_category
Definition: ffprobe.c:367
print_dovi_metadata
static void print_dovi_metadata(AVTextFormatContext *tfc, const AVDOVIMetadata *dovi)
Definition: ffprobe.c:573
SECTION_ID_PROGRAM_STREAM_DISPOSITION
@ SECTION_ID_PROGRAM_STREAM_DISPOSITION
Definition: ffprobe.c:198
avcodec_descriptor_get
const AVCodecDescriptor * avcodec_descriptor_get(enum AVCodecID id)
Definition: codec_desc.c:3896
AVHDRVivid3SplineParams::th_delta2
AVRational th_delta2
3Spline_TH_Delta2 of three Spline.
Definition: hdr_dynamic_vivid_metadata.h:63
AVIAMFAudioElement::recon_gain_info
AVIAMFParamDefinition * recon_gain_info
Recon gain information used to reconstruct a scalable channel audio representation.
Definition: iamf.h:386
AV_DOVI_COMPRESSION_RESERVED
@ AV_DOVI_COMPRESSION_RESERVED
Definition: dovi_meta.h:70
AVStereo3D
Stereo 3D type: this structure describes how two videos are packed within a single video surface,...
Definition: stereo3d.h:203
AVDictionaryEntry::value
char * value
Definition: dict.h:92
AVStream::start_time
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base.
Definition: avformat.h:796
SECTION_ID_STREAM_GROUP_SUBPIECES
@ SECTION_ID_STREAM_GROUP_SUBPIECES
Definition: ffprobe.c:215
show_data_hash
static char * show_data_hash
Definition: ffprobe.c:147
pkt
static AVPacket * pkt
Definition: demux_decode.c:55
SECTION_ID_STREAM_GROUP_STREAM_DISPOSITION
@ SECTION_ID_STREAM_GROUP_STREAM_DISPOSITION
Definition: ffprobe.c:206
avstring.h
AVHDRVivid3SplineParams::th_enable_mb
AVRational th_enable_mb
three_Spline_TH_enable_MB is in the range of 0.0 to 1.0, inclusive and in multiples of 1....
Definition: hdr_dynamic_vivid_metadata.h:42
AVClass::item_name
const char *(* item_name)(void *ctx)
A pointer to a function which returns the name of a context instance ctx associated with the class.
Definition: log.h:87
width
#define width
Definition: dsp.h:89
AVAmbientViewingEnvironment::ambient_light_y
AVRational ambient_light_y
Normalized y chromaticity coordinate of the environmental ambient light in the nominal viewing enviro...
Definition: ambient_viewing_environment.h:54
do_show_streams
static int do_show_streams
Definition: ffprobe.c:110
AVFilmGrainAOMParams::chroma_scaling_from_luma
int chroma_scaling_from_luma
Signals whether to derive the chroma scaling function from the luma.
Definition: film_grain_params.h:56
AVStreamGroupTileGrid::idx
unsigned int idx
Index of the stream in the group this tile references.
Definition: avformat.h:993
opt_codec
static int opt_codec(void *optctx, const char *opt, const char *arg)
Definition: ffprobe.c:3236
InputFile::nb_streams
int nb_streams
Definition: ffmpeg.h:549
show_chapters
static int show_chapters(AVTextFormatContext *tfc, InputFile *ifile)
Definition: ffprobe.c:2436
AVColorRange
AVColorRange
Visual content value range.
Definition: pixfmt.h:742
AVChapter::time_base
AVRational time_base
time base in which the start/end timestamps are specified
Definition: avformat.h:1245
AV_FILM_GRAIN_PARAMS_AV1
@ AV_FILM_GRAIN_PARAMS_AV1
The union is valid when interpreted as AVFilmGrainAOMParams (codec.aom)
Definition: film_grain_params.h:30
do_analyze_frames
static int do_analyze_frames
Definition: ffprobe.c:96
avtext_context_close
int avtext_context_close(AVTextFormatContext **ptctx)
Definition: avtextformat.c:102
AVHDRVividColorToneMappingParams::three_spline
AVHDRVivid3SplineParams three_spline[2]
Definition: hdr_dynamic_vivid_metadata.h:171
AVHDRVividColorToneMappingParams::base_param_m_p
AVRational base_param_m_p
base_param_m_p in the base parameter, in multiples of 1.0/16383.
Definition: hdr_dynamic_vivid_metadata.h:95
AVFilmGrainParams::type
enum AVFilmGrainParamsType type
Specifies the codec for which this structure is valid.
Definition: film_grain_params.h:205
AV_DOWNMIX_TYPE_LTRT
@ AV_DOWNMIX_TYPE_LTRT
Lt/Rt 2-channel downmix, Dolby Surround compatible.
Definition: downmix_info.h:47
AVIAMFMixPresentation::submixes
AVIAMFSubmix ** submixes
Array of submixes.
Definition: iamf.h:625
print_error
static void print_error(const char *filename, int err)
Print an error message to stderr, indicating filename and a human readable description of the error c...
Definition: cmdutils.h:472
AVDOVIDataMapping::nlq
AVDOVINLQParams nlq[3]
Definition: dovi_meta.h:162
AV_FRAME_DATA_DOWNMIX_INFO
@ AV_FRAME_DATA_DOWNMIX_INFO
Metadata relevant to a downmix procedure.
Definition: frame.h:73
snprintf
#define snprintf
Definition: snprintf.h:34
stream_specifier
static char * stream_specifier
Definition: ffprobe.c:146
AV_FRAME_FLAG_LOSSLESS
#define AV_FRAME_FLAG_LOSSLESS
A decoder can use this flag to mark frames which were originally encoded losslessly.
Definition: frame.h:695
log_callback
static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
Definition: ffprobe.c:381
AVCodecParameters::initial_padding
int initial_padding
Number of padding audio samples at the start.
Definition: codec_par.h:239
AVFormatContext::priv_data
void * priv_data
Format private data.
Definition: avformat.h:1312
AVDOVIDataMapping
Dolby Vision RPU data mapping parameters.
Definition: dovi_meta.h:152
SECTION_ID_CHAPTERS
@ SECTION_ID_CHAPTERS
Definition: ffprobe.c:168
print_time
#define print_time(k, v, tb)
Definition: ffprobe.c:454
print_mastering_display_metadata
static void print_mastering_display_metadata(AVTextFormatContext *tfc, const AVMasteringDisplayMetadata *metadata)
Definition: ffprobe.c:545
print_pkt_side_data
static void print_pkt_side_data(AVTextFormatContext *tfc, int width, int height, const AVPacketSideData *sd, SectionID id_data)
Definition: ffprobe.c:1096
AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY
#define AV_TEXTFORMAT_SECTION_FLAG_IS_ARRAY
the section contains an array of elements of the same type
Definition: avtextformat.h:46
AVSphericalMapping
This structure describes how to handle spherical videos, outlining information about projection,...
Definition: spherical.h:100
av_color_transfer_name
const char * av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
Definition: pixdesc.c:3823
print_str_opt
#define print_str_opt(k, v)
Definition: ffprobe.c:452
av_dict_iterate
const AVDictionaryEntry * av_dict_iterate(const AVDictionary *m, const AVDictionaryEntry *prev)
Iterate over a dictionary.
Definition: dict.c:42
AVSubtitle::start_display_time
uint32_t start_display_time
Definition: avcodec.h:2102
AV_RB64
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_RB64
Definition: bytestream.h:95
AVPixFmtDescriptor::log2_chroma_h
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
Definition: pixdesc.h:89
SECTION_ID_PIXEL_FORMAT_COMPONENT
@ SECTION_ID_PIXEL_FORMAT_COMPONENT
Definition: ffprobe.c:195
AVSphericalMapping::yaw
int32_t yaw
Rotation around the up vector [-180, 180].
Definition: spherical.h:144
AVHDRVividColorToneMappingParams::base_param_m_b
AVRational base_param_m_b
base_param_m_b in the base parameter, in multiples of 1/1023.
Definition: hdr_dynamic_vivid_metadata.h:116
SECTION_ID_PACKET
@ SECTION_ID_PACKET
Definition: ffprobe.c:187
swscale.h
AV_DICT_DONT_STRDUP_KEY
#define AV_DICT_DONT_STRDUP_KEY
Take ownership of a key that's been allocated with av_malloc() or another memory allocation function.
Definition: dict.h:77
AVInputFormat::priv_class
const AVClass * priv_class
AVClass for the private context.
Definition: avformat.h:577
AVHDRVividColorToneMappingParams::base_param_m_m
AVRational base_param_m_m
base_param_m_m in the base parameter, in multiples of 1.0/10.
Definition: hdr_dynamic_vivid_metadata.h:102
AVHDRPlusColorTransformParams::bezier_curve_anchors
AVRational bezier_curve_anchors[15]
The intermediate anchor parameters of the tone mapping function in the processing window in the scene...
Definition: hdr_dynamic_metadata.h:216
av_x_if_null
static void * av_x_if_null(const void *p, const void *x)
Return x default pointer in case p is NULL.
Definition: avutil.h:311
AVDOVIDataMapping::num_x_partitions
uint32_t num_x_partitions
Definition: dovi_meta.h:160
AVFilmGrainAOMParams::ar_coeff_shift
int ar_coeff_shift
Specifies the range of the auto-regressive coefficients.
Definition: film_grain_params.h:93
AVPacket::side_data_elems
int side_data_elems
Definition: packet.h:607
av_display_rotation_get
double av_display_rotation_get(const int32_t matrix[9])
Extract the rotation component of the transformation matrix.
Definition: display.c:35
version.h
av_get_pix_fmt_name
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown.
Definition: pixdesc.c:3376
do_show_packets
static int do_show_packets
Definition: ffprobe.c:106
AV_IAMF_PARAMETER_DEFINITION_DEMIXING
@ AV_IAMF_PARAMETER_DEFINITION_DEMIXING
Subblocks are of struct type AVIAMFDemixingInfo.
Definition: iamf.h:177
SECTION_ID_STREAM_GROUP_SUBCOMPONENTS
@ SECTION_ID_STREAM_GROUP_SUBCOMPONENTS
Definition: ffprobe.c:211
av_fourcc2str
#define av_fourcc2str(fourcc)
Definition: avutil.h:347
print_list_fmt
#define print_list_fmt(k, f, n, m,...)
Definition: ffprobe.c:437
avdevice_register_all
FF_VISIBILITY_POP_HIDDEN av_cold void avdevice_register_all(void)
Initialize libavdevice and register all the input and output devices.
Definition: alldevices.c:67
AVDOVIDecoderConfigurationRecord
Definition: dovi_meta.h:55
avtext_print_section_header
void avtext_print_section_header(AVTextFormatContext *tctx, const void *data, int section_id)
Definition: avtextformat.c:243
AVFilmGrainAOMParams::ar_coeffs_uv
int8_t ar_coeffs_uv[2][25]
Chroma auto-regression coefficients.
Definition: film_grain_params.h:86
show_stream_group
static int show_stream_group(AVTextFormatContext *tfc, InputFile *ifile, AVStreamGroup *stg)
Definition: ffprobe.c:2375