FFmpeg
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Enumerations | Functions | Variables
ffmpeg_opt.c File Reference
#include <stdint.h>
#include "ffmpeg.h"
#include "cmdutils.h"
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavfilter/avfilter.h"
#include "libavfilter/avfiltergraph.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/avutil.h"
#include "libavutil/channel_layout.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/fifo.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include "libavutil/pixdesc.h"
#include "libavutil/pixfmt.h"
#include "cmdutils_common_opts.h"

Go to the source code of this file.

Macros

#define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)
 
#define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)
 
#define METADATA_CHECK_INDEX(index, nb_elems, desc)
 
#define SET_DICT(type, meta, context, index)
 
#define OFFSET(x)   offsetof(OptionsContext, x)
 

Enumerations

enum  OptGroup { GROUP_OUTFILE, GROUP_INFILE }
 

Functions

static void uninit_options (OptionsContext *o, int is_input)
 
static void init_options (OptionsContext *o, int is_input)
 
static int opt_frame_crop (void *optctx, const char *opt, const char *arg)
 
static int opt_pad (void *optctx, const char *opt, const char *arg)
 
static int opt_sameq (void *optctx, const char *opt, const char *arg)
 
static int opt_video_channel (void *optctx, const char *opt, const char *arg)
 
static int opt_video_standard (void *optctx, const char *opt, const char *arg)
 
static int opt_audio_codec (void *optctx, const char *opt, const char *arg)
 
static int opt_video_codec (void *optctx, const char *opt, const char *arg)
 
static int opt_subtitle_codec (void *optctx, const char *opt, const char *arg)
 
static int opt_data_codec (void *optctx, const char *opt, const char *arg)
 
static int opt_map (void *optctx, const char *opt, const char *arg)
 
static int opt_attach (void *optctx, const char *opt, const char *arg)
 
static int opt_map_channel (void *optctx, const char *opt, const char *arg)
 
static void parse_meta_type (char *arg, char *type, int *index, const char **stream_spec)
 Parse a metadata specifier passed as 'arg' parameter.
 
static int copy_metadata (char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o)
 
static int opt_recording_timestamp (void *optctx, const char *opt, const char *arg)
 
static AVCodecfind_codec_or_die (const char *name, enum AVMediaType type, int encoder)
 
static AVCodecchoose_decoder (OptionsContext *o, AVFormatContext *s, AVStream *st)
 
static void add_input_streams (OptionsContext *o, AVFormatContext *ic)
 
static void assert_file_overwrite (const char *filename)
 
static void dump_attachment (AVStream *st, const char *filename)
 
static int open_input_file (OptionsContext *o, const char *filename)
 
static uint8_tget_line (AVIOContext *s)
 
static int get_preset_file_2 (const char *preset_name, const char *codec_name, AVIOContext **s)
 
static void choose_encoder (OptionsContext *o, AVFormatContext *s, OutputStream *ost)
 
static OutputStreamnew_output_stream (OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index)
 
static void parse_matrix_coeffs (uint16_t *dest, const char *str)
 
static OutputStreamnew_video_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
static OutputStreamnew_audio_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
static OutputStreamnew_data_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
static OutputStreamnew_attachment_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
static OutputStreamnew_subtitle_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
static int opt_streamid (void *optctx, const char *opt, const char *arg)
 
static int copy_chapters (InputFile *ifile, OutputFile *ofile, int copy_metadata)
 
static int read_ffserver_streams (OptionsContext *o, AVFormatContext *s, const char *filename)
 
static void init_output_filter (OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc)
 
static int configure_complex_filters (void)
 
static int open_output_file (OptionsContext *o, const char *filename)
 
static int opt_target (void *optctx, const char *opt, const char *arg)
 
static int opt_vstats_file (void *optctx, const char *opt, const char *arg)
 
static int opt_vstats (void *optctx, const char *opt, const char *arg)
 
static int opt_video_frames (void *optctx, const char *opt, const char *arg)
 
static int opt_audio_frames (void *optctx, const char *opt, const char *arg)
 
static int opt_data_frames (void *optctx, const char *opt, const char *arg)
 
static int opt_default_new (OptionsContext *o, const char *opt, const char *arg)
 
static int opt_preset (void *optctx, const char *opt, const char *arg)
 
static int opt_old2new (void *optctx, const char *opt, const char *arg)
 
static int opt_bitrate (void *optctx, const char *opt, const char *arg)
 
static int opt_qscale (void *optctx, const char *opt, const char *arg)
 
static int opt_profile (void *optctx, const char *opt, const char *arg)
 
static int opt_video_filters (void *optctx, const char *opt, const char *arg)
 
static int opt_audio_filters (void *optctx, const char *opt, const char *arg)
 
static int opt_vsync (void *optctx, const char *opt, const char *arg)
 
static int opt_deinterlace (void *optctx, const char *opt, const char *arg)
 
static int opt_timecode (void *optctx, const char *opt, const char *arg)
 
static int opt_channel_layout (void *optctx, const char *opt, const char *arg)
 
static int opt_audio_qscale (void *optctx, const char *opt, const char *arg)
 
static int opt_filter_complex (void *optctx, const char *opt, const char *arg)
 
void show_help_default (const char *opt, const char *arg)
 Per-fftool specific help handler.
 
void show_usage (void)
 
static int open_files (OptionGroupList *l, const char *inout, int(*open_file)(OptionsContext *, const char *))
 
int ffmpeg_parse_options (int argc, char **argv)
 
static int opt_progress (void *optctx, const char *opt, const char *arg)
 

Variables

char * vstats_filename
 
float audio_drift_threshold = 0.1
 
float dts_delta_threshold = 10
 
float dts_error_threshold = 3600*30
 
int audio_volume = 256
 
int audio_sync_method = 0
 
int video_sync_method = VSYNC_AUTO
 
int do_deinterlace = 0
 
int do_benchmark = 0
 
int do_benchmark_all = 0
 
int do_hex_dump = 0
 
int do_pkt_dump = 0
 
int copy_ts = 0
 
int copy_tb = -1
 
int debug_ts = 0
 
int exit_on_error = 0
 
int print_stats = 1
 
int qp_hist = 0
 
int stdin_interaction = 1
 
int frame_bits_per_raw_sample = 0
 
static int intra_only = 0
 
static int file_overwrite = 0
 
static int no_file_overwrite = 0
 
static int video_discard = 0
 
static int intra_dc_precision = 8
 
static int do_psnr = 0
 
static int input_sync
 
static int64_t recording_time = INT64_MAX
 
static const OptionGroupDef groups []
 
const OptionDef options []
 

Macro Definition Documentation

#define MATCH_PER_STREAM_OPT (   name,
  type,
  outvar,
  fmtctx,
  st 
)
Value:
{\
int i, ret;\
for (i = 0; i < o->nb_ ## name; i++) {\
char *spec = o->name[i].specifier;\
if ((ret = check_stream_specifier(fmtctx, st, spec)) > 0)\
outvar = o->name[i].u.type;\
else if (ret < 0)\
exit(1);\
}\
}

Definition at line 45 of file ffmpeg_opt.c.

Referenced by add_input_streams(), choose_decoder(), choose_encoder(), new_audio_stream(), new_output_stream(), new_subtitle_stream(), and new_video_stream().

#define MATCH_PER_TYPE_OPT (   name,
  type,
  outvar,
  fmtctx,
  mediatype 
)
Value:
{\
int i;\
for (i = 0; i < o->nb_ ## name; i++) {\
char *spec = o->name[i].specifier;\
if (!strcmp(spec, mediatype))\
outvar = o->name[i].u.type;\
}\
}

Definition at line 57 of file ffmpeg_opt.c.

Referenced by open_input_file(), open_output_file(), and opt_preset().

#define METADATA_CHECK_INDEX (   index,
  nb_elems,
  desc 
)
Value:
if ((index) < 0 || (index) >= (nb_elems)) {\
av_log(NULL, AV_LOG_FATAL, "Invalid %s index %d while processing metadata maps.\n",\
(desc), (index));\
exit(1);\
}
#define SET_DICT (   type,
  meta,
  context,
  index 
)
Value:
switch (type) {\
case 'g':\
meta = &context->metadata;\
break;\
case 'c':\
METADATA_CHECK_INDEX(index, context->nb_chapters, "chapter")\
meta = &context->chapters[index]->metadata;\
break;\
case 'p':\
METADATA_CHECK_INDEX(index, context->nb_programs, "program")\
meta = &context->programs[index]->metadata;\
break;\
case 's':\
break; /* handled separately below */ \
default: av_assert0(0);\
}\

Referenced by copy_metadata().

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

Definition at line 2369 of file ffmpeg_opt.c.

Enumeration Type Documentation

enum OptGroup
Enumerator:
GROUP_OUTFILE 
GROUP_INFILE 

Definition at line 2263 of file ffmpeg_opt.c.

Function Documentation

static void uninit_options ( OptionsContext o,
int  is_input 
)
static

Definition at line 100 of file ffmpeg_opt.c.

Referenced by open_files().

static void init_options ( OptionsContext o,
int  is_input 
)
static

Definition at line 136 of file ffmpeg_opt.c.

Referenced by open_files().

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

Definition at line 152 of file ffmpeg_opt.c.

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

Definition at line 158 of file ffmpeg_opt.c.

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

Definition at line 164 of file ffmpeg_opt.c.

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

Definition at line 173 of file ffmpeg_opt.c.

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

Definition at line 179 of file ffmpeg_opt.c.

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

Definition at line 185 of file ffmpeg_opt.c.

Referenced by opt_preset(), and opt_target().

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

Definition at line 191 of file ffmpeg_opt.c.

Referenced by opt_preset(), and opt_target().

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

Definition at line 197 of file ffmpeg_opt.c.

Referenced by opt_preset().

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

Definition at line 203 of file ffmpeg_opt.c.

Referenced by opt_preset().

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

Definition at line 209 of file ffmpeg_opt.c.

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

Definition at line 304 of file ffmpeg_opt.c.

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

Definition at line 312 of file ffmpeg_opt.c.

static void parse_meta_type ( char *  arg,
char *  type,
int *  index,
const char **  stream_spec 
)
static

Parse a metadata specifier passed as 'arg' parameter.

Parameters
argmetadata string to parse
typemetadata type is written here – g(lobal)/s(tream)/c(hapter)/p(rogram)
indexfor type c/p, chapter/program index is written here
stream_specfor type s, the stream specifier is written here

Definition at line 378 of file ffmpeg_opt.c.

Referenced by copy_metadata(), and open_output_file().

static int copy_metadata ( char *  outspec,
char *  inspec,
AVFormatContext oc,
AVFormatContext ic,
OptionsContext o 
)
static

Definition at line 405 of file ffmpeg_opt.c.

Referenced by open_output_file().

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

Definition at line 495 of file ffmpeg_opt.c.

static AVCodec* find_codec_or_die ( const char *  name,
enum AVMediaType  type,
int  encoder 
)
static

Definition at line 509 of file ffmpeg_opt.c.

Referenced by choose_decoder(), choose_encoder(), and open_input_file().

static AVCodec* choose_decoder ( OptionsContext o,
AVFormatContext s,
AVStream st 
)
static

Definition at line 538 of file ffmpeg_opt.c.

Referenced by add_input_streams(), and open_input_file().

static void add_input_streams ( OptionsContext o,
AVFormatContext ic 
)
static

Definition at line 553 of file ffmpeg_opt.c.

Referenced by open_input_file().

static void assert_file_overwrite ( const char *  filename)
static

Definition at line 642 of file ffmpeg_opt.c.

Referenced by dump_attachment(), and open_output_file().

static void dump_attachment ( AVStream st,
const char *  filename 
)
static

Definition at line 667 of file ffmpeg_opt.c.

Referenced by open_input_file().

static int open_input_file ( OptionsContext o,
const char *  filename 
)
static

Definition at line 699 of file ffmpeg_opt.c.

Referenced by ffmpeg_parse_options().

static uint8_t* get_line ( AVIOContext s)
static

Definition at line 849 of file ffmpeg_opt.c.

Referenced by new_output_stream().

static int get_preset_file_2 ( const char *  preset_name,
const char *  codec_name,
AVIOContext **  s 
)
static

Definition at line 868 of file ffmpeg_opt.c.

Referenced by new_output_stream().

static void choose_encoder ( OptionsContext o,
AVFormatContext s,
OutputStream ost 
)
static

Definition at line 894 of file ffmpeg_opt.c.

Referenced by new_output_stream().

static OutputStream* new_output_stream ( OptionsContext o,
AVFormatContext oc,
enum AVMediaType  type,
int  source_index 
)
static
static void parse_matrix_coeffs ( uint16_t *  dest,
const char *  str 
)
static

Definition at line 1028 of file ffmpeg_opt.c.

Referenced by new_video_stream().

static OutputStream* new_video_stream ( OptionsContext o,
AVFormatContext oc,
int  source_index 
)
static

Definition at line 1045 of file ffmpeg_opt.c.

Referenced by init_output_filter(), and open_output_file().

static OutputStream* new_audio_stream ( OptionsContext o,
AVFormatContext oc,
int  source_index 
)
static

Definition at line 1187 of file ffmpeg_opt.c.

Referenced by init_output_filter(), and open_output_file().

static OutputStream* new_data_stream ( OptionsContext o,
AVFormatContext oc,
int  source_index 
)
static

Definition at line 1239 of file ffmpeg_opt.c.

Referenced by open_output_file().

static OutputStream* new_attachment_stream ( OptionsContext o,
AVFormatContext oc,
int  source_index 
)
static

Definition at line 1252 of file ffmpeg_opt.c.

Referenced by open_output_file().

static OutputStream* new_subtitle_stream ( OptionsContext o,
AVFormatContext oc,
int  source_index 
)
static

Definition at line 1259 of file ffmpeg_opt.c.

Referenced by open_output_file().

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

Definition at line 1287 of file ffmpeg_opt.c.

static int copy_chapters ( InputFile ifile,
OutputFile ofile,
int  copy_metadata 
)
static

Definition at line 1309 of file ffmpeg_opt.c.

Referenced by open_output_file().

static int read_ffserver_streams ( OptionsContext o,
AVFormatContext s,
const char *  filename 
)
static

Definition at line 1351 of file ffmpeg_opt.c.

Referenced by open_output_file().

static void init_output_filter ( OutputFilter ofilter,
OptionsContext o,
AVFormatContext oc 
)
static

Definition at line 1394 of file ffmpeg_opt.c.

Referenced by open_output_file().

static int configure_complex_filters ( void  )
static

Definition at line 1428 of file ffmpeg_opt.c.

Referenced by open_output_file().

static int open_output_file ( OptionsContext o,
const char *  filename 
)
static

Definition at line 1439 of file ffmpeg_opt.c.

Referenced by ffmpeg_parse_options().

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

Definition at line 1805 of file ffmpeg_opt.c.

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

Definition at line 1944 of file ffmpeg_opt.c.

Referenced by opt_vstats().

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

Definition at line 1951 of file ffmpeg_opt.c.

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

Definition at line 1962 of file ffmpeg_opt.c.

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

Definition at line 1968 of file ffmpeg_opt.c.

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

Definition at line 1974 of file ffmpeg_opt.c.

static int opt_default_new ( OptionsContext o,
const char *  opt,
const char *  arg 
)
static

Definition at line 1980 of file ffmpeg_opt.c.

Referenced by opt_channel_layout(), and opt_preset().

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

Definition at line 2000 of file ffmpeg_opt.c.

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

Definition at line 2048 of file ffmpeg_opt.c.

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

Definition at line 2057 of file ffmpeg_opt.c.

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

Definition at line 2069 of file ffmpeg_opt.c.

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

Definition at line 2084 of file ffmpeg_opt.c.

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

Definition at line 2096 of file ffmpeg_opt.c.

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

Definition at line 2102 of file ffmpeg_opt.c.

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

Definition at line 2108 of file ffmpeg_opt.c.

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

Definition at line 2120 of file ffmpeg_opt.c.

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

Definition at line 2127 of file ffmpeg_opt.c.

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

Definition at line 2138 of file ffmpeg_opt.c.

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

Definition at line 2174 of file ffmpeg_opt.c.

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

Definition at line 2180 of file ffmpeg_opt.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 2190 of file ffmpeg_opt.c.

void show_usage ( void  )

Definition at line 2256 of file ffmpeg_opt.c.

Referenced by main(), and show_help_default().

static int open_files ( OptionGroupList l,
const char *  inout,
int(*)(OptionsContext *, const char *)  open_file 
)
static

Definition at line 2273 of file ffmpeg_opt.c.

Referenced by ffmpeg_parse_options().

int ffmpeg_parse_options ( int  argc,
char **  argv 
)

Definition at line 2306 of file ffmpeg_opt.c.

Referenced by main().

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

Definition at line 2352 of file ffmpeg_opt.c.

Variable Documentation

char* vstats_filename
float audio_drift_threshold = 0.1

Definition at line 68 of file ffmpeg_opt.c.

Referenced by configure_input_audio_filter().

float dts_delta_threshold = 10

Definition at line 69 of file ffmpeg_opt.c.

Referenced by process_input().

float dts_error_threshold = 3600*30

Definition at line 70 of file ffmpeg_opt.c.

Referenced by do_video_out(), and process_input().

int audio_volume = 256
int audio_sync_method = 0

Definition at line 73 of file ffmpeg_opt.c.

Referenced by configure_input_audio_filter(), do_audio_out(), and write_frame().

int video_sync_method = VSYNC_AUTO

Definition at line 74 of file ffmpeg_opt.c.

Referenced by do_video_out(), opt_vsync(), transcode_init(), and write_frame().

int do_deinterlace = 0

Definition at line 75 of file ffmpeg_opt.c.

Referenced by init_input_stream(), opt_deinterlace(), and pre_process_video_frame().

int do_benchmark = 0

Definition at line 76 of file ffmpeg_opt.c.

Referenced by main().

int do_benchmark_all = 0

Definition at line 77 of file ffmpeg_opt.c.

Referenced by update_benchmark().

int do_hex_dump = 0

Definition at line 78 of file ffmpeg_opt.c.

Referenced by check_keyboard_interaction(), and process_input().

int do_pkt_dump = 0

Definition at line 79 of file ffmpeg_opt.c.

Referenced by check_keyboard_interaction(), and process_input().

int copy_ts = 0

Definition at line 80 of file ffmpeg_opt.c.

Referenced by open_input_file(), and process_input().

int copy_tb = -1

Definition at line 81 of file ffmpeg_opt.c.

Referenced by transcode_init().

int debug_ts = 0

Definition at line 82 of file ffmpeg_opt.c.

Referenced by decode_video(), do_audio_out(), do_video_out(), process_input(), and write_frame().

int exit_on_error = 0

Definition at line 83 of file ffmpeg_opt.c.

Referenced by do_subtitle_out(), process_input(), and write_frame().

int print_stats = 1

Definition at line 84 of file ffmpeg_opt.c.

Referenced by print_report(), and uninit().

int qp_hist = 0

Definition at line 85 of file ffmpeg_opt.c.

Referenced by check_keyboard_interaction(), and print_report().

int stdin_interaction = 1

Definition at line 86 of file ffmpeg_opt.c.

Referenced by assert_file_overwrite(), open_input_file(), and transcode().

int frame_bits_per_raw_sample = 0

Definition at line 87 of file ffmpeg_opt.c.

Referenced by new_video_stream(), and transcode_init().

int intra_only = 0
static

Definition at line 90 of file ffmpeg_opt.c.

Referenced by build_frame_code(), and new_video_stream().

int file_overwrite = 0
static

Definition at line 91 of file ffmpeg_opt.c.

Referenced by assert_file_overwrite().

int no_file_overwrite = 0
static

Definition at line 92 of file ffmpeg_opt.c.

Referenced by assert_file_overwrite().

int video_discard = 0
static

Definition at line 93 of file ffmpeg_opt.c.

int intra_dc_precision = 8
static

Definition at line 94 of file ffmpeg_opt.c.

Referenced by new_video_stream().

int do_psnr = 0
static

Definition at line 95 of file ffmpeg_opt.c.

Referenced by new_video_stream().

int input_sync
static

Definition at line 96 of file ffmpeg_opt.c.

int64_t recording_time = INT64_MAX
static

Definition at line 98 of file ffmpeg_opt.c.

Referenced by init_options(), and uninit_options().

const OptionGroupDef groups[]
static
Initial value:
= {
[GROUP_OUTFILE] = { "output file", NULL },
[GROUP_INFILE] = { "input file", "i" },
}

Definition at line 2268 of file ffmpeg_opt.c.

const OptionDef options[]