X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffprobe.c;h=577fed3e39a045e71a7aa7d5d6d5567ef66b2bfe;hb=9aeaf629038c572073e836277cd1fa981465dd6c;hp=886459419643a351ddbf663a3f4bb3bb6598302d;hpb=95d6e5bdd58d5caaa52c57bad1e1d87df59fb7f8;p=ffmpeg diff --git a/ffprobe.c b/ffprobe.c index 88645941964..577fed3e39a 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -141,7 +141,7 @@ typedef struct Writer { void (*print_chapter_footer)(WriterContext *wctx, const char *); void (*print_section_header)(WriterContext *wctx, const char *); void (*print_section_footer)(WriterContext *wctx, const char *); - void (*print_integer) (WriterContext *wctx, const char *, int); + void (*print_integer) (WriterContext *wctx, const char *, long long int); void (*print_string) (WriterContext *wctx, const char *, const char *); void (*show_tags) (WriterContext *wctx, AVDictionary *dict); int flags; ///< a combination or WRITER_FLAG_* @@ -254,7 +254,7 @@ static inline void writer_print_section_footer(WriterContext *wctx, } static inline void writer_print_integer(WriterContext *wctx, - const char *key, int val) + const char *key, long long int val) { wctx->writer->print_integer(wctx, key, val); wctx->nb_item++; @@ -285,13 +285,10 @@ static void writer_print_time(WriterContext *wctx, const char *key, static void writer_print_ts(WriterContext *wctx, const char *key, int64_t ts) { - char buf[128]; - if (ts == AV_NOPTS_VALUE) { writer_print_string(wctx, key, "N/A", 1); } else { - snprintf(buf, sizeof(buf), "%"PRId64, ts); - writer_print_string(wctx, key, buf, 0); + writer_print_integer(wctx, key, ts); } } @@ -436,9 +433,9 @@ static void default_print_str(WriterContext *wctx, const char *key, const char * printf("%s=%s\n", key, value); } -static void default_print_int(WriterContext *wctx, const char *key, int value) +static void default_print_int(WriterContext *wctx, const char *key, long long int value) { - printf("%s=%d\n", key, value); + printf("%s=%lld\n", key, value); } static void default_show_tags(WriterContext *wctx, AVDictionary *dict) @@ -649,14 +646,14 @@ static void compact_print_str(WriterContext *wctx, const char *key, const char * value, compact->item_sep, wctx)); } -static void compact_print_int(WriterContext *wctx, const char *key, int value) +static void compact_print_int(WriterContext *wctx, const char *key, long long int value) { CompactContext *compact = wctx->priv; if (wctx->nb_item) printf("%c", compact->item_sep); if (!compact->nokey) printf("%s=", key); - printf("%d", value); + printf("%lld", value); } static void compact_show_tags(WriterContext *wctx, AVDictionary *dict) @@ -825,12 +822,12 @@ static void json_print_str(WriterContext *wctx, const char *key, const char *val json_print_item_str(wctx, key, value, INDENT); } -static void json_print_int(WriterContext *wctx, const char *key, int value) +static void json_print_int(WriterContext *wctx, const char *key, long long int value) { JSONContext *json = wctx->priv; if (wctx->nb_item) printf(",\n"); - printf(INDENT "\"%s\": %d", + printf(INDENT "\"%s\": %lld", json_escape_str(&json->buf, &json->buf_size, key, wctx), value); } @@ -895,7 +892,7 @@ static void writer_register_all(void) #define print_time(k, v, tb) writer_print_time(w, k, v, tb) #define print_ts(k, v) writer_print_ts(w, k, v) #define print_val(k, v, u) writer_print_string(w, k, \ - value_string(val_str, sizeof(val_str), (struct unit_value){.val.i = v, .unit=u}), 1) + value_string(val_str, sizeof(val_str), (struct unit_value){.val.i = v, .unit=u}), 0) #define print_section_header(s) writer_print_section_header(w, s) #define print_section_footer(s) writer_print_section_footer(w, s) #define show_tags(metadata) writer_show_tags(w, metadata) @@ -996,6 +993,17 @@ static void show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_i if (s) print_str ("pix_fmt", s); else print_str_opt("pix_fmt", "unknown"); print_int("level", dec_ctx->level); + if (dec_ctx->timecode_frame_start >= 0) { + uint32_t tc = dec_ctx->timecode_frame_start; + print_fmt("timecode", "%02d:%02d:%02d%c%02d", + tc>>19 & 0x1f, // hours + tc>>13 & 0x3f, // minutes + tc>>6 & 0x3f, // seconds + tc & 1<<24 ? ';' : ':', // drop + tc & 0x3f); // frames + } else { + print_str_opt("timecode", "N/A"); + } break; case AVMEDIA_TYPE_AUDIO: @@ -1152,7 +1160,7 @@ static int probe_file(const char *filename) PRINT_CHAPTER(format); writer_print_footer(wctx); - av_close_input_file(fmt_ctx); + avformat_close_input(&fmt_ctx); writer_close(&wctx); end: