27 #include "libavutil/ffversion.h"
58 # ifdef pthread_mutex_lock
59 # undef pthread_mutex_lock
61 # define pthread_mutex_lock(a) do{}while(0)
62 # ifdef pthread_mutex_unlock
63 # undef pthread_mutex_unlock
65 # define pthread_mutex_unlock(a) do{}while(0)
137 #define SECTION_MAX_NB_CHILDREN 10
143 #define SECTION_FLAG_IS_WRAPPER 1
144 #define SECTION_FLAG_IS_ARRAY 2
145 #define SECTION_FLAG_HAS_VARIABLE_FIELDS 4
257 static const struct {
263 { 1.0, 1.0,
"",
"" },
264 { 1.024e3, 1e3,
"Ki",
"K" },
265 { 1.048576e6, 1e6,
"Mi",
"M" },
266 { 1.073741824e9, 1e9,
"Gi",
"G" },
267 { 1.099511627776e12, 1e12,
"Ti",
"T" },
268 { 1.125899906842624e15, 1e15,
"Pi",
"P" },
301 static int print_prefix = 1;
302 void *new_log_buffer;
313 if (new_log_buffer) {
317 log_buffer = new_log_buffer;
318 memset(&log_buffer[
log_buffer_size], 0,
sizeof(log_buffer[log_buffer_size]));
326 for (i=strlen(msg) - 1; i>=0 && msg[i] ==
'\n'; i--) {
332 if (parent && *parent) {
335 (*parent)->get_category ? (*parent)->get_category(parent) :(*parent)->category;
357 union {
double d;
long long int i; }
val;
371 vald = vali = uv.
val.
i;
378 mins = (
int)secs / 60;
379 secs = secs - mins * 60;
382 snprintf(buf, buf_size,
"%d:%02d:%09.6f", hours, mins, secs);
384 const char *prefix_string =
"";
390 index = (
long long int) (
log2(vald)) / 10;
395 index = (
long long int) (log10(vald)) / 3;
404 snprintf(buf, buf_size,
"%f", vald);
406 snprintf(buf, buf_size,
"%lld", vali);
418 #define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS 1
419 #define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER 2
444 #define SECTION_MAX_NB_LEVELS 10
480 #define OFFSET(x) offsetof(WriterContext, x)
483 {
"string_validation",
"set string validation mode",
485 {
"sv",
"set string validation mode",
490 {
"string_validation_replacement",
"set string validation replacement string",
OFFSET(string_validation_replacement),
AV_OPT_TYPE_STRING, {.str=
""}},
491 {
"svr",
"set string validation replacement string",
OFFSET(string_validation_replacement),
AV_OPT_TYPE_STRING, {.str=
"\xEF\xBF\xBD"}},
518 if ((*wctx)->writer->uninit)
519 (*wctx)->writer->uninit(*wctx);
522 if ((*wctx)->writer->priv_class)
533 for (i = 0; i < ubuf_size; i++)
539 const struct section *sections,
int nb_sections)
554 (*wctx)->writer = writer;
557 (*wctx)->nb_sections = nb_sections;
562 void *priv_ctx = (*wctx)->priv;
573 av_log(*wctx,
AV_LOG_ERROR,
"Failed to parse option string '%s' provided to writer context\n", args);
580 av_log(*wctx,
AV_LOG_ERROR,
"Failed to set option '%s' with value '%s' provided to writer context\n",
592 const uint8_t *p = (*wctx)->string_validation_replacement;
593 const uint8_t *endp = p + strlen(p);
597 ret =
av_utf8_decode(&code, &p, endp, (*wctx)->string_validation_utf8_flags);
603 "Invalid UTF8 sequence %s found in string validation replace '%s'\n",
604 bp.str, (*wctx)->string_validation_replacement);
613 if ((*wctx)->writer->init)
614 ret = (*wctx)->writer->init(*wctx);
628 int parent_section_id;
631 parent_section_id = wctx->
level ?
652 int parent_section_id = wctx->
level ?
667 const char *
key,
long long int val)
681 int invalid_chars_nb = 0, ret = 0;
685 endp = src + strlen(src);
686 for (p = (
uint8_t *)src; *p;) {
696 "Invalid UTF-8 sequence %s found in string '%s'\n", bp.str, src);
706 "Invalid UTF-8 sequence found in string '%s'\n", src);
723 "%d invalid UTF-8 sequence(s) found in string '%s', replaced with '%s'\n",
732 #define PRINT_STRING_OPT 1
733 #define PRINT_STRING_VALIDATE 2
749 if (ret < 0)
goto end;
751 if (ret < 0)
goto end;
756 "Invalid key=value string combination %s=%s in section %s\n",
781 int64_t ts,
const AVRational *time_base,
int is_duration)
785 if ((!is_duration && ts ==
AV_NOPTS_VALUE) || (is_duration && ts == 0)) {
788 double d = ts *
av_q2d(*time_base);
799 if ((!is_duration && ts ==
AV_NOPTS_VALUE) || (is_duration && ts == 0)) {
817 for (i = 0; i < l; i++) {
823 for (i = 0; i < l; i++)
844 p = buf + strlen(buf);
851 int columns,
int bytes,
int offset_add)
860 l =
FFMIN(size, columns);
861 for (i = 0; i < l; i++) {
862 if (bytes == 1)
av_bprintf(&bp, format, *data);
869 offset += offset_add;
875 #define MAX_REGISTERED_WRITERS_NB 64
881 static int next_registered_writer_idx = 0;
886 registered_writers[next_registered_writer_idx++] = writer;
894 for (i = 0; registered_writers[
i]; i++)
895 if (!strcmp(registered_writers[i]->name, name))
896 return registered_writers[
i];
904 #define DEFINE_WRITER_CLASS(name) \
905 static const char *name##_get_name(void *ctx) \
909 static const AVClass name##_class = { \
910 .class_name = #name, \
911 .item_name = name##_get_name, \
912 .option = name##_options \
925 #define OFFSET(x) offsetof(DefaultContext, x)
928 {
"noprint_wrappers",
"do not print headers and footers",
OFFSET(noprint_wrappers),
AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
941 for (i = 0; src[i] && i < dst_size-1; i++)
952 const struct section *parent_section = wctx->
level ?
956 if (parent_section &&
991 printf(
"%s\n", value);
1000 printf(
"%lld\n", value);
1011 .priv_class = &default_class,
1019 static const char *
c_escape_str(AVBPrint *dst,
const char *
src,
const char sep,
void *log_ctx)
1023 for (p = src; *p; p++) {
1025 case '\b':
av_bprintf(dst,
"%s",
"\\b");
break;
1026 case '\f':
av_bprintf(dst,
"%s",
"\\f");
break;
1027 case '\n':
av_bprintf(dst,
"%s",
"\\n");
break;
1028 case '\r':
av_bprintf(dst,
"%s",
"\\r");
break;
1029 case '\\':
av_bprintf(dst,
"%s",
"\\\\");
break;
1044 char meta_chars[] = { sep,
'"',
'\n',
'\r',
'\0' };
1045 int needs_quoting = !!src[strcspn(src, meta_chars)];
1050 for (; *
src; src++) {
1072 const char * (*escape_str)(AVBPrint *dst,
const char *
src,
const char sep,
void *log_ctx);
1079 #define OFFSET(x) offsetof(CompactContext, x)
1100 av_log(wctx,
AV_LOG_ERROR,
"Item separator '%s' specified, but must contain a single character\n",
1121 const struct section *parent_section = wctx->
level ?
1163 if (!compact->
nokey)
1175 if (!compact->
nokey)
1177 printf(
"%lld", value);
1189 .priv_class = &compact_class,
1195 #define OFFSET(x) offsetof(CompactContext, x)
1220 .priv_class = &csv_class,
1233 #define OFFSET(x) offsetof(FlatContext, x)
1238 {
"hierarchical",
"specify if the section specification should be hierarchical",
OFFSET(hierarchical),
AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
1239 {
"h",
"specify if the section specification should be hierarchical",
OFFSET(hierarchical),
AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
1249 if (strlen(flat->
sep_str) != 1) {
1250 av_log(wctx,
AV_LOG_ERROR,
"Item separator '%s' specified, but must contain a single character\n",
1263 for (p = src; *p; p++) {
1264 if (!((*p >=
'0' && *p <=
'9') ||
1265 (*p >=
'a' && *p <=
'z') ||
1266 (*p >=
'A' && *p <=
'Z')))
1278 for (p = src; *p; p++) {
1280 case '\n':
av_bprintf(dst,
"%s",
"\\n");
break;
1281 case '\r':
av_bprintf(dst,
"%s",
"\\r");
break;
1282 case '\\':
av_bprintf(dst,
"%s",
"\\\\");
break;
1283 case '"':
av_bprintf(dst,
"%s",
"\\\"");
break;
1284 case '`':
av_bprintf(dst,
"%s",
"\\`");
break;
1285 case '$':
av_bprintf(dst,
"%s",
"\\$");
break;
1297 const struct section *parent_section = wctx->
level ?
1302 if (!parent_section)
1344 .priv_class = &flat_class,
1355 #define OFFSET(x) offsetof(INIContext, x)
1358 {
"hierarchical",
"specify if the section specification should be hierarchical",
OFFSET(hierarchical),
AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
1359 {
"h",
"specify if the section specification should be hierarchical",
OFFSET(hierarchical),
AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
1370 while (c = src[i++]) {
1372 case '\b':
av_bprintf(dst,
"%s",
"\\b");
break;
1373 case '\f':
av_bprintf(dst,
"%s",
"\\f");
break;
1374 case '\n':
av_bprintf(dst,
"%s",
"\\n");
break;
1375 case '\r':
av_bprintf(dst,
"%s",
"\\r");
break;
1376 case '\t':
av_bprintf(dst,
"%s",
"\\t");
break;
1382 if ((
unsigned char)c < 32)
1397 const struct section *parent_section = wctx->
level ?
1401 if (!parent_section) {
1402 printf(
"# ffprobe output\n\n");
1422 printf(
"[%s]\n", buf->str);
1438 printf(
"%s=%lld\n", key, value);
1448 .priv_class = &ini_class,
1461 #define OFFSET(x) offsetof(JSONContext, x)
1483 static const char json_escape[] = {
'"',
'\\',
'\b',
'\f',
'\n',
'\r',
'\t', 0};
1484 static const char json_subst[] = {
'"',
'\\',
'b',
'f',
'n',
'r',
't', 0};
1487 for (p = src; *p; p++) {
1488 char *
s = strchr(json_escape, *p);
1492 }
else if ((
unsigned char)*p < 32) {
1501 #define JSON_INDENT() printf("%*c", json->indent_level * 4, ' ')
1508 const struct section *parent_section = wctx->
level ?
1524 printf(
"\"%s\": [\n", buf.str);
1534 printf(
"\"type\": \"%s\"%s", section->
name, json->
item_sep);
1546 if (wctx->
level == 0) {
1564 const char *
key,
const char *
value)
1610 .priv_class = &json_class,
1624 #define OFFSET(x) offsetof(XMLContext, x)
1627 {
"fully_qualified",
"specify if the output should be fully qualified",
OFFSET(fully_qualified),
AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
1628 {
"q",
"specify if the output should be fully qualified",
OFFSET(fully_qualified),
AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
1629 {
"xsd_strict",
"ensure that the output is XSD compliant",
OFFSET(xsd_strict),
AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
1642 #define CHECK_COMPLIANCE(opt, opt_name) \
1644 av_log(wctx, AV_LOG_ERROR, \
1645 "XSD-compliant output selected but option '%s' was selected, XML output may be non-compliant.\n" \
1646 "You need to disable such option with '-no%s'\n", opt_name, opt_name); \
1647 return AVERROR(EINVAL); \
1655 "Interleaved frames and packets are not allowed in XSD. "
1656 "Select only one between the -show_frames and the -show_packets options.\n");
1668 for (p = src; *p; p++) {
1670 case '&' :
av_bprintf(dst,
"%s",
"&");
break;
1671 case '<' :
av_bprintf(dst,
"%s",
"<");
break;
1672 case '>' :
av_bprintf(dst,
"%s",
">");
break;
1673 case '"' :
av_bprintf(dst,
"%s",
""");
break;
1674 case '\'':
av_bprintf(dst,
"%s",
"'");
break;
1682 #define XML_INDENT() printf("%*c", xml->indent_level * 4, ' ')
1688 const struct section *parent_section = wctx->
level ?
1691 if (wctx->
level == 0) {
1692 const char *qual =
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
1693 "xmlns:ffprobe='http://www.ffmpeg.org/schema/ffprobe' "
1694 "xsi:schemaLocation='http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd'";
1696 printf(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
1697 printf(
"<%sffprobe%s>\n",
1729 if (wctx->
level == 0) {
1753 printf(
"<%s key=\"%s\"",
1770 printf(
"%s=\"%lld\"", key, value);
1782 .priv_class = &xml_class,
1802 #define print_fmt(k, f, ...) do { \
1803 av_bprint_clear(&pbuf); \
1804 av_bprintf(&pbuf, f, __VA_ARGS__); \
1805 writer_print_string(w, k, pbuf.str, 0); \
1808 #define print_int(k, v) writer_print_integer(w, k, v)
1809 #define print_q(k, v, s) writer_print_rational(w, k, v, s)
1810 #define print_str(k, v) writer_print_string(w, k, v, 0)
1811 #define print_str_opt(k, v) writer_print_string(w, k, v, PRINT_STRING_OPT)
1812 #define print_str_validate(k, v) writer_print_string(w, k, v, PRINT_STRING_VALIDATE)
1813 #define print_time(k, v, tb) writer_print_time(w, k, v, tb, 0)
1814 #define print_ts(k, v) writer_print_ts(w, k, v, 0)
1815 #define print_duration_time(k, v, tb) writer_print_time(w, k, v, tb, 1)
1816 #define print_duration_ts(k, v) writer_print_ts(w, k, v, 1)
1817 #define print_val(k, v, u) do { \
1818 struct unit_value uv; \
1821 writer_print_string(w, k, value_string(val_str, sizeof(val_str), uv), 0); \
1824 #define print_section_header(s) writer_print_section_header(w, s)
1825 #define print_section_footer(s) writer_print_section_footer(w, s)
1827 #define REALLOCZ_ARRAY_STREAM(ptr, cur_n, new_n) \
1829 ret = av_reallocp_array(&(ptr), (new_n), sizeof(*(ptr))); \
1832 memset( (ptr) + (cur_n), 0, ((new_n) - (cur_n)) * sizeof(*(ptr)) ); \
1863 for (i = 0; i < nb_side_data; i++) {
1868 print_str(
"side_data_type", name ? name :
"unknown");
1986 av_freep(&log_buffer[i].context_name);
1987 av_freep(&log_buffer[i].parent_name);
1988 av_freep(&log_buffer[i].log_message);
1990 log_buffer_size = 0;
2006 if (log_buffer[i].log_level <= log_level) {
2008 print_str(
"context", log_buffer[i].context_name);
2009 print_int(
"level", log_buffer[i].log_level);
2011 if (log_buffer[i].parent_name) {
2012 print_str(
"parent_context", log_buffer[i].parent_name);
2013 print_int(
"parent_category", log_buffer[i].parent_category);
2018 print_str(
"message", log_buffer[i].log_message);
2149 print_q(
"sample_aspect_ratio", sar,
':');
2194 print_str(
"side_data_type", name ? name :
"unknown");
2251 int ret = 0, got_frame = 0;
2254 if (dec_ctx && dec_ctx->
codec) {
2302 return got_frame || *packet_new;
2307 av_log(log_ctx, log_level,
"id:%d", interval->
id);
2313 av_log(log_ctx, log_level,
" start:N/A");
2319 av_log(log_ctx, log_level,
"#%"PRId64, interval->
end);
2323 av_log(log_ctx, log_level,
" end:N/A");
2326 av_log(log_ctx, log_level,
"\n");
2335 int ret = 0, i = 0, frame_count = 0;
2349 "Could not seek to relative position since current "
2350 "timestamp is not defined\n");
2354 target = *cur_ts + interval->
start;
2356 target = interval->
start;
2392 end = start + interval->
end;
2397 if (frame_count >= interval->
end)
2399 }
else if (has_end && *cur_ts !=
AV_NOPTS_VALUE && *cur_ts >= end) {
2411 while (
process_frame(w, ifile, frame, &pkt, &packet_new) > 0);
2423 while (
process_frame(w, ifile, frame, &pkt, &(
int){1}) > 0);
2493 char profile_num[12];
2503 #if FF_API_LAVF_AVCTX
2516 #if FF_API_LAVF_AVCTX
2525 print_q(
"sample_aspect_ratio", sar,
':');
2530 print_q(
"display_aspect_ratio", dar,
':');
2547 print_str(
"field_order",
"progressive");
2559 #if FF_API_PRIVATE_OPT
2606 if (opt->
flags)
continue;
2625 #if FF_API_LAVF_AVCTX
2644 #define PRINT_DISPOSITION(flagname, name) do { \
2645 print_int(name, !!(stream->disposition & AV_DISPOSITION_##flagname)); \
2810 const char *errbuf_ptr = errbuf;
2826 int scan_all_pmts_set = 0;
2836 scan_all_pmts_set = 1;
2844 if (scan_all_pmts_set)
2857 for (i = 0; i < orig_nb_streams; i++)
2885 "Failed to probe codec for input stream %d\n",
2893 "Unsupported codec with id %d for input stream %d\n",
2899 fmt_ctx, stream, codec);
2918 #if FF_API_LAVF_AVCTX
2969 #define CHECK_END if (ret < 0) goto end
3050 print_fmt(
"copyright",
"Copyright (c) %d-%d the FFmpeg developers",
3053 print_str(
"configuration", FFMPEG_CONFIGURATION);
3059 #define SHOW_LIB_VERSION(libname, LIBNAME) \
3061 if (CONFIG_##LIBNAME) { \
3062 unsigned int version = libname##_version(); \
3063 writer_print_section_header(w, SECTION_ID_LIBRARY_VERSION); \
3064 print_str("name", "lib" #libname); \
3065 print_int("major", LIB##LIBNAME##_VERSION_MAJOR); \
3066 print_int("minor", LIB##LIBNAME##_VERSION_MINOR); \
3067 print_int("micro", LIB##LIBNAME##_VERSION_MICRO); \
3068 print_int("version", version); \
3069 print_str("ident", LIB##LIBNAME##_IDENT); \
3070 writer_print_section_footer(w); \
3088 #define PRINT_PIX_FMT_FLAG(flagname, name) \
3090 print_int(name, !!(pixdesc->flags & AV_PIX_FMT_FLAG_##flagname)); \
3121 #if FF_API_PSEUDOPAL
3158 if (show_all_entries) {
3174 if (!strcmp(section_name, section->
name) ||
3177 "'%s' matches section with unique name '%s'\n", section_name,
3188 const char *p =
arg;
3196 if (!section_name) {
3198 "Missing section name for option '%s'\n", opt);
3204 while (*p && *p !=
':') {
3209 "Adding '%s' to the entries to show in section '%s'\n",
3210 entry, section_name);
3216 show_all_entries = 1;
3219 ret =
match_section(section_name, show_all_entries, entries);
3245 "Option '%s' is deprecated, use '-show_entries format=%s' instead\n",
3256 "Argument '%s' provided as input filename, but '%s' was already specified.\n",
3260 if (!strcmp(arg,
"-"))
3291 char *next, *p, *spec =
av_strdup(interval_spec);
3302 next = strchr(spec,
'%');
3344 lli = strtoll(p, &tail, 10);
3345 if (*tail || lli < 0) {
3347 "Invalid or negative value '%s' for duration number of frames\n", p);
3350 interval->
end = lli;
3372 char *p, *spec =
av_strdup(intervals_spec);
3377 for (n = 0, p = spec; *p; p++)
3383 if (!read_intervals) {
3391 for (i = 0; p; i++) {
3395 next = strchr(p,
',');
3399 read_intervals[i].
id = i;
3439 printf(
"%*c %s", level * 4,
' ', section->
name);
3450 printf(
"Sections:\n"
3451 "W.. = Section is a wrapper (contains other sections, no local entries)\n"
3452 ".A. = Section contains an array of elements of the same type\n"
3453 "..V = Section may contain a variable number of fields with variable keys\n"
3454 "FLAGS NAME/UNIQUE_NAME\n"
3467 #define DEFINE_OPT_SHOW_SECTION(section, target_section_id) \
3468 static int opt_show_##section(const char *opt, const char *arg) \
3470 mark_section_show_entries(SECTION_ID_##target_section_id, 1, NULL); \
3491 "use binary prefixes for byte units" },
3493 "use sexagesimal format HOURS:MM:SS.MICROSECONDS for time units" },
3495 "prettify the format of displayed values, make it more human readable" },
3497 "set the output printing format (available formats are: default, compact, csv, flat, ini, json, xml)",
"format" },
3500 {
"sections",
OPT_EXIT, {.func_arg =
opt_sections},
"print sections structure and section information, and exit" },
3503 {
"show_error", 0, {(
void*)&opt_show_error},
"show probing error" },
3504 {
"show_format", 0, {(
void*)&opt_show_format},
"show format/container info" },
3505 {
"show_frames", 0, {(
void*)&opt_show_frames},
"show frames info" },
3507 "show a particular entry from the format/container info",
"entry" },
3509 "show a set of specified entries",
"entry_list" },
3513 {
"show_packets", 0, {(
void*)&opt_show_packets},
"show packets info" },
3514 {
"show_programs", 0, {(
void*)&opt_show_programs},
"show programs info" },
3515 {
"show_streams", 0, {(
void*)&opt_show_streams},
"show streams info" },
3516 {
"show_chapters", 0, {(
void*)&opt_show_chapters},
"show chapters info" },
3519 {
"show_program_version", 0, {(
void*)&opt_show_program_version},
"show ffprobe version" },
3520 {
"show_library_versions", 0, {(
void*)&opt_show_library_versions},
"show library versions" },
3521 {
"show_versions", 0, {(
void*)&
opt_show_versions},
"show program and library versions" },
3522 {
"show_pixel_formats", 0, {(
void*)&opt_show_pixel_formats},
"show pixel format descriptions" },
3530 "read and decode the streams to fill missing information with heuristics" },
3546 #define SET_DO_SHOW(id, varname) do { \
3547 if (check_section_show_entries(SECTION_ID_##id)) \
3548 do_show_##varname = 1; \
3556 char *w_name =
NULL, *w_args =
NULL;
3592 SET_DO_SHOW(PIXEL_FORMAT_FLAGS, pixel_format_flags);
3593 SET_DO_SHOW(PIXEL_FORMAT_COMPONENTS, pixel_format_components);
3597 SET_DO_SHOW(STREAM_DISPOSITION, stream_disposition);
3598 SET_DO_SHOW(PROGRAM_STREAM_DISPOSITION, stream_disposition);
3610 "-bitexact and -show_program_version or -show_library_versions "
3611 "options are incompatible\n");
3627 "No name specified for the output format\n");
3638 "Unknown hash algorithm '%s'\nKnown algorithms:",
3657 if (w == &xml_writer)
unsigned int nb_chapters
Number of chapters in AVChapter array.
int32_t pitch
Rotation around the right vector [-90, 90].
void init_dynload(void)
Initialize dynamic library loading.
#define AV_STEREO3D_FLAG_INVERT
Inverted views, Right/Bottom represents the left view.
int(* init)(WriterContext *wctx)
codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it ...
AVClassCategory parent_category
enum AVChromaLocation chroma_location
const struct section * section[SECTION_MAX_NB_LEVELS]
section per each level
const struct AVCodec * codec
const char const char void * val
static char * value_string(char *buf, int buf_size, struct unit_value uv)
static int do_show_program_tags
enum AVFieldOrder field_order
Video only.
unsigned int nb_item[SECTION_MAX_NB_LEVELS]
number of the item printed in the given section, starting from 0
enum AVColorTransferCharacteristic color_trc
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static int show_tags(WriterContext *w, AVDictionary *tags, int section_id)
int64_t avio_size(AVIOContext *s)
Get the filesize.
int av_utf8_decode(int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end, unsigned int flags)
Read and decode a single UTF-8 code point (character) from the buffer in *buf, and update *buf to poi...
void av_bprintf(AVBPrint *buf, const char *fmt,...)
int nested_section[SECTION_MAX_NB_LEVELS]
static av_always_inline int pthread_mutex_destroy(pthread_mutex_t *mutex)
static const char * format[]
This structure describes decoded (raw) audio or video data.
#define pthread_mutex_lock(a)
static void json_print_int(WriterContext *wctx, const char *key, long long int value)
static void default_print_section_header(WriterContext *wctx)
unsigned MaxCLL
Max content light level (cd/m^2).
static int writer_register(const Writer *writer)
ptrdiff_t const GLvoid * data
static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
static int opt_format(void *optctx, const char *opt, const char *arg)
#define SHOW_LIB_VERSION(libname, LIBNAME)
int coded_width
Bitstream width / height, may be different from width/height e.g.
int64_t pkt_pos
reordered pos from the last AVPacket that has been input into the decoder
static void writer_print_rational(WriterContext *wctx, const char *key, AVRational q, char sep)
void(* print_string)(WriterContext *wctx, const char *, const char *)
static int opt_show_format_entry(void *optctx, const char *opt, const char *arg)
static const char unit_hertz_str[]
#define AV_LOG_WARNING
Something somehow does not look correct.
#define LIBAVUTIL_VERSION_INT
int64_t pos
byte position in stream, -1 if unknown
static const char * xml_escape_str(AVBPrint *dst, const char *src, void *log_ctx)
#define AV_DICT_DONT_OVERWRITE
Don't overwrite existing entries.
int av_parse_time(int64_t *timeval, const char *timestr, int duration)
Parse timestr and return in *time a corresponding number of microseconds.
static void json_print_section_footer(WriterContext *wctx)
static void writer_close(WriterContext **wctx)
static av_cold int init(AVCodecContext *avctx)
static int read_intervals_nb
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
static void writer_print_integer(WriterContext *wctx, const char *key, long long int val)
static int do_show_stream_tags
static char * ini_escape_str(AVBPrint *dst, const char *src)
static void print_chroma_location(WriterContext *w, enum AVChromaLocation chroma_location)
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...
This side data should be associated with a video stream and contains Stereoscopic 3D information in f...
void av_opt_set_defaults(void *s)
Set the values of all AVOption fields to their default values.
static AVFormatContext * fmt_ctx
static int show_streams(WriterContext *w, InputFile *ifile)
static char * print_format
Video represents a portion of a sphere mapped on a flat surface using equirectangular projection...
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
static const Writer json_writer
Content light level (based on CTA-861.3).
int repeat_pict
When decoding, this signals how much the picture must be delayed.
int index
stream index in AVFormatContext
static const AVOption writer_options[]
static void writer_print_integers(WriterContext *wctx, const char *name, uint8_t *data, int size, const char *format, int columns, int bytes, int offset_add)
static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_idx, InputStream *ist, int in_program)
#define print_str_opt(k, v)
void(* print_integer)(WriterContext *wctx, const char *, long long int)
static int read_packets(WriterContext *w, InputFile *ifile)
int64_t bit_rate
Total stream bitrate in bit/s, 0 if not available.
void show_banner(int argc, char **argv, const OptionDef *options)
Print the program banner to stderr.
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).
int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags)
Copy entries from one AVDictionary struct into another.
Mastering display metadata associated with a video frame.
static const AVClass writer_class
static int do_show_packets
static int do_show_format_tags
static int writer_open(WriterContext **wctx, const Writer *writer, const char *args, const struct section *sections, int nb_sections)
void(* uninit)(WriterContext *wctx)
static void bprint_bytes(AVBPrint *bp, const uint8_t *ubuf, size_t ubuf_size)
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
static void json_print_item_str(WriterContext *wctx, const char *key, const char *value)
static const Writer default_writer
AVPacketSideData * side_data
An array of side data that applies to the whole stream (i.e.
static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream, AVFormatContext *fmt_ctx)
static const char * json_escape_str(AVBPrint *dst, const char *src, void *log_ctx)
static void xml_print_section_footer(WriterContext *wctx)
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
static void mark_section_show_entries(SectionID section_id, int show_all_entries, AVDictionary *entries)
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)
Decode a subtitle message.
static uint64_t * nb_streams_frames
int has_nested_elems[SECTION_MAX_NB_LEVELS]
static int validate_string(WriterContext *wctx, char **dstp, const char *src)
static int open_input_file(InputFile *ifile, const char *filename)
#define CMDUTILS_COMMON_OPTIONS
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, AVCodec *codec)
Filter out options for given codec.
This struct describes the properties of an encoded stream.
AVColorTransferCharacteristic
Color Transfer Characteristic.
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
static int do_count_frames
#define SECTION_MAX_NB_LEVELS
enum AVColorSpace color_space
static void * writer_child_next(void *obj, void *prev)
const char * av_color_space_name(enum AVColorSpace space)
static const AVOption default_options[]
static av_always_inline int process_frame(WriterContext *w, InputFile *ifile, AVFrame *frame, AVPacket *pkt, int *packet_new)
Mastering display metadata (based on SMPTE-2086:2014).
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
#define AV_DICT_DONT_STRDUP_KEY
Take ownership of a key that's been allocated with av_malloc() or another memory allocation function...
const char *(* escape_str)(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
#define AV_HASH_MAX_SIZE
Maximum value that av_hash_get_size() will currently return.
const AVClass * avcodec_get_class(void)
Get the AVClass for AVCodecContext.
unsigned int nb_stream_indexes
const char * element_name
name of the contained element, if provided
static void writer_print_section_header(WriterContext *wctx, int section_id)
static void compact_print_section_footer(WriterContext *wctx)
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
#define av_assert0(cond)
assert() equivalent, that is always enabled.
unsigned int nb_section_packet
number of the packet section in case we are in "packets_and_frames" section
static void ini_print_section_header(WriterContext *wctx)
#define print_duration_ts(k, v)
void register_exit(void(*cb)(int ret))
Register a program-specific cleanup routine.
AVComponentDescriptor comp[4]
Parameters that describe how pixels are packed.
void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
Trivial log callback.
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
static int do_read_packets
int opt_default(void *optctx, const char *opt, const char *arg)
Fallback for options that are not explicitly handled, these will be parsed through AVOptions...
static int opt_read_intervals(void *optctx, const char *opt, const char *arg)
int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict)
Unpack a dictionary from side_data.
static int do_show_pixel_format_components
static int * selected_streams
static void close_input_file(InputFile *ifile)
timestamp utils, mostly useful for debugging/logging purposes
Stereo 3D type: this structure describes how two videos are packed within a single video surface...
#define va_copy(dst, src)
AVColorSpace
YUV colorspace type.
static const char * flat_escape_value_str(AVBPrint *dst, const char *src)
static void writer_print_time(WriterContext *wctx, const char *key, int64_t ts, const AVRational *time_base, int is_duration)
const char * av_color_range_name(enum AVColorRange range)
static av_cold int end(AVCodecContext *avctx)
int id
unique ID to identify the chapter
static int show_chapters(WriterContext *w, InputFile *ifile)
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
static av_cold int compact_init(WriterContext *wctx)
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
static int find_stream_info
int id
Format-specific stream ID.
static int do_show_library_versions
static void compact_print_section_header(WriterContext *wctx)
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.
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.
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
int nb_side_data
The number of elements in the AVStream.side_data array.
static int match_section(const char *section_name, int show_all_entries, AVDictionary *entries)
void init_opts(void)
Initialize the cmdutils option system, in particular allocate the *_opts contexts.
AVStream ** streams
A list of all streams in the file.
int avcodec_parameters_to_context(AVCodecContext *codec, const AVCodecParameters *par)
Fill the codec context based on the values from the supplied codec parameters.
void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size)
Append data to a print buffer.
AVFormatContext * avformat_alloc_context(void)
Allocate an AVFormatContext.
static void writer_print_data_hash(WriterContext *wctx, const char *name, uint8_t *data, int size)
Structure to hold side data for an AVFrame.
const char * av_stereo3d_type_name(unsigned int type)
Provide a human-readable name of a given stereo3d type.
static const AVOption json_options[]
static void ERROR(const char *str)
static void log_read_interval(const ReadInterval *interval, void *log_ctx, int log_level)
static const char * writer_get_name(void *p)
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
#define PRINT_DISPOSITION(flagname, name)
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *))
static double av_q2d(AVRational a)
Convert an AVRational to a double.
#define SECTION_MAX_NB_CHILDREN
static int show_program(WriterContext *w, InputFile *ifile, AVProgram *program)
int avformat_network_init(void)
Do global initialization of network libraries.
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type.
const AVClass * priv_class
private class of the writer, if any
#define AVERROR_EOF
End of file.
#define AV_LOG_VERBOSE
Detailed information.
AVDictionary * metadata
metadata.
static int check_section_show_entries(int section_id)
int interlaced_frame
The content of the picture is interlaced.
const AVClass * avformat_get_class(void)
Get the AVClass for AVFormatContext.
static void print_section(SectionID id, int level)
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Find the '-loglevel' option in the command line args and apply it.
AVColorRange
MPEG vs JPEG YUV range.
void(* print_section_footer)(WriterContext *wctx)
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction.
void show_help_default(const char *opt, const char *arg)
Per-fftool specific help handler.
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
Print help for all options matching specified flags.
static const char * c_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
Apply C-language-like string escaping.
static void writer_register_all(void)
static void xml_print_str(WriterContext *wctx, const char *key, const char *value)
int children_ids[SECTION_MAX_NB_CHILDREN+1]
list of children section IDS, terminated by -1
AVColorPrimaries
Chromaticity coordinates of the source primaries.
static void print_pkt_side_data(WriterContext *w, AVCodecParameters *par, const AVPacketSideData *side_data, int nb_side_data, SectionID id_data_list, SectionID id_data)
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
static const char * input_filename
unsigned int * stream_index
static void json_print_section_header(WriterContext *wctx)
AVFrameSideData ** side_data
uint64_t channel_layout
Audio only.
static void ffprobe_show_program_version(WriterContext *w)
static int do_show_chapter_tags
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Setup AVCodecContext options for avformat_find_stream_info().
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
AVDictionary * format_opts
static int do_show_frames
static void * av_x_if_null(const void *p, const void *x)
Return x default pointer in case p is NULL.
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
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, streams, container, programs, metadata, side data, codec and time base.
Main libavdevice API header.
static int read_interval_packets(WriterContext *w, InputFile *ifile, const ReadInterval *interval, int64_t *cur_ts)
static int do_show_chapters
AVRational pkt_timebase
Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
char * string_validation_replacement
libswresample public header
static int opt_show_versions(const char *opt, const char *arg)
const char * av_chroma_location_name(enum AVChromaLocation location)
Content light level needed by to transmit HDR over HDMI (CTA-861.3).
static const char unit_byte_str[]
void av_hash_init(AVHashContext *ctx)
Initialize or reset a hash context.
const int program_birth_year
program birth year, defined by the program for show_banner()
int level
current level, starting from 0
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
AVDictionary * entries_to_show
static int do_show_pixel_format_flags
#define AV_DICT_MATCH_CASE
Only get an entry with exact-case key match.
AVDictionary * metadata
Metadata that applies to the whole file.
int av_get_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
int flags
Additional information about the frame packing.
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
#define AV_BPRINT_SIZE_UNLIMITED
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.
static void opt_input_file(void *optctx, const char *arg)
static int opt_pretty(void *optctx, const char *opt, const char *arg)
#define SET_DO_SHOW(id, varname)
int priv_size
private size for the writer context
#define AV_PIX_FMT_FLAG_RGB
The pixel format contains RGB-like data (as opposed to YUV/grayscale).
uint8_t * av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, int *size)
Get side information from packet.
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
#define av_ts2timestr(ts, tb)
Convenience macro, the return value should be used only directly in function arguments but never stan...
static const AVOption xml_options[]
enum AVColorPrimaries color_primaries
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
char * url
input or output URL.
int video_delay
Video only.
#define SECTION_FLAG_HAS_VARIABLE_FIELDS
the section may contain a variable number of fields with variable keys.
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
Return decoded output data from a decoder.
enum AVColorRange color_range
MPEG vs JPEG YUV range.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values. ...
#define av_fourcc2str(fourcc)
enum AVMediaType codec_type
General type of the encoded data.
int nested_section[SECTION_MAX_NB_LEVELS]
enum AVColorSpace colorspace
YUV colorspace type.
static void default_print_int(WriterContext *wctx, const char *key, long long int value)
#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...
static av_cold int json_init(WriterContext *wctx)
simple assert() macros that are a bit more flexible than ISO C assert().
const AVOption * av_opt_next(const void *obj, const AVOption *last)
Iterate over all AVOptions belonging to obj.
enum AVPacketSideDataType type
AVClassCategory category
Category used for visualization (like color) This is only set if the category is equal for all object...
static int show_log(WriterContext *w, int section_ids, int section_id, int log_level)
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.
static void flat_print_str(WriterContext *wctx, const char *key, const char *value)
int av_hash_alloc(AVHashContext **ctx, const char *name)
Allocate a hash context for the algorithm specified by name.
int id
unique id identifying a section
const char * long_name
A more descriptive name for this codec.
The GOP timecode in 25 bit timecode format.
static const uint8_t offset[127][2]
AVRational avg_frame_rate
Average framerate.
New fields can be added to the end with minor version bumps.
attribute_deprecated int64_t timecode_frame_start
static int parse_read_intervals(const char *intervals_spec)
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...
void av_log_default_callback(void *ptr, int level, const char *fmt, va_list vl)
Default logging callback.
int flags
A combination of AV_PKT_FLAG values.
const char * av_color_primaries_name(enum AVColorPrimaries primaries)
const AVCodecDescriptor * avcodec_descriptor_get(enum AVCodecID id)
void * priv
private data for use by the filter
int extradata_size
Size of the extradata content in bytes.
uint32_t end_display_time
char * name
name of this writer instance
int64_t pts
Same as packet pts, in AV_TIME_BASE.
uint64_t channel_layout
Channel layout of the audio data.
char * av_asprintf(const char *fmt,...)
#define SECTION_FLAG_IS_WRAPPER
the section only contains other sections, but has no data at its own level
uint64_t flags
Combination of AV_PIX_FMT_FLAG_...
unsigned int nb_streams
Number of elements in AVFormatContext.streams.
static void writer_print_data(WriterContext *wctx, const char *name, uint8_t *data, int size)
static int show_format(WriterContext *w, InputFile *ifile)
int refs
number of reference frames
static ReadInterval * read_intervals
AVInputFormat * av_find_input_format(const char *short_name)
Find AVInputFormat based on the short name of the input format.
uint8_t nb_components
The number of components each pixel has, (1-4)
AVBPrint section_pbuf[SECTION_MAX_NB_LEVELS]
generic print buffer dedicated to each section, used by various writers
Video frame is split into 6 faces of a cube, and arranged on a 3x2 layout.
int channels
number of audio channels, only used for audio.
#define print_section_footer(s)
static const char * csv_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
Quote fields containing special characters, check RFC4180.
enum AVPictureType pict_type
Picture type of the frame.
static const char unit_bit_per_second_str[]
static const Writer * registered_writers[MAX_REGISTERED_WRITERS_NB+1]
#define AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES
exclude control codes not accepted by XML
const char * av_hash_names(int i)
Get the names of available hash algorithms.
int display_picture_number
picture number in display order
static struct section sections[]
void av_log_set_callback(void(*callback)(void *, int, const char *, va_list))
Set the logging callback.
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
#define AV_OPT_SEARCH_CHILDREN
Search in possible children of the given object first.
static int do_read_frames
#define PRINT_PIX_FMT_FLAG(flagname, name)
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
GLsizei GLboolean const GLfloat * value
#define print_fmt(k, f,...)
#define FF_PROFILE_UNKNOWN
This side data should be associated with a video stream and corresponds to the AVSphericalMapping str...
static void ffprobe_show_pixel_formats(WriterContext *w)
static const struct ColorPrimaries color_primaries[AVCOL_PRI_NB]
static void show_usage(void)
#define av_err2str(errnum)
Convenience macro, the return value should be used only directly in function arguments but never stan...
const char * av_hash_get_name(const AVHashContext *ctx)
static int show_private_data
static int probe_file(WriterContext *wctx, const char *filename)
AVClassCategory(* get_category)(void *ctx)
Callback to return the category.
static av_always_inline int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
static av_cold int xml_init(WriterContext *wctx)
int nb_sections
number of sections
The data contains an ICC profile as an opaque octet buffer following the format described by ISO 1507...
const struct section * sections
array containing all sections
static const Writer flat_writer
static void flat_print_int(WriterContext *wctx, const char *key, long long int value)
int32_t yaw
Rotation around the up vector [-180, 180].
static int opt_sections(void *optctx, const char *opt, const char *arg)
static int do_show_programs
static const OptionDef real_options[]
int probe_score
format probing score.
enum AVColorRange color_range
Video only.
#define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
#define pthread_mutex_unlock(a)
const char *(* item_name)(void *ctx)
A pointer to a function which returns the name of a context instance ctx associated with the class...
static int do_show_format
static void error(const char *err)
const char * item_start_end
#define FF_ARRAY_ELEMS(a)
static const Writer ini_writer
void exit_program(int ret)
Wraps exit with a program-specific cleanup routine.
static void compact_print_str(WriterContext *wctx, const char *key, const char *value)
void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout)
Append a description of a channel layout to a bprint buffer.
uint32_t padding
Number of pixels to pad from the edge of each cube face.
static void print_color_range(WriterContext *w, enum AVColorRange color_range)
const char program_name[]
program name, defined by the program for show_version().
static const Writer compact_writer
static void compact_print_int(WriterContext *wctx, const char *key, long long int value)
int64_t end
chapter start/end time in time_base units
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
int av_dict_parse_string(AVDictionary **pm, const char *str, const char *key_val_sep, const char *pairs_sep, int flags)
Parse the key/value pairs list and add the parsed entries to a dictionary.
Content light level (based on CTA-861.3).
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
Supply raw packet data as input to a decoder.
int avformat_network_deinit(void)
Undo the initialization done by avformat_network_init.
static int do_show_packet_tags
static struct AVHashContext * hash
int coded_picture_number
picture number in bitstream order
enum AVStereo3DType type
How views are packed within the video.
static AVInputFormat * iformat
#define AV_LOG_INFO
Standard information.
unsigned int nb_section_frame
number of the frame section in case we are in "packets_and_frames" section
#define AV_BPRINT_SIZE_AUTOMATIC
char * av_strdup(const char *s)
Duplicate a string.
Libavcodec external API header.
int64_t pkt_duration
duration of the corresponding packet, expressed in AVStream->time_base units, 0 if unknown...
A list of zero terminated key/value strings.
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
void avcodec_free_context(AVCodecContext **avctx)
Free the codec context and everything associated with it and write NULL to the provided pointer...
#define AV_TIME_BASE_Q
Internal time base represented as fractional value.
AVIOContext * pb
I/O context.
static void xml_print_int(WriterContext *wctx, const char *key, long long int value)
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
main external API structure.
AVCodec * avcodec_find_decoder(enum AVCodecID id)
Find a registered decoder with a matching codec ID.
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
static const Writer csv_writer
static void print_color_trc(WriterContext *w, enum AVColorTransferCharacteristic color_trc)
static void show_error(WriterContext *w, int err)
void avsubtitle_free(AVSubtitle *sub)
Free all allocated data in the given subtitle struct.
static void ini_print_str(WriterContext *wctx, const char *key, const char *value)
#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
void av_hash_update(AVHashContext *ctx, const uint8_t *src, int len)
Update a hash context with additional data.
unsigned int nb_section_packet_frame
nb_section_packet or nb_section_frame according if is_packets_and_frames
int terminate_line[SECTION_MAX_NB_LEVELS]
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
Replacements for frequently missing libm functions.
static int show_value_unit
static int use_value_sexagesimal_format
#define print_duration_time(k, v, tb)
Describe the class of an AVClass context structure.
void av_hash_freep(AVHashContext **ctx)
Free hash context and set hash context pointer to NULL.
void av_hash_final_hex(struct AVHashContext *ctx, uint8_t *dst, int size)
Finalize a hash context and store the hexadecimal representation of the actual hash value as a string...
static av_const int av_toupper(int c)
Locale-independent conversion of ASCII characters to uppercase.
int32_t roll
Rotation around the forward vector [-180, 180].
#define DEFINE_WRITER_CLASS(name)
Rational number (pair of numerator and denominator).
static const struct @26 si_prefixes[]
#define AV_OPT_FLAG_DECODING_PARAM
a generic parameter which can be set by the user for demuxing or decoding
Recommmends skipping the specified number of samples.
static LogBuffer * log_buffer
size_t av_strlcatf(char *dst, size_t size, const char *fmt,...)
const char * name
Name of the codec described by this descriptor.
enum AVChromaLocation chroma_location
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
int64_t best_effort_timestamp
frame timestamp estimated using various heuristics, in stream time base
static void ffprobe_cleanup(int ret)
#define SECTION_FLAG_IS_ARRAY
the section contains an array of elements of the same type
static int log_buffer_size
This structure describes how to handle spherical videos, outlining information about projection...
static const AVOption compact_options[]
static void print_color_space(WriterContext *w, enum AVColorSpace color_space)
#define REALLOCZ_ARRAY_STREAM(ptr, cur_n, new_n)
int64_t end
start, end in second/AV_TIME_BASE units
int av_read_frame(AVFormatContext *s, AVPacket *pkt)
Return the next frame of a stream.
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.
const char * av_frame_side_data_name(enum AVFrameSideDataType type)
This struct describes the properties of a single codec described by an AVCodecID. ...
unsigned int string_validation_utf8_flags
static void writer_print_ts(WriterContext *wctx, const char *key, int64_t ts, int is_duration)
static uint64_t * nb_streams_packets
enum AVFrameSideDataType type
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.
static void ffprobe_show_library_versions(WriterContext *w)
static int use_value_prefix
int64_t start_time
Position of the first frame of the component, in AV_TIME_BASE fractional seconds. ...
const AVClass * priv_class
AVClass for the private context.
static int swscale(SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
static void flat_print_section_header(WriterContext *wctx)
int av_strerror(int errnum, char *errbuf, size_t errbuf_size)
Put a description of the AVERROR code errnum in errbuf.
static char * upcase_string(char *dst, size_t dst_size, const char *src)
void av_bprint_clear(AVBPrint *buf)
Reset the string to "" but keep internal allocated data.
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()...
int64_t duration
Decoding: duration of the stream, in stream time base.
static char * show_data_hash
static const OptionDef * options
int sample_rate
Audio only.
static int do_show_pixel_formats
int64_t pkt_dts
DTS copied from the AVPacket that triggered returning this frame.
void avdevice_register_all(void)
Initialize libavdevice and register all the input and output devices.
static int writer_print_string(WriterContext *wctx, const char *key, const char *val, int flags)
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...
AVPacketSideData * side_data
Additional packet data that can be provided by the container.
attribute_deprecated int64_t convergence_duration
void av_opt_free(void *obj)
Free all allocated objects in obj.
#define AV_PKT_FLAG_DISCARD
Flag is used to discard packets which are required to maintain valid decoder state but are not requir...
AVDictionary * codec_opts
static void xml_print_section_header(WriterContext *wctx)
static int do_show_stream_disposition
int flags
For these sections the element_name field is mandatory.
enum AVSphericalProjection projection
Projection type.
void(* print_section_header)(WriterContext *wctx)
static void default_print_str(WriterContext *wctx, const char *key, const char *value)
static int do_count_packets
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
Read packets of a media file to get stream information.
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base...
int profile
Codec-specific bitstream restrictions that the stream conforms to.
const char * av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
static const char unit_second_str[]
static AVCodecContext * dec_ctx
static int parse_read_interval(const char *interval_spec, ReadInterval *interval)
Parse interval specification, according to the format: INTERVAL ::= [START|+START_OFFSET][%[END|+END_...
uint32_t start_display_time
union unit_value::@27 val
static av_cold int flat_init(WriterContext *wctx)
int parent_log_context_offset
Offset in the structure where a pointer to the parent context for logging is stored.
AVRational time_base
time base in which the start/end timestamps are specified
void av_init_packet(AVPacket *pkt)
Initialize optional fields of a packet with default values.
int64_t nb_frames
number of frames in this stream if known or 0
void uninit_opts(void)
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents...
static const AVOption csv_options[]
struct AVInputFormat * iformat
The input container format.
static void show_subtitle(WriterContext *w, AVSubtitle *sub, AVStream *stream, AVFormatContext *fmt_ctx)
static const char * flat_escape_key_str(AVBPrint *dst, const char *src, const char sep)
void avformat_close_input(AVFormatContext **s)
Close an opened input AVFormatContext.
static int opt_show_entries(void *optctx, const char *opt, const char *arg)
static const AVOption flat_options[]
static int do_show_program_version
static int use_byte_value_binary_prefix
int av_opt_get(void *obj, const char *name, int search_flags, uint8_t **out_val)
#define AVERROR_OPTION_NOT_FOUND
Option not found.
#define PRINT_STRING_VALIDATE
int top_field_first
If the content is interlaced, is top field displayed first.
#define print_str_validate(k, v)
static int do_show_frame_tags
void(* print_rational)(WriterContext *wctx, AVRational *q, char *sep)
static const AVOption ini_options[]
void av_log_set_flags(int arg)
#define CHECK_COMPLIANCE(opt, opt_name)
int key_frame
1 -> keyframe, 0-> not
int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options)
Open an input stream and read the header.
static const char * none_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
void show_help_children(const AVClass *class, int flags)
Show help for all options with given flags in class and all its children.
static void json_print_str(WriterContext *wctx, const char *key, const char *value)
static void ini_print_int(WriterContext *wctx, const char *key, long long int value)
enum AVColorPrimaries color_primaries
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
#define print_val(k, v, u)
int64_t dts
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed...
static char * stream_specifier
const char * av_packet_side_data_name(enum AVPacketSideDataType type)
double av_display_rotation_get(const int32_t matrix[9])
Extract the rotation component of the transformation matrix.
#define print_time(k, v, tb)
int64_t duration
Duration of the stream, in AV_TIME_BASE fractional seconds.
static void default_print_section_footer(WriterContext *wctx)
#define AV_DICT_IGNORE_SUFFIX
Return first entry in a dictionary whose first part corresponds to the search key, ignoring the suffix of the found key string.
static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int packet_idx)
AVChromaLocation
Location of chroma samples.
enum AVColorTransferCharacteristic color_trc
AVCodecParameters * codecpar
Codec parameters associated with this stream.
#define av_malloc_array(a, b)
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC).
static int show_programs(WriterContext *w, InputFile *ifile)
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.
int main(int argc, char **argv)
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
int depth
Number of bits in the component.
const Writer * writer
the Writer of which this is an instance
enum AVDiscard discard
Selects which packets can be discarded at will and do not need to be demuxed.
int pkt_size
size of the corresponding packet containing the compressed frame.
static void clear_log(int need_lock)
AVRational r_frame_rate
Real base framerate of the stream.
static const Writer * writer_get_by_name(const char *name)
const char * unique_name
unique section name, in case the name is ambiguous
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
This structure stores compressed data.
unsigned MaxFALL
Max average light level per frame (cd/m^2).
const char * avcodec_profile_name(enum AVCodecID codec_id, int profile)
Return a name for the specified profile, if available.
const char * av_spherical_projection_name(enum AVSphericalProjection projection)
Provide a human-readable name of a given AVSphericalProjection.
int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
#define DEFINE_OPT_SHOW_SECTION(section, target_section_id)
int nb_samples
number of audio samples (per channel) described by this frame
#define MAX_REGISTERED_WRITERS_NB
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
static void writer_print_section_footer(WriterContext *wctx)
#define AV_NOPTS_VALUE
Undefined timestamp value.
#define AV_TIMECODE_STR_SIZE
const AVPixFmtDescriptor * av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
Iterate over all pixel format descriptors known to libavutil.
void * av_mallocz_array(size_t nmemb, size_t size)
static int do_show_streams
#define print_section_header(s)
static void print_primaries(WriterContext *w, enum AVColorPrimaries color_primaries)
void av_bprint_chars(AVBPrint *buf, char c, unsigned n)
Append char c n times to a print buffer.
int flags
a combination or WRITER_FLAG_*