FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
ffprobe.c File Reference

simple media prober based on the FFmpeg libraries More...

#include "config.h"
#include "version.h"
#include <string.h>
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/dict.h"
#include "libavutil/libm.h"
#include "libavutil/timecode.h"
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libswresample/swresample.h"
#include "libpostproc/postprocess.h"
#include "cmdutils.h"
#include "cmdutils_common_opts.h"

Go to the source code of this file.

Data Structures

struct  section
 
struct  unit_value
 
struct  Writer
 
struct  WriterContext
 
struct  DefaultContext
 
struct  CompactContext
 
struct  FlatContext
 
struct  INIContext
 
struct  JSONContext
 
struct  XMLContext
 

Macros

#define SECTION_MAX_NB_CHILDREN   10
 
#define SECTION_FLAG_IS_WRAPPER   1
 the section only contains other sections, but has no data at its own level
 
#define SECTION_FLAG_IS_ARRAY   2
 the section contains an array of elements of the same type
 
#define SECTION_FLAG_HAS_VARIABLE_FIELDS   4
 the section may contain a variable number of fields with variable keys.
 
#define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS   1
 
#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER   2
 
#define SECTION_MAX_NB_LEVELS   10
 
#define MAX_REGISTERED_WRITERS_NB   64
 
#define DEFINE_WRITER_CLASS(name)
 
#define OFFSET(x)   offsetof(DefaultContext, x)
 
#define OFFSET(x)   offsetof(CompactContext, x)
 
#define OFFSET(x)   offsetof(CompactContext, x)
 
#define OFFSET(x)   offsetof(FlatContext, x)
 
#define OFFSET(x)   offsetof(INIContext, x)
 
#define OFFSET(x)   offsetof(JSONContext, x)
 
#define JSON_INDENT()   printf("%*c", json->indent_level * 4, ' ')
 
#define OFFSET(x)   offsetof(XMLContext, x)
 
#define CHECK_COMPLIANCE(opt, opt_name)
 
#define XML_INDENT()   printf("%*c", xml->indent_level * 4, ' ')
 
#define print_fmt(k, f,...)
 
#define print_int(k, v)   writer_print_integer(w, k, v)
 
#define print_q(k, v, s)   writer_print_rational(w, k, v, s)
 
#define print_str(k, v)   writer_print_string(w, k, v, 0)
 
#define print_str_opt(k, v)   writer_print_string(w, k, v, 1)
 
#define print_time(k, v, tb)   writer_print_time(w, k, v, tb, 0)
 
#define print_ts(k, v)   writer_print_ts(w, k, v, 0)
 
#define print_duration_time(k, v, tb)   writer_print_time(w, k, v, tb, 1)
 
#define print_duration_ts(k, v)   writer_print_ts(w, k, v, 1)
 
#define print_val(k, v, u)
 
#define print_section_header(s)   writer_print_section_header(w, s)
 
#define print_section_footer(s)   writer_print_section_footer(w, s)
 
#define PRINT_DISPOSITION(flagname, name)
 
#define SHOW_LIB_VERSION(libname, LIBNAME)
 
#define DEFINE_OPT_SHOW_SECTION(section, target_section_id)
 
#define SET_DO_SHOW(id, varname)
 

Enumerations

enum  SectionID {
  SECTION_ID_NONE = -1, SECTION_ID_CHAPTER, SECTION_ID_CHAPTER_TAGS, SECTION_ID_CHAPTERS,
  SECTION_ID_ERROR, SECTION_ID_FORMAT, SECTION_ID_FORMAT_TAGS, SECTION_ID_FRAME,
  SECTION_ID_FRAMES, SECTION_ID_FRAME_TAGS, SECTION_ID_LIBRARY_VERSION, SECTION_ID_LIBRARY_VERSIONS,
  SECTION_ID_PACKET, SECTION_ID_PACKETS, SECTION_ID_PACKETS_AND_FRAMES, SECTION_ID_PROGRAM_VERSION,
  SECTION_ID_ROOT, SECTION_ID_STREAM, SECTION_ID_STREAM_DISPOSITION, SECTION_ID_STREAMS,
  SECTION_ID_STREAM_TAGS
}
 

Functions

static void ffprobe_cleanup (int ret)
 
static char * value_string (char *buf, int buf_size, struct unit_value uv)
 
static const char * writer_get_name (void *p)
 
static void writer_close (WriterContext **wctx)
 
static int writer_open (WriterContext **wctx, const Writer *writer, const char *args, const struct section *sections, int nb_sections)
 
static void writer_print_section_header (WriterContext *wctx, int section_id)
 
static void writer_print_section_footer (WriterContext *wctx)
 
static void writer_print_integer (WriterContext *wctx, const char *key, long long int val)
 
static void writer_print_string (WriterContext *wctx, const char *key, const char *val, int opt)
 
static void writer_print_rational (WriterContext *wctx, const char *key, AVRational q, char sep)
 
static void writer_print_time (WriterContext *wctx, const char *key, int64_t ts, const AVRational *time_base, int is_duration)
 
static void writer_print_ts (WriterContext *wctx, const char *key, int64_t ts, int is_duration)
 
static void writer_print_data (WriterContext *wctx, const char *name, uint8_t *data, int size)
 
static int writer_register (const Writer *writer)
 
static const Writerwriter_get_by_name (const char *name)
 
 DEFINE_WRITER_CLASS (default)
 
static char * upcase_string (char *dst, size_t dst_size, const char *src)
 
static void default_print_section_header (WriterContext *wctx)
 
static void default_print_section_footer (WriterContext *wctx)
 
static void default_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void default_print_int (WriterContext *wctx, const char *key, long long int value)
 
static const char * c_escape_str (AVBPrint *dst, const char *src, const char sep, void *log_ctx)
 Apply C-language-like string escaping.
 
static const char * csv_escape_str (AVBPrint *dst, const char *src, const char sep, void *log_ctx)
 Quote fields containing special characters, check RFC4180.
 
static const char * none_escape_str (AVBPrint *dst, const char *src, const char sep, void *log_ctx)
 
 DEFINE_WRITER_CLASS (compact)
 
static av_cold int compact_init (WriterContext *wctx)
 
static void compact_print_section_header (WriterContext *wctx)
 
static void compact_print_section_footer (WriterContext *wctx)
 
static void compact_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void compact_print_int (WriterContext *wctx, const char *key, long long int value)
 
 DEFINE_WRITER_CLASS (csv)
 
 DEFINE_WRITER_CLASS (flat)
 
static av_cold int flat_init (WriterContext *wctx)
 
static const char * flat_escape_key_str (AVBPrint *dst, const char *src, const char sep)
 
static const char * flat_escape_value_str (AVBPrint *dst, const char *src)
 
static void flat_print_section_header (WriterContext *wctx)
 
static void flat_print_int (WriterContext *wctx, const char *key, long long int value)
 
static void flat_print_str (WriterContext *wctx, const char *key, const char *value)
 
 DEFINE_WRITER_CLASS (ini)
 
static char * ini_escape_str (AVBPrint *dst, const char *src)
 
static void ini_print_section_header (WriterContext *wctx)
 
static void ini_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void ini_print_int (WriterContext *wctx, const char *key, long long int value)
 
 DEFINE_WRITER_CLASS (json)
 
static av_cold int json_init (WriterContext *wctx)
 
static const char * json_escape_str (AVBPrint *dst, const char *src, void *log_ctx)
 
static void json_print_section_header (WriterContext *wctx)
 
static void json_print_section_footer (WriterContext *wctx)
 
static void json_print_item_str (WriterContext *wctx, const char *key, const char *value)
 
static void json_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void json_print_int (WriterContext *wctx, const char *key, long long int value)
 
 DEFINE_WRITER_CLASS (xml)
 
static av_cold int xml_init (WriterContext *wctx)
 
static const char * xml_escape_str (AVBPrint *dst, const char *src, void *log_ctx)
 
static void xml_print_section_header (WriterContext *wctx)
 
static void xml_print_section_footer (WriterContext *wctx)
 
static void xml_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void xml_print_int (WriterContext *wctx, const char *key, long long int value)
 
static void writer_register_all (void)
 
static void show_tags (WriterContext *wctx, AVDictionary *tags, int section_id)
 
static void show_packet (WriterContext *w, AVFormatContext *fmt_ctx, AVPacket *pkt, int packet_idx)
 
static void show_frame (WriterContext *w, AVFrame *frame, AVStream *stream, AVFormatContext *fmt_ctx)
 
static av_always_inline int process_frame (WriterContext *w, AVFormatContext *fmt_ctx, AVFrame *frame, AVPacket *pkt)
 
static void read_packets (WriterContext *w, AVFormatContext *fmt_ctx)
 
static void show_stream (WriterContext *w, AVFormatContext *fmt_ctx, int stream_idx)
 
static void show_streams (WriterContext *w, AVFormatContext *fmt_ctx)
 
static void show_chapters (WriterContext *w, AVFormatContext *fmt_ctx)
 
static void show_format (WriterContext *w, AVFormatContext *fmt_ctx)
 
static void show_error (WriterContext *w, int err)
 
static int open_input_file (AVFormatContext **fmt_ctx_ptr, const char *filename)
 
static void close_input_file (AVFormatContext **ctx_ptr)
 
static int probe_file (WriterContext *wctx, const char *filename)
 
static void show_usage (void)
 
static void ffprobe_show_program_version (WriterContext *w)
 
static void ffprobe_show_library_versions (WriterContext *w)
 
static int opt_format (void *optctx, const char *opt, const char *arg)
 
static void mark_section_show_entries (SectionID section_id, int show_all_entries, AVDictionary *entries)
 
static int match_section (const char *section_name, int show_all_entries, AVDictionary *entries)
 
static int opt_show_entries (void *optctx, const char *opt, const char *arg)
 
static int opt_show_format_entry (void *optctx, const char *opt, const char *arg)
 
static void opt_input_file (void *optctx, const char *arg)
 
static int opt_input_file_i (void *optctx, const char *opt, const char *arg)
 
void show_help_default (const char *opt, const char *arg)
 Per-fftool specific help handler.
 
static int opt_pretty (void *optctx, const char *opt, const char *arg)
 
static void print_section (SectionID id, int level)
 
static int opt_sections (void *optctx, const char *opt, const char *arg)
 
static int opt_show_versions (const char *opt, const char *arg)
 
 DEFINE_OPT_SHOW_SECTION (chapters, CHAPTERS)
 
 DEFINE_OPT_SHOW_SECTION (error, ERROR)
 
 DEFINE_OPT_SHOW_SECTION (format, FORMAT)
 
 DEFINE_OPT_SHOW_SECTION (frames, FRAMES)
 
 DEFINE_OPT_SHOW_SECTION (library_versions, LIBRARY_VERSIONS)
 
 DEFINE_OPT_SHOW_SECTION (packets, PACKETS)
 
 DEFINE_OPT_SHOW_SECTION (program_version, PROGRAM_VERSION)
 
 DEFINE_OPT_SHOW_SECTION (streams, STREAMS)
 
static int check_section_show_entries (int section_id)
 
int main (int argc, char **argv)
 

Variables

const char program_name [] = "ffprobe"
 program name, defined by the program for show_version().
 
const int program_birth_year = 2007
 program birth year, defined by the program for show_banner()
 
static int do_bitexact = 0
 
static int do_count_frames = 0
 
static int do_count_packets = 0
 
static int do_read_frames = 0
 
static int do_read_packets = 0
 
static int do_show_chapters = 0
 
static int do_show_error = 0
 
static int do_show_format = 0
 
static int do_show_frames = 0
 
static int do_show_packets = 0
 
static int do_show_streams = 0
 
static int do_show_stream_disposition = 0
 
static int do_show_data = 0
 
static int do_show_program_version = 0
 
static int do_show_library_versions = 0
 
static int show_value_unit = 0
 
static int use_value_prefix = 0
 
static int use_byte_value_binary_prefix = 0
 
static int use_value_sexagesimal_format = 0
 
static int show_private_data = 1
 
static char * print_format
 
static char * stream_specifier
 
static struct section sections []
 
static const OptionDefoptions
 
static const char * input_filename
 
static AVInputFormatiformat = NULL
 
static const char *const binary_unit_prefixes [] = { "", "Ki", "Mi", "Gi", "Ti", "Pi" }
 
static const char *const decimal_unit_prefixes [] = { "", "K" , "M" , "G" , "T" , "P" }
 
static const char unit_second_str [] = "s"
 
static const char unit_hertz_str [] = "Hz"
 
static const char unit_byte_str [] = "byte"
 
static const char unit_bit_per_second_str [] = "bit/s"
 
static uint64_t * nb_streams_packets
 
static uint64_t * nb_streams_frames
 
static int * selected_streams
 
static const AVClass writer_class
 
static const Writerregistered_writers [MAX_REGISTERED_WRITERS_NB+1]
 
static const AVOption default_options []
 
static const Writer default_writer
 
static const AVOption compact_options []
 
static const Writer compact_writer
 
static const AVOption csv_options []
 
static const Writer csv_writer
 
static const AVOption flat_options []
 
static const Writer flat_writer
 
static const AVOption ini_options []
 
static const Writer ini_writer
 
static const AVOption json_options []
 
static const Writer json_writer
 
static const AVOption xml_options []
 
static Writer xml_writer
 
static const OptionDef real_options []
 

Detailed Description

simple media prober based on the FFmpeg libraries

Definition in file ffprobe.c.

Macro Definition Documentation

#define SECTION_MAX_NB_CHILDREN   10

Definition at line 77 of file ffprobe.c.

#define SECTION_FLAG_IS_WRAPPER   1
#define SECTION_FLAG_IS_ARRAY   2
#define SECTION_FLAG_HAS_VARIABLE_FIELDS   4

the section may contain a variable number of fields with variable keys.

Definition at line 85 of file ffprobe.c.

Referenced by print_section(), xml_print_section_footer(), xml_print_section_header(), and xml_print_str().

#define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS   1

Definition at line 230 of file ffprobe.c.

Referenced by writer_print_string().

#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER   2

Definition at line 231 of file ffprobe.c.

Referenced by probe_file().

#define SECTION_MAX_NB_LEVELS   10

Definition at line 249 of file ffprobe.c.

Referenced by writer_close(), writer_open(), and writer_print_section_header().

#define MAX_REGISTERED_WRITERS_NB   64

Definition at line 480 of file ffprobe.c.

Referenced by writer_register().

#define DEFINE_WRITER_CLASS (   name)
Value:
static const char *name##_get_name(void *ctx) \
{ \
return #name ; \
} \
static const AVClass name##_class = { \
#name, \
name##_get_name, \
name##_options \
}

Definition at line 509 of file ffprobe.c.

#define OFFSET (   x)    offsetof(DefaultContext, x)

Definition at line 1215 of file ffprobe.c.

#define OFFSET (   x)    offsetof(CompactContext, x)

Definition at line 1215 of file ffprobe.c.

#define OFFSET (   x)    offsetof(CompactContext, x)

Definition at line 1215 of file ffprobe.c.

#define OFFSET (   x)    offsetof(FlatContext, x)

Definition at line 1215 of file ffprobe.c.

#define OFFSET (   x)    offsetof(INIContext, x)

Definition at line 1215 of file ffprobe.c.

#define OFFSET (   x)    offsetof(JSONContext, x)

Definition at line 1215 of file ffprobe.c.

#define JSON_INDENT ( )    printf("%*c", json->indent_level * 4, ' ')
#define OFFSET (   x)    offsetof(XMLContext, x)

Definition at line 1215 of file ffprobe.c.

#define CHECK_COMPLIANCE (   opt,
  opt_name 
)
Value:
if (opt) { \
av_log(wctx, AV_LOG_ERROR, \
"XSD-compliant output selected but option '%s' was selected, XML output may be non-compliant.\n" \
"You need to disable such option with '-no%s'\n", opt_name, opt_name); \
return AVERROR(EINVAL); \
}

Referenced by xml_init().

#define XML_INDENT ( )    printf("%*c", xml->indent_level * 4, ' ')

Definition at line 1273 of file ffprobe.c.

Referenced by xml_print_section_footer(), xml_print_section_header(), and xml_print_str().

#define print_fmt (   k,
  f,
  ... 
)
Value:
do { \
av_bprint_clear(&pbuf); \
av_bprintf(&pbuf, f, __VA_ARGS__); \
writer_print_string(w, k, pbuf.str, 0); \
} while (0)

Definition at line 1393 of file ffprobe.c.

Referenced by ffprobe_show_program_version(), show_frame(), show_packet(), and show_stream().

#define print_int (   k,
  v 
)    writer_print_integer(w, k, v)

Definition at line 1399 of file ffprobe.c.

Referenced by show_chapters(), show_error(), show_format(), show_frame(), show_packet(), and show_stream().

#define print_q (   k,
  v,
  s 
)    writer_print_rational(w, k, v, s)

Definition at line 1400 of file ffprobe.c.

Referenced by show_chapters(), show_frame(), and show_stream().

#define print_str (   k,
  v 
)    writer_print_string(w, k, v, 0)
#define print_str_opt (   k,
  v 
)    writer_print_string(w, k, v, 1)

Definition at line 1402 of file ffprobe.c.

Referenced by show_format(), show_frame(), show_packet(), and show_stream().

#define print_time (   k,
  v,
  tb 
)    writer_print_time(w, k, v, tb, 0)

Definition at line 1403 of file ffprobe.c.

Referenced by show_chapters(), show_format(), show_frame(), show_packet(), and show_stream().

#define print_ts (   k,
  v 
)    writer_print_ts(w, k, v, 0)

Definition at line 1404 of file ffprobe.c.

Referenced by show_frame(), show_packet(), and show_stream().

#define print_duration_time (   k,
  v,
  tb 
)    writer_print_time(w, k, v, tb, 1)

Definition at line 1405 of file ffprobe.c.

Referenced by show_frame(), and show_packet().

#define print_duration_ts (   k,
  v 
)    writer_print_ts(w, k, v, 1)

Definition at line 1406 of file ffprobe.c.

Referenced by show_frame(), and show_packet().

#define print_val (   k,
  v,
  u 
)
Value:
do { \
struct unit_value uv; \
uv.val.i = v; \
uv.unit = u; \
writer_print_string(w, k, value_string(val_str, sizeof(val_str), uv), 0); \
} while (0)

Definition at line 1407 of file ffprobe.c.

Referenced by show_format(), show_packet(), and show_stream().

#define print_section_header (   s)    writer_print_section_header(w, s)

Definition at line 1414 of file ffprobe.c.

#define print_section_footer (   s)    writer_print_section_footer(w, s)

Definition at line 1415 of file ffprobe.c.

#define PRINT_DISPOSITION (   flagname,
  name 
)
Value:
do { \
print_int(name, !!(stream->disposition & AV_DISPOSITION_##flagname)); \
} while (0)

Referenced by show_stream().

#define SHOW_LIB_VERSION (   libname,
  LIBNAME 
)
Value:
do { \
if (CONFIG_##LIBNAME) { \
unsigned int version = libname##_version(); \
writer_print_section_header(w, SECTION_ID_LIBRARY_VERSION); \
print_str("name", "lib" #libname); \
print_int("major", LIB##LIBNAME##_VERSION_MAJOR); \
print_int("minor", LIB##LIBNAME##_VERSION_MINOR); \
print_int("micro", LIB##LIBNAME##_VERSION_MICRO); \
print_int("version", version); \
print_str("ident", LIB##LIBNAME##_IDENT); \
writer_print_section_footer(w); \
} \
} while (0)

Definition at line 1984 of file ffprobe.c.

Referenced by ffprobe_show_library_versions().

#define DEFINE_OPT_SHOW_SECTION (   section,
  target_section_id 
)
Value:
static int opt_show_##section(const char *opt, const char *arg) \
{ \
mark_section_show_entries(SECTION_ID_##target_section_id, 1, NULL); \
return 0; \
}

Definition at line 2194 of file ffprobe.c.

#define SET_DO_SHOW (   id,
  varname 
)
Value:
do { \
if (check_section_show_entries(SECTION_ID_##id)) \
do_show_##varname = 1; \
} while (0)

Definition at line 2262 of file ffprobe.c.

Referenced by main().

Enumeration Type Documentation

enum SectionID
Enumerator:
SECTION_ID_NONE 
SECTION_ID_CHAPTER 
SECTION_ID_CHAPTER_TAGS 
SECTION_ID_CHAPTERS 
SECTION_ID_ERROR 
SECTION_ID_FORMAT 
SECTION_ID_FORMAT_TAGS 
SECTION_ID_FRAME 
SECTION_ID_FRAMES 
SECTION_ID_FRAME_TAGS 
SECTION_ID_LIBRARY_VERSION 
SECTION_ID_LIBRARY_VERSIONS 
SECTION_ID_PACKET 
SECTION_ID_PACKETS 
SECTION_ID_PACKETS_AND_FRAMES 
SECTION_ID_PROGRAM_VERSION 
SECTION_ID_ROOT 
SECTION_ID_STREAM 
SECTION_ID_STREAM_DISPOSITION 
SECTION_ID_STREAMS 
SECTION_ID_STREAM_TAGS 

Definition at line 95 of file ffprobe.c.

Function Documentation

static void ffprobe_cleanup ( int  ret)
static

Definition at line 162 of file ffprobe.c.

Referenced by main().

static char* value_string ( char *  buf,
int  buf_size,
struct unit_value  uv 
)
static

Definition at line 174 of file ffprobe.c.

Referenced by writer_print_time().

static const char* writer_get_name ( void p)
static

Definition at line 275 of file ffprobe.c.

static void writer_close ( WriterContext **  wctx)
static

Definition at line 288 of file ffprobe.c.

Referenced by main(), and writer_open().

static int writer_open ( WriterContext **  wctx,
const Writer writer,
const char *  args,
const struct section sections,
int  nb_sections 
)
static

Definition at line 305 of file ffprobe.c.

Referenced by main().

static void writer_print_section_header ( WriterContext wctx,
int  section_id 
)
inlinestatic
static void writer_print_section_footer ( WriterContext wctx)
inlinestatic
static void writer_print_integer ( WriterContext wctx,
const char *  key,
long long int  val 
)
inlinestatic

Definition at line 392 of file ffprobe.c.

Referenced by writer_print_ts().

static void writer_print_string ( WriterContext wctx,
const char *  key,
const char *  val,
int  opt 
)
inlinestatic
static void writer_print_rational ( WriterContext wctx,
const char *  key,
AVRational  q,
char  sep 
)
inlinestatic

Definition at line 417 of file ffprobe.c.

static void writer_print_time ( WriterContext wctx,
const char *  key,
int64_t  ts,
const AVRational time_base,
int  is_duration 
)
static

Definition at line 426 of file ffprobe.c.

static void writer_print_ts ( WriterContext wctx,
const char *  key,
int64_t  ts,
int  is_duration 
)
static

Definition at line 443 of file ffprobe.c.

static void writer_print_data ( WriterContext wctx,
const char *  name,
uint8_t data,
int  size 
)
static

Definition at line 452 of file ffprobe.c.

Referenced by show_packet(), and show_stream().

static int writer_register ( const Writer writer)
static

Definition at line 484 of file ffprobe.c.

Referenced by writer_register_all().

static const Writer* writer_get_by_name ( const char *  name)
static

Definition at line 495 of file ffprobe.c.

Referenced by main().

DEFINE_WRITER_CLASS ( default  )
static char* upcase_string ( char *  dst,
size_t  dst_size,
const char *  src 
)
inlinestatic

Definition at line 542 of file ffprobe.c.

Referenced by default_print_section_footer(), and default_print_section_header().

static void default_print_section_header ( WriterContext wctx)
static

Definition at line 551 of file ffprobe.c.

static void default_print_section_footer ( WriterContext wctx)
static

Definition at line 576 of file ffprobe.c.

static void default_print_str ( WriterContext wctx,
const char *  key,
const char *  value 
)
static

Definition at line 589 of file ffprobe.c.

static void default_print_int ( WriterContext wctx,
const char *  key,
long long int  value 
)
static

Definition at line 598 of file ffprobe.c.

static const char* c_escape_str ( AVBPrint dst,
const char *  src,
const char  sep,
void log_ctx 
)
static

Apply C-language-like string escaping.

Definition at line 623 of file ffprobe.c.

Referenced by compact_init().

static const char* csv_escape_str ( AVBPrint dst,
const char *  src,
const char  sep,
void log_ctx 
)
static

Quote fields containing special characters, check RFC4180.

Definition at line 646 of file ffprobe.c.

Referenced by compact_init().

static const char* none_escape_str ( AVBPrint dst,
const char *  src,
const char  sep,
void log_ctx 
)
static

Definition at line 664 of file ffprobe.c.

Referenced by compact_init().

DEFINE_WRITER_CLASS ( compact  )
static av_cold int compact_init ( WriterContext wctx)
static

Definition at line 697 of file ffprobe.c.

static void compact_print_section_header ( WriterContext wctx)
static

Definition at line 719 of file ffprobe.c.

static void compact_print_section_footer ( WriterContext wctx)
static

Definition at line 739 of file ffprobe.c.

static void compact_print_str ( WriterContext wctx,
const char *  key,
const char *  value 
)
static

Definition at line 748 of file ffprobe.c.

static void compact_print_int ( WriterContext wctx,
const char *  key,
long long int  value 
)
static

Definition at line 761 of file ffprobe.c.

DEFINE_WRITER_CLASS ( csv  )
DEFINE_WRITER_CLASS ( flat  )
static av_cold int flat_init ( WriterContext wctx)
static

Definition at line 836 of file ffprobe.c.

static const char* flat_escape_key_str ( AVBPrint dst,
const char *  src,
const char  sep 
)
static

Definition at line 850 of file ffprobe.c.

Referenced by flat_print_str().

static const char* flat_escape_value_str ( AVBPrint dst,
const char *  src 
)
static

Definition at line 865 of file ffprobe.c.

Referenced by flat_print_str().

static void flat_print_section_header ( WriterContext wctx)
static

Definition at line 883 of file ffprobe.c.

static void flat_print_int ( WriterContext wctx,
const char *  key,
long long int  value 
)
static

Definition at line 909 of file ffprobe.c.

static void flat_print_str ( WriterContext wctx,
const char *  key,
const char *  value 
)
static

Definition at line 914 of file ffprobe.c.

DEFINE_WRITER_CLASS ( ini  )
static char* ini_escape_str ( AVBPrint dst,
const char *  src 
)
static

Definition at line 956 of file ffprobe.c.

Referenced by ini_print_str().

static void ini_print_section_header ( WriterContext wctx)
static

Definition at line 983 of file ffprobe.c.

static void ini_print_str ( WriterContext wctx,
const char *  key,
const char *  value 
)
static

Definition at line 1016 of file ffprobe.c.

static void ini_print_int ( WriterContext wctx,
const char *  key,
long long int  value 
)
static

Definition at line 1027 of file ffprobe.c.

DEFINE_WRITER_CLASS ( json  )
static av_cold int json_init ( WriterContext wctx)
static

Definition at line 1062 of file ffprobe.c.

static const char* json_escape_str ( AVBPrint dst,
const char *  src,
void log_ctx 
)
static

Definition at line 1072 of file ffprobe.c.

Referenced by json_print_int(), json_print_item_str(), and json_print_section_header().

static void json_print_section_header ( WriterContext wctx)
static

Definition at line 1094 of file ffprobe.c.

static void json_print_section_footer ( WriterContext wctx)
static

Definition at line 1132 of file ffprobe.c.

static void json_print_item_str ( WriterContext wctx,
const char *  key,
const char *  value 
)
inlinestatic

Definition at line 1154 of file ffprobe.c.

Referenced by json_print_str().

static void json_print_str ( WriterContext wctx,
const char *  key,
const char *  value 
)
static

Definition at line 1166 of file ffprobe.c.

static void json_print_int ( WriterContext wctx,
const char *  key,
long long int  value 
)
static

Definition at line 1177 of file ffprobe.c.

DEFINE_WRITER_CLASS ( xml  )
static av_cold int xml_init ( WriterContext wctx)
static

Definition at line 1227 of file ffprobe.c.

static const char* xml_escape_str ( AVBPrint dst,
const char *  src,
void log_ctx 
)
static

Definition at line 1255 of file ffprobe.c.

Referenced by xml_print_str().

static void xml_print_section_header ( WriterContext wctx)
static

Definition at line 1275 of file ffprobe.c.

static void xml_print_section_footer ( WriterContext wctx)
static

Definition at line 1315 of file ffprobe.c.

static void xml_print_str ( WriterContext wctx,
const char *  key,
const char *  value 
)
static

Definition at line 1334 of file ffprobe.c.

static void xml_print_int ( WriterContext wctx,
const char *  key,
long long int  value 
)
static

Definition at line 1357 of file ffprobe.c.

static void writer_register_all ( void  )
static

Definition at line 1376 of file ffprobe.c.

Referenced by main().

static void show_tags ( WriterContext wctx,
AVDictionary tags,
int  section_id 
)
inlinestatic

Definition at line 1417 of file ffprobe.c.

Referenced by show_chapters(), show_format(), show_frame(), and show_stream().

static void show_packet ( WriterContext w,
AVFormatContext fmt_ctx,
AVPacket pkt,
int  packet_idx 
)
static

Definition at line 1429 of file ffprobe.c.

Referenced by read_packets().

static void show_frame ( WriterContext w,
AVFrame frame,
AVStream stream,
AVFormatContext fmt_ctx 
)
static

Definition at line 1464 of file ffprobe.c.

Referenced by process_frame().

static av_always_inline int process_frame ( WriterContext w,
AVFormatContext fmt_ctx,
AVFrame frame,
AVPacket pkt 
)
static

Definition at line 1535 of file ffprobe.c.

Referenced by read_packets().

static void read_packets ( WriterContext w,
AVFormatContext fmt_ctx 
)
static

Definition at line 1568 of file ffprobe.c.

Referenced by probe_file().

static void show_stream ( WriterContext w,
AVFormatContext fmt_ctx,
int  stream_idx 
)
static

Definition at line 1601 of file ffprobe.c.

Referenced by show_streams().

static void show_streams ( WriterContext w,
AVFormatContext fmt_ctx 
)
static

Definition at line 1751 of file ffprobe.c.

Referenced by probe_file().

static void show_chapters ( WriterContext w,
AVFormatContext fmt_ctx 
)
static

Definition at line 1761 of file ffprobe.c.

Referenced by probe_file().

static void show_format ( WriterContext w,
AVFormatContext fmt_ctx 
)
static

Definition at line 1782 of file ffprobe.c.

Referenced by probe_file().

static void show_error ( WriterContext w,
int  err 
)
static

Definition at line 1807 of file ffprobe.c.

Referenced by main().

static int open_input_file ( AVFormatContext **  fmt_ctx_ptr,
const char *  filename 
)
static

Definition at line 1821 of file ffprobe.c.

Referenced by probe_file().

static void close_input_file ( AVFormatContext **  ctx_ptr)
static

Definition at line 1884 of file ffprobe.c.

Referenced by probe_file().

static int probe_file ( WriterContext wctx,
const char *  filename 
)
static

Definition at line 1897 of file ffprobe.c.

Referenced by main().

static void show_usage ( void  )
static

Definition at line 1959 of file ffprobe.c.

static void ffprobe_show_program_version ( WriterContext w)
static

Definition at line 1966 of file ffprobe.c.

Referenced by main().

static void ffprobe_show_library_versions ( WriterContext w)
static

Definition at line 1999 of file ffprobe.c.

Referenced by main().

static int opt_format ( void optctx,
const char *  opt,
const char *  arg 
)
static

Definition at line 2013 of file ffprobe.c.

static void mark_section_show_entries ( SectionID  section_id,
int  show_all_entries,
AVDictionary entries 
)
inlinestatic

Definition at line 2023 of file ffprobe.c.

Referenced by match_section(), and opt_show_versions().

static int match_section ( const char *  section_name,
int  show_all_entries,
AVDictionary entries 
)
static

Definition at line 2038 of file ffprobe.c.

Referenced by opt_show_entries().

static int opt_show_entries ( void optctx,
const char *  opt,
const char *  arg 
)
static

Definition at line 2057 of file ffprobe.c.

Referenced by opt_show_format_entry().

static int opt_show_format_entry ( void optctx,
const char *  opt,
const char *  arg 
)
static

Definition at line 2107 of file ffprobe.c.

static void opt_input_file ( void optctx,
const char *  arg 
)
static

Definition at line 2120 of file ffprobe.c.

Referenced by main(), and opt_input_file_i().

static int opt_input_file_i ( void optctx,
const char *  opt,
const char *  arg 
)
static

Definition at line 2133 of file ffprobe.c.

void show_help_default ( const char *  opt,
const char *  arg 
)

Per-fftool specific help handler.

Implemented in each fftool, called by show_help().

Definition at line 2139 of file ffprobe.c.

static int opt_pretty ( void optctx,
const char *  opt,
const char *  arg 
)
static

Definition at line 2149 of file ffprobe.c.

static void print_section ( SectionID  id,
int  level 
)
static

Definition at line 2158 of file ffprobe.c.

Referenced by opt_sections().

static int opt_sections ( void optctx,
const char *  opt,
const char *  arg 
)
static

Definition at line 2175 of file ffprobe.c.

static int opt_show_versions ( const char *  opt,
const char *  arg 
)
static

Definition at line 2187 of file ffprobe.c.

DEFINE_OPT_SHOW_SECTION ( chapters  ,
CHAPTERS   
)
DEFINE_OPT_SHOW_SECTION ( error  ,
ERROR   
)
DEFINE_OPT_SHOW_SECTION ( format  ,
FORMAT   
)
DEFINE_OPT_SHOW_SECTION ( frames  ,
FRAMES   
)
DEFINE_OPT_SHOW_SECTION ( library_versions  ,
LIBRARY_VERSIONS   
)
DEFINE_OPT_SHOW_SECTION ( packets  ,
PACKETS   
)
DEFINE_OPT_SHOW_SECTION ( program_version  ,
PROGRAM_VERSION   
)
DEFINE_OPT_SHOW_SECTION ( streams  ,
STREAMS   
)
static int check_section_show_entries ( int  section_id)
inlinestatic

Definition at line 2250 of file ffprobe.c.

int main ( int  argc,
char **  argv 
)

Definition at line 2267 of file ffprobe.c.

Variable Documentation

const char program_name[] = "ffprobe"

program name, defined by the program for show_version().

Definition at line 47 of file ffprobe.c.

const int program_birth_year = 2007

program birth year, defined by the program for show_banner()

Definition at line 48 of file ffprobe.c.

int do_bitexact = 0
static

Definition at line 50 of file ffprobe.c.

Referenced by main(), show_format(), and show_stream().

int do_count_frames = 0
static

Definition at line 51 of file ffprobe.c.

Referenced by probe_file().

int do_count_packets = 0
static

Definition at line 52 of file ffprobe.c.

Referenced by probe_file().

int do_read_frames = 0
static

Definition at line 53 of file ffprobe.c.

Referenced by probe_file(), and read_packets().

int do_read_packets = 0
static

Definition at line 54 of file ffprobe.c.

Referenced by probe_file(), and read_packets().

int do_show_chapters = 0
static

Definition at line 55 of file ffprobe.c.

Referenced by main(), and probe_file().

int do_show_error = 0
static

Definition at line 56 of file ffprobe.c.

Referenced by main().

int do_show_format = 0
static

Definition at line 57 of file ffprobe.c.

Referenced by main(), and probe_file().

int do_show_frames = 0
static

Definition at line 58 of file ffprobe.c.

Referenced by probe_file(), process_frame(), and xml_init().

int do_show_packets = 0
static

Definition at line 59 of file ffprobe.c.

Referenced by main(), probe_file(), read_packets(), and xml_init().

int do_show_streams = 0
static

Definition at line 60 of file ffprobe.c.

Referenced by main(), and probe_file().

int do_show_stream_disposition = 0
static

Definition at line 61 of file ffprobe.c.

Referenced by show_stream().

int do_show_data = 0
static

Definition at line 62 of file ffprobe.c.

Referenced by show_packet(), and show_stream().

int do_show_program_version = 0
static

Definition at line 63 of file ffprobe.c.

Referenced by main().

int do_show_library_versions = 0
static

Definition at line 64 of file ffprobe.c.

Referenced by main().

int show_value_unit = 0
static

Definition at line 66 of file ffprobe.c.

Referenced by opt_pretty(), value_string(), and xml_init().

int use_value_prefix = 0
static

Definition at line 67 of file ffprobe.c.

Referenced by opt_pretty(), value_string(), and xml_init().

int use_byte_value_binary_prefix = 0
static

Definition at line 68 of file ffprobe.c.

Referenced by opt_pretty(), and value_string().

int use_value_sexagesimal_format = 0
static

Definition at line 69 of file ffprobe.c.

Referenced by opt_pretty(), and value_string().

int show_private_data = 1
static

Definition at line 70 of file ffprobe.c.

Referenced by show_stream(), and xml_init().

char* print_format
static

Definition at line 72 of file ffprobe.c.

Referenced by main().

char* stream_specifier
static

Definition at line 73 of file ffprobe.c.

Referenced by probe_file().

struct section sections[]
static
Initial value:
= {
[SECTION_ID_CHAPTER_TAGS] = { SECTION_ID_CHAPTER_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "chapter_tags" },
[SECTION_ID_ERROR] = { SECTION_ID_ERROR, "error", 0, { -1 } },
[SECTION_ID_FORMAT_TAGS] = { SECTION_ID_FORMAT_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "format_tags" },
[SECTION_ID_FRAME_TAGS] = { SECTION_ID_FRAME_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "frame_tags" },
[SECTION_ID_LIBRARY_VERSION] = { SECTION_ID_LIBRARY_VERSION, "library_version", 0, { -1 } },
[SECTION_ID_PACKET] = { SECTION_ID_PACKET, "packet", 0, { -1 } },
[SECTION_ID_PROGRAM_VERSION] = { SECTION_ID_PROGRAM_VERSION, "program_version", 0, { -1 } },
[SECTION_ID_STREAM_DISPOSITION] = { SECTION_ID_STREAM_DISPOSITION, "disposition", 0, { -1 }, .unique_name = "stream_disposition" },
[SECTION_ID_STREAM_TAGS] = { SECTION_ID_STREAM_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "stream_tags" },
}

Definition at line 119 of file ffprobe.c.

Referenced by writer_open().

const OptionDef* options
static

Definition at line 144 of file ffprobe.c.

const char* input_filename
static

Definition at line 147 of file ffprobe.c.

Referenced by main(), and opt_input_file().

AVInputFormat* iformat = NULL
static

Definition at line 148 of file ffprobe.c.

Referenced by ff_load_image(), movie_common_init(), show_format_opts(), and stream_open().

const char* const binary_unit_prefixes[] = { "", "Ki", "Mi", "Gi", "Ti", "Pi" }
static

Definition at line 150 of file ffprobe.c.

Referenced by value_string().

const char* const decimal_unit_prefixes[] = { "", "K" , "M" , "G" , "T" , "P" }
static

Definition at line 151 of file ffprobe.c.

Referenced by value_string().

const char unit_second_str[] = "s"
static

Definition at line 153 of file ffprobe.c.

Referenced by value_string(), and writer_print_time().

const char unit_hertz_str[] = "Hz"
static

Definition at line 154 of file ffprobe.c.

Referenced by show_stream().

const char unit_byte_str[] = "byte"
static

Definition at line 155 of file ffprobe.c.

Referenced by show_format(), show_packet(), and value_string().

const char unit_bit_per_second_str[] = "bit/s"
static

Definition at line 156 of file ffprobe.c.

Referenced by show_format(), and show_stream().

uint64_t* nb_streams_packets
static

Definition at line 158 of file ffprobe.c.

Referenced by probe_file(), read_packets(), and show_stream().

uint64_t* nb_streams_frames
static

Definition at line 159 of file ffprobe.c.

Referenced by probe_file(), process_frame(), and show_stream().

int* selected_streams
static

Definition at line 160 of file ffprobe.c.

Referenced by probe_file(), read_packets(), and show_streams().

const AVClass writer_class
static
Initial value:
= {
"Writer",
NULL,
}

Definition at line 281 of file ffprobe.c.

Referenced by writer_open().

const Writer* registered_writers[MAX_REGISTERED_WRITERS_NB+1]
static

Definition at line 482 of file ffprobe.c.

const AVOption default_options[]
static
Initial value:
= {
{ "noprint_wrappers", "do not print headers and footers", OFFSET(noprint_wrappers), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{ "nw", "do not print headers and footers", OFFSET(noprint_wrappers), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{ "nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{ "nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{NULL},
}

Definition at line 531 of file ffprobe.c.

const Writer default_writer
static
Initial value:
= {
.name = "default",
.priv_size = sizeof(DefaultContext),
.print_integer = default_print_int,
.print_string = default_print_str,
.priv_class = &default_class,
}

Definition at line 607 of file ffprobe.c.

const AVOption compact_options[]
static
Initial value:
= {
{"item_sep", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str="|"}, CHAR_MIN, CHAR_MAX },
{"s", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str="|"}, CHAR_MIN, CHAR_MAX },
{"nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{"nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{"escape", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="c"}, CHAR_MIN, CHAR_MAX },
{"e", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="c"}, CHAR_MIN, CHAR_MAX },
{"print_section", "print section name", OFFSET(print_section), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{"p", "print section name", OFFSET(print_section), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{NULL},
}

Definition at line 683 of file ffprobe.c.

const Writer compact_writer
static
Initial value:
= {
.name = "compact",
.priv_size = sizeof(CompactContext),
.print_integer = compact_print_int,
.print_string = compact_print_str,
.priv_class = &compact_class,
}

Definition at line 771 of file ffprobe.c.

const AVOption csv_options[]
static
Initial value:
= {
{"item_sep", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, CHAR_MIN, CHAR_MAX },
{"s", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, CHAR_MIN, CHAR_MAX },
{"nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{"nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{"escape", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, CHAR_MIN, CHAR_MAX },
{"e", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, CHAR_MIN, CHAR_MAX },
{"print_section", "print section name", OFFSET(print_section), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{"p", "print section name", OFFSET(print_section), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{NULL},
}

Definition at line 788 of file ffprobe.c.

const Writer csv_writer
static
Initial value:

Definition at line 802 of file ffprobe.c.

const AVOption flat_options[]
static
Initial value:
= {
{"sep_char", "set separator", OFFSET(sep_str), AV_OPT_TYPE_STRING, {.str="."}, CHAR_MIN, CHAR_MAX },
{"s", "set separator", OFFSET(sep_str), AV_OPT_TYPE_STRING, {.str="."}, CHAR_MIN, CHAR_MAX },
{"hierarchical", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{"h", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{NULL},
}

Definition at line 826 of file ffprobe.c.

const Writer flat_writer
static
Initial value:
= {
.name = "flat",
.priv_size = sizeof(FlatContext),
.print_integer = flat_print_int,
.print_string = flat_print_str,
.priv_class = &flat_class,
}

Definition at line 927 of file ffprobe.c.

const AVOption ini_options[]
static
Initial value:
= {
{"hierarchical", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{"h", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
{NULL},
}

Definition at line 948 of file ffprobe.c.

const Writer ini_writer
static
Initial value:
= {
.name = "ini",
.priv_size = sizeof(INIContext),
.print_integer = ini_print_int,
.print_string = ini_print_str,
.priv_class = &ini_class,
}

Definition at line 1032 of file ffprobe.c.

const AVOption json_options[]
static
Initial value:
= {
{ "compact", "enable compact output", OFFSET(compact), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{ "c", "enable compact output", OFFSET(compact), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{ NULL }
}

Definition at line 1054 of file ffprobe.c.

const Writer json_writer
static
Initial value:
= {
.name = "json",
.priv_size = sizeof(JSONContext),
.print_integer = json_print_int,
.print_string = json_print_str,
.priv_class = &json_class,
}

Definition at line 1192 of file ffprobe.c.

const AVOption xml_options[]
static
Initial value:
= {
{"fully_qualified", "specify if the output should be fully qualified", OFFSET(fully_qualified), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{"q", "specify if the output should be fully qualified", OFFSET(fully_qualified), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{"xsd_strict", "ensure that the output is XSD compliant", OFFSET(xsd_strict), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{"x", "ensure that the output is XSD compliant", OFFSET(xsd_strict), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 },
{NULL},
}

Definition at line 1217 of file ffprobe.c.

Writer xml_writer
static
Initial value:
= {
.name = "xml",
.priv_size = sizeof(XMLContext),
.print_integer = xml_print_int,
.print_string = xml_print_str,
.priv_class = &xml_class,
}

Definition at line 1364 of file ffprobe.c.

const OptionDef real_options[]
static

Definition at line 2210 of file ffprobe.c.

Referenced by main().