ffmpeg.c File Reference

multimedia converter based on the FFmpeg libraries More...

#include "config.h"
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
#include "libavformat/avformat.h"
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libswresample/swresample.h"
#include "libavutil/opt.h"
#include "libavutil/audioconvert.h"
#include "libavutil/parseutils.h"
#include "libavutil/samplefmt.h"
#include "libavutil/colorspace.h"
#include "libavutil/fifo.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/dict.h"
#include "libavutil/mathematics.h"
#include "libavutil/pixdesc.h"
#include "libavutil/avstring.h"
#include "libavutil/libm.h"
#include "libavutil/imgutils.h"
#include "libavutil/timestamp.h"
#include "libavutil/bprint.h"
#include "libavutil/time.h"
#include "libavformat/os_support.h"
#include "libavformat/ffm.h"
#include "libavfilter/avcodec.h"
#include "libavfilter/avfilter.h"
#include "libavfilter/avfiltergraph.h"
#include "libavfilter/buffersrc.h"
#include "libavfilter/buffersink.h"
#include "ffmpeg.h"
#include "cmdutils.h"
#include "libavutil/avassert.h"

Go to the source code of this file.

Defines

#define DEFAULT_PASS_LOGFILENAME_PREFIX   "ffmpeg2pass"

Functions

static void do_video_stats (AVFormatContext *os, OutputStream *ost, int frame_size)
static int64_t getutime (void)
static void sub2video_copy_rect (uint8_t *dst, int dst_linesize, int w, int h, AVSubtitleRect *r)
static void sub2video_push_ref (InputStream *ist, int64_t pts)
static void sub2video_update (InputStream *ist, AVSubtitle *sub)
static void sub2video_heartbeat (InputStream *ist, int64_t pts)
static void sub2video_flush (InputStream *ist)
void term_exit (void)
static void sigterm_handler (int sig)
void term_init (void)
static int read_key (void)
static int decode_interrupt_cb (void *ctx)
void av_noreturn exit_program (int ret)
 Do all the necessary cleanup and abort.
void assert_avoptions (AVDictionary *m)
static void assert_codec_experimental (AVCodecContext *c, int encoder)
static void update_benchmark (const char *fmt,...)
static void write_frame (AVFormatContext *s, AVPacket *pkt, OutputStream *ost)
static void close_output_stream (OutputStream *ost)
static int check_recording_time (OutputStream *ost)
static void do_audio_out (AVFormatContext *s, OutputStream *ost, AVFrame *frame)
static void pre_process_video_frame (InputStream *ist, AVPicture *picture, void **bufp)
static void do_subtitle_out (AVFormatContext *s, OutputStream *ost, InputStream *ist, AVSubtitle *sub)
static void do_video_out (AVFormatContext *s, OutputStream *ost, AVFrame *in_picture, float quality)
static double psnr (double d)
static int reap_filters (void)
 Get and encode new output from any of the filtergraphs, without causing activity.
static void print_report (int is_last_report, int64_t timer_start, int64_t cur_time)
static void flush_encoders (void)
static int check_output_constraints (InputStream *ist, OutputStream *ost)
static void do_streamcopy (InputStream *ist, OutputStream *ost, const AVPacket *pkt)
static void rate_emu_sleep (InputStream *ist)
int guess_input_channel_layout (InputStream *ist)
static int decode_audio (InputStream *ist, AVPacket *pkt, int *got_output)
static int decode_video (InputStream *ist, AVPacket *pkt, int *got_output)
static int transcode_subtitles (InputStream *ist, AVPacket *pkt, int *got_output)
static int output_packet (InputStream *ist, const AVPacket *pkt)
static void print_sdp (void)
static int init_input_stream (int ist_index, char *error, int error_len)
static InputStreamget_input_stream (OutputStream *ost)
static void parse_forced_key_frames (char *kf, OutputStream *ost, AVCodecContext *avctx)
static void report_new_stream (int input_index, AVPacket *pkt)
static int transcode_init (void)
static int need_output (void)
static OutputStreamchoose_output (void)
 Select the output stream to process.
static int check_keyboard_interaction (int64_t cur_time)
static int get_input_packet (InputFile *f, AVPacket *pkt)
static int got_eagain (void)
static void reset_eagain (void)
static int process_input (int file_index)
static int transcode_from_filter (FilterGraph *graph, InputStream **best_ist)
 Perform a step of transcoding for the specified filter graph.
static int transcode_step (void)
 Run a single step of transcoding.
static int transcode (void)
static int64_t getmaxrss (void)
static void log_callback_null (void *ptr, int level, const char *fmt, va_list vl)
static void parse_cpuflags (int argc, char **argv, const OptionDef *options)
int main (int argc, char **argv)

Variables

const char program_name [] = "ffmpeg"
 program name, defined by the program for show_version().
const int program_birth_year = 2000
 program birth year, defined by the program for show_banner()
static FILE * vstats_file
static int run_as_daemon = 0
static int64_t video_size = 0
static int64_t audio_size = 0
static int64_t subtitle_size = 0
static int64_t extra_size = 0
static int nb_frames_dup = 0
static int nb_frames_drop = 0
static int current_time
AVIOContextprogress_avio = NULL
static uint8_tsubtitle_out
InputStream ** input_streams = NULL
int nb_input_streams = 0
InputFile ** input_files = NULL
int nb_input_files = 0
OutputStream ** output_streams = NULL
int nb_output_streams = 0
OutputFile ** output_files = NULL
int nb_output_files = 0
FilterGraph ** filtergraphs
int nb_filtergraphs
static volatile int received_sigterm = 0
static volatile int received_nb_signals = 0
const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL }


Detailed Description

multimedia converter based on the FFmpeg libraries

Definition in file ffmpeg.c.


Define Documentation

#define DEFAULT_PASS_LOGFILENAME_PREFIX   "ffmpeg2pass"

Definition at line 132 of file ffmpeg.c.

Referenced by transcode_init().


Function Documentation

void assert_avoptions ( AVDictionary m  ) 

Definition at line 463 of file ffmpeg.c.

Referenced by init_input_stream(), opt_input_file(), and transcode_init().

static void assert_codec_experimental ( AVCodecContext c,
int  encoder 
) [static]

Definition at line 472 of file ffmpeg.c.

Referenced by init_input_stream(), and transcode_init().

static int check_keyboard_interaction ( int64_t  cur_time  )  [static]

Definition at line 2470 of file ffmpeg.c.

Referenced by transcode().

static int check_output_constraints ( InputStream ist,
OutputStream ost 
) [static]

Definition at line 1316 of file ffmpeg.c.

Referenced by output_packet(), and transcode_subtitles().

static int check_recording_time ( OutputStream ost  )  [static]

Definition at line 604 of file ffmpeg.c.

Referenced by do_audio_out(), do_subtitle_out(), and do_video_out().

static OutputStream* choose_output ( void   )  [static]

Select the output stream to process.

Returns:
selected output stream, or NULL if none available

Definition at line 2452 of file ffmpeg.c.

Referenced by transcode_step().

static void close_output_stream ( OutputStream ost  )  [static]

static int decode_audio ( InputStream ist,
AVPacket pkt,
int got_output 
) [static]

Definition at line 1431 of file ffmpeg.c.

Referenced by output_packet().

static int decode_interrupt_cb ( void *  ctx  )  [static]

Definition at line 374 of file ffmpeg.c.

Referenced by read_thread().

static int decode_video ( InputStream ist,
AVPacket pkt,
int got_output 
) [static]

Definition at line 1553 of file ffmpeg.c.

Referenced by output_packet().

static void do_audio_out ( AVFormatContext s,
OutputStream ost,
AVFrame frame 
) [static]

Definition at line 617 of file ffmpeg.c.

Referenced by reap_filters().

static void do_streamcopy ( InputStream ist,
OutputStream ost,
const AVPacket pkt 
) [static]

Definition at line 1330 of file ffmpeg.c.

Referenced by output_packet().

static void do_subtitle_out ( AVFormatContext s,
OutputStream ost,
InputStream ist,
AVSubtitle sub 
) [static]

Definition at line 704 of file ffmpeg.c.

Referenced by transcode_subtitles().

static void do_video_out ( AVFormatContext s,
OutputStream ost,
AVFrame in_picture,
float  quality 
) [static]

Definition at line 775 of file ffmpeg.c.

Referenced by reap_filters().

static void do_video_stats ( AVFormatContext os,
OutputStream ost,
int  frame_size 
) [static]

Definition at line 945 of file ffmpeg.c.

Referenced by do_video_out().

void av_noreturn exit_program ( int  ret  ) 

Do all the necessary cleanup and abort.

This function is implemented in the avtools, not cmdutils.

Definition at line 381 of file ffmpeg.c.

static void flush_encoders ( void   )  [static]

Definition at line 1240 of file ffmpeg.c.

Referenced by transcode().

static int get_input_packet ( InputFile f,
AVPacket pkt 
) [static]

Definition at line 2673 of file ffmpeg.c.

Referenced by process_input().

static InputStream* get_input_stream ( OutputStream ost  )  [static]

Definition at line 1908 of file ffmpeg.c.

Referenced by transcode_init().

static int64_t getmaxrss ( void   )  [static]

Definition at line 3087 of file ffmpeg.c.

Referenced by main().

static int64_t getutime ( void   )  [static]

Definition at line 3069 of file ffmpeg.c.

Referenced by main(), and update_benchmark().

static int got_eagain ( void   )  [static]

Definition at line 2682 of file ffmpeg.c.

Referenced by transcode_step().

int guess_input_channel_layout ( InputStream ist  ) 

Definition at line 1413 of file ffmpeg.c.

Referenced by add_input_streams(), and decode_audio().

static int init_input_stream ( int  ist_index,
char *  error,
int  error_len 
) [static]

Definition at line 1871 of file ffmpeg.c.

Referenced by transcode_init().

static void log_callback_null ( void *  ptr,
int  level,
const char *  fmt,
va_list  vl 
) [static]

Definition at line 3105 of file ffmpeg.c.

Referenced by main().

int main ( int  argc,
char **  argv 
)

Definition at line 3116 of file ffmpeg.c.

static int need_output ( void   )  [static]

Returns:
1 if there are still streams where more output is wanted, 0 otherwise

Definition at line 2422 of file ffmpeg.c.

Referenced by transcode().

static int output_packet ( InputStream ist,
const AVPacket pkt 
) [static]

Definition at line 1719 of file ffmpeg.c.

Referenced by mpeg_mux_end(), mpeg_mux_write_packet(), process_input(), and transcode().

static void parse_cpuflags ( int  argc,
char **  argv,
const OptionDef options 
) [static]

Definition at line 3109 of file ffmpeg.c.

Referenced by main().

static void parse_forced_key_frames ( char *  kf,
OutputStream ost,
AVCodecContext avctx 
) [static]

Definition at line 1915 of file ffmpeg.c.

Referenced by transcode_init().

static void pre_process_video_frame ( InputStream ist,
AVPicture picture,
void **  bufp 
) [static]

Definition at line 665 of file ffmpeg.c.

Referenced by decode_video().

static void print_report ( int  is_last_report,
int64_t  timer_start,
int64_t  cur_time 
) [static]

Definition at line 1068 of file ffmpeg.c.

Referenced by transcode().

static void print_sdp ( void   )  [static]

Definition at line 1854 of file ffmpeg.c.

Referenced by transcode_init().

static int process_input ( int  file_index  )  [static]

Returns:
  • 0 -- one packet was read and processed
  • AVERROR(EAGAIN) -- no packets were available for selected file, this function should be called again
  • AVERROR_EOF -- this function should not be called again

Definition at line 2707 of file ffmpeg.c.

Referenced by transcode_step().

static double psnr ( double  d  )  [static]

Definition at line 940 of file ffmpeg.c.

Referenced by do_video_stats(), main(), print_report(), and run_psnr().

static void rate_emu_sleep ( InputStream ist  )  [static]

Definition at line 1403 of file ffmpeg.c.

Referenced by decode_audio(), decode_video(), output_packet(), and transcode_subtitles().

static int read_key ( void   )  [static]

Definition at line 321 of file ffmpeg.c.

Referenced by check_keyboard_interaction().

static int reap_filters ( void   )  [static]

Get and encode new output from any of the filtergraphs, without causing activity.

Returns:
0 for success, <0 for severe errors

Definition at line 988 of file ffmpeg.c.

Referenced by transcode_from_filter(), and transcode_step().

static void report_new_stream ( int  input_index,
AVPacket pkt 
) [static]

Definition at line 1946 of file ffmpeg.c.

Referenced by process_input().

static void reset_eagain ( void   )  [static]

Definition at line 2691 of file ffmpeg.c.

Referenced by process_input(), and transcode_step().

static void sigterm_handler ( int  sig  )  [static]

Definition at line 274 of file ffmpeg.c.

Referenced by main(), and term_init().

static void sub2video_copy_rect ( uint8_t dst,
int  dst_linesize,
int  w,
int  h,
AVSubtitleRect r 
) [static]

Definition at line 162 of file ffmpeg.c.

Referenced by sub2video_update().

static void sub2video_flush ( InputStream ist  )  [static]

Definition at line 251 of file ffmpeg.c.

Referenced by transcode_subtitles().

static void sub2video_heartbeat ( InputStream ist,
int64_t  pts 
) [static]

Definition at line 224 of file ffmpeg.c.

Referenced by process_input().

static void sub2video_push_ref ( InputStream ist,
int64_t  pts 
) [static]

Definition at line 191 of file ffmpeg.c.

Referenced by sub2video_heartbeat(), and sub2video_update().

static void sub2video_update ( InputStream ist,
AVSubtitle sub 
) [static]

Definition at line 205 of file ffmpeg.c.

Referenced by transcode_subtitles().

void term_exit ( void   ) 

Definition at line 261 of file ffmpeg.c.

Referenced by assert_file_overwrite(), sigterm_handler(), term_init(), and transcode().

void term_init ( void   ) 

Definition at line 283 of file ffmpeg.c.

Referenced by assert_file_overwrite(), and main().

static int transcode ( void   )  [static]

Definition at line 2951 of file ffmpeg.c.

Referenced by main().

static int transcode_from_filter ( FilterGraph graph,
InputStream **  best_ist 
) [static]

Perform a step of transcoding for the specified filter graph.

Parameters:
[in] graph filter graph to consider
[out] best_ist input stream where a frame would allow to continue
Returns:
0 for success, <0 for error

Definition at line 2863 of file ffmpeg.c.

Referenced by transcode_step().

static int transcode_init ( void   )  [static]

Definition at line 1961 of file ffmpeg.c.

Referenced by transcode().

static int transcode_step ( void   )  [static]

Run a single step of transcoding.

Returns:
0 for success, <0 for error

Definition at line 2909 of file ffmpeg.c.

Referenced by transcode().

static int transcode_subtitles ( InputStream ist,
AVPacket pkt,
int got_output 
) [static]

Definition at line 1671 of file ffmpeg.c.

Referenced by output_packet().

static void update_benchmark ( const char *  fmt,
  ... 
) [static]

Definition at line 489 of file ffmpeg.c.

Referenced by decode_audio(), decode_video(), do_audio_out(), do_video_out(), and flush_encoders().

static void write_frame ( AVFormatContext s,
AVPacket pkt,
OutputStream ost 
) [static]


Variable Documentation

int64_t audio_size = 0 [static]

int current_time [static]

Definition at line 122 of file ffmpeg.c.

Referenced by main(), and update_benchmark().

int64_t extra_size = 0 [static]

Definition at line 118 of file ffmpeg.c.

Referenced by ape_read_packet(), asf_write_header1(), print_report(), and transcode_init().

const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL }

int nb_frames_drop = 0 [static]

Definition at line 120 of file ffmpeg.c.

Referenced by do_video_out(), and print_report().

int nb_frames_dup = 0 [static]

Definition at line 119 of file ffmpeg.c.

Referenced by do_video_out(), and print_report().

Definition at line 141 of file ffmpeg.c.

Referenced by opt_output_file().

Definition at line 139 of file ffmpeg.c.

Referenced by new_output_stream(), and opt_output_file().

const int program_birth_year = 2000

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

Definition at line 107 of file ffmpeg.c.

const char program_name[] = "ffmpeg"

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

Definition at line 106 of file ffmpeg.c.

Definition at line 123 of file ffmpeg.c.

Referenced by opt_progress().

volatile int received_nb_signals = 0 [static]

Definition at line 271 of file ffmpeg.c.

Referenced by check_keyboard_interaction(), decode_interrupt_cb(), and sigterm_handler().

volatile int received_sigterm = 0 [static]

Definition at line 270 of file ffmpeg.c.

Referenced by exit_program(), sigterm_handler(), and transcode().

int run_as_daemon = 0 [static]

Definition at line 114 of file ffmpeg.c.

Referenced by check_keyboard_interaction(), main(), and term_init().

uint8_t* subtitle_out [static]

Definition at line 125 of file ffmpeg.c.

Referenced by do_subtitle_out(), and exit_program().

int64_t subtitle_size = 0 [static]

Definition at line 117 of file ffmpeg.c.

Referenced by do_streamcopy(), and print_report().

int64_t video_size = 0 [static]

FILE* vstats_file [static]

Definition at line 109 of file ffmpeg.c.

Referenced by do_video_stats(), and exit_program().


Generated on Fri Oct 26 02:50:03 2012 for FFmpeg by  doxygen 1.5.8