|
|
@ -40,6 +40,7 @@ |
|
|
|
#include "libavutil/avassert.h" |
|
|
|
#include "libavutil/avassert.h" |
|
|
|
#include "libavutil/avstring.h" |
|
|
|
#include "libavutil/avstring.h" |
|
|
|
#include "libavutil/bprint.h" |
|
|
|
#include "libavutil/bprint.h" |
|
|
|
|
|
|
|
#include "libavutil/channel_layout.h" |
|
|
|
#include "libavutil/display.h" |
|
|
|
#include "libavutil/display.h" |
|
|
|
#include "libavutil/hash.h" |
|
|
|
#include "libavutil/hash.h" |
|
|
|
#include "libavutil/hdr_dynamic_metadata.h" |
|
|
|
#include "libavutil/hdr_dynamic_metadata.h" |
|
|
@ -1688,9 +1689,9 @@ static void xml_print_section_header(WriterContext *wctx) |
|
|
|
wctx->section[wctx->level-1] : NULL; |
|
|
|
wctx->section[wctx->level-1] : NULL; |
|
|
|
|
|
|
|
|
|
|
|
if (wctx->level == 0) { |
|
|
|
if (wctx->level == 0) { |
|
|
|
const char *qual = " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " |
|
|
|
const char *qual = " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " |
|
|
|
"xmlns:ffprobe='http://www.ffmpeg.org/schema/ffprobe' " |
|
|
|
"xmlns:ffprobe=\"http://www.ffmpeg.org/schema/ffprobe\" " |
|
|
|
"xsi:schemaLocation='http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd'"; |
|
|
|
"xsi:schemaLocation=\"http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd\""; |
|
|
|
|
|
|
|
|
|
|
|
av_log(NULL, AV_LOG_STDERR, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); |
|
|
|
av_log(NULL, AV_LOG_STDERR, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); |
|
|
|
av_log(NULL, AV_LOG_STDERR, "<%sffprobe%s>\n", |
|
|
|
av_log(NULL, AV_LOG_STDERR, "<%sffprobe%s>\n", |
|
|
@ -2032,7 +2033,7 @@ static void print_pkt_side_data(WriterContext *w, |
|
|
|
print_int("dv_bl_signal_compatibility_id", dovi->dv_bl_signal_compatibility_id); |
|
|
|
print_int("dv_bl_signal_compatibility_id", dovi->dv_bl_signal_compatibility_id); |
|
|
|
} else if (sd->type == AV_PKT_DATA_AUDIO_SERVICE_TYPE) { |
|
|
|
} else if (sd->type == AV_PKT_DATA_AUDIO_SERVICE_TYPE) { |
|
|
|
enum AVAudioServiceType *t = (enum AVAudioServiceType *)sd->data; |
|
|
|
enum AVAudioServiceType *t = (enum AVAudioServiceType *)sd->data; |
|
|
|
print_int("type", *t); |
|
|
|
print_int("service_type", *t); |
|
|
|
} else if (sd->type == AV_PKT_DATA_MPEGTS_STREAM_ID) { |
|
|
|
} else if (sd->type == AV_PKT_DATA_MPEGTS_STREAM_ID) { |
|
|
|
print_int("id", *sd->data); |
|
|
|
print_int("id", *sd->data); |
|
|
|
} else if (sd->type == AV_PKT_DATA_CPB_PROPERTIES) { |
|
|
|
} else if (sd->type == AV_PKT_DATA_CPB_PROPERTIES) { |
|
|
@ -2248,8 +2249,8 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream, |
|
|
|
else print_str_opt("media_type", "unknown"); |
|
|
|
else print_str_opt("media_type", "unknown"); |
|
|
|
print_int("stream_index", stream->index); |
|
|
|
print_int("stream_index", stream->index); |
|
|
|
print_int("key_frame", frame->key_frame); |
|
|
|
print_int("key_frame", frame->key_frame); |
|
|
|
print_ts ("pkt_pts", frame->pts); |
|
|
|
print_ts ("pts", frame->pts); |
|
|
|
print_time("pkt_pts_time", frame->pts, &stream->time_base); |
|
|
|
print_time("pts_time", frame->pts, &stream->time_base); |
|
|
|
print_ts ("pkt_dts", frame->pkt_dts); |
|
|
|
print_ts ("pkt_dts", frame->pkt_dts); |
|
|
|
print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base); |
|
|
|
print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base); |
|
|
|
print_ts ("best_effort_timestamp", frame->best_effort_timestamp); |
|
|
|
print_ts ("best_effort_timestamp", frame->best_effort_timestamp); |
|
|
@ -3081,8 +3082,7 @@ static void close_input_file(InputFile *ifile) |
|
|
|
|
|
|
|
|
|
|
|
/* close decoder for each stream */ |
|
|
|
/* close decoder for each stream */ |
|
|
|
for (i = 0; i < ifile->nb_streams; i++) |
|
|
|
for (i = 0; i < ifile->nb_streams; i++) |
|
|
|
if (ifile->streams[i].st->codecpar->codec_id != AV_CODEC_ID_NONE) |
|
|
|
avcodec_free_context(&ifile->streams[i].dec_ctx); |
|
|
|
avcodec_free_context(&ifile->streams[i].dec_ctx); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
av_freep(&ifile->streams); |
|
|
|
av_freep(&ifile->streams); |
|
|
|
ifile->nb_streams = 0; |
|
|
|
ifile->nb_streams = 0; |
|
|
@ -3747,6 +3747,7 @@ int ffprobe_execute(int argc, char **argv) |
|
|
|
{ "report", 0, { .func_arg = opt_report }, "generate a report" }, |
|
|
|
{ "report", 0, { .func_arg = opt_report }, "generate a report" }, |
|
|
|
{ "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" }, |
|
|
|
{ "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" }, |
|
|
|
{ "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" }, |
|
|
|
{ "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" }, |
|
|
|
|
|
|
|
{ "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" }, |
|
|
|
{ "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" }, |
|
|
|
{ "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" }, |
|
|
|
|
|
|
|
|
|
|
|
#if CONFIG_AVDEVICE |
|
|
|
#if CONFIG_AVDEVICE |
|
|
@ -3830,7 +3831,6 @@ int ffprobe_execute(int argc, char **argv) |
|
|
|
ffprobe_options = options; |
|
|
|
ffprobe_options = options; |
|
|
|
parse_loglevel(argc, argv, options); |
|
|
|
parse_loglevel(argc, argv, options); |
|
|
|
avformat_network_init(); |
|
|
|
avformat_network_init(); |
|
|
|
init_opts(); |
|
|
|
|
|
|
|
#if CONFIG_AVDEVICE |
|
|
|
#if CONFIG_AVDEVICE |
|
|
|
avdevice_register_all(); |
|
|
|
avdevice_register_all(); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|