Libav
Functions | Variables
avconv.c File Reference
#include "config.h"
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <errno.h>
#include <signal.h>
#include <limits.h>
#include <stdint.h>
#include "libavformat/avformat.h"
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libavresample/avresample.h"
#include "libavutil/opt.h"
#include "libavutil/channel_layout.h"
#include "libavutil/parseutils.h"
#include "libavutil/samplefmt.h"
#include "libavutil/fifo.h"
#include "libavutil/internal.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/time.h"
#include "libavformat/os_support.h"
#include "libavfilter/avfilter.h"
#include "libavfilter/buffersrc.h"
#include "libavfilter/buffersink.h"
#include <sys/time.h>
#include <sys/types.h>
#include <sys/resource.h>
#include <sys/select.h>
#include <pthread.h>
#include "avconv.h"
#include "cmdutils.h"
#include "libavutil/avassert.h"

Go to the source code of this file.

Functions

static void term_exit (void)
 
static void sigterm_handler (int sig)
 
static void term_init (void)
 
static int decode_interrupt_cb (void *ctx)
 
static void avconv_cleanup (int ret)
 
void assert_avoptions (AVDictionary *m)
 
static void abort_codec_experimental (AVCodec *c, int encoder)
 
static void write_packet (OutputFile *of, AVPacket *pkt, OutputStream *ost)
 
static void output_packet (OutputFile *of, AVPacket *pkt, OutputStream *ost)
 
static int check_recording_time (OutputStream *ost)
 
static void do_audio_out (OutputFile *of, OutputStream *ost, AVFrame *frame)
 
static void do_subtitle_out (OutputFile *of, OutputStream *ost, InputStream *ist, AVSubtitle *sub, int64_t pts)
 
static void do_video_out (OutputFile *of, OutputStream *ost, AVFrame *in_picture, int *frame_size)
 
static double psnr (double d)
 
static void do_video_stats (OutputStream *ost, int frame_size)
 
static int init_output_stream (OutputStream *ost, char *error, int error_len)
 
static int poll_filter (OutputStream *ost)
 
static void finish_output_stream (OutputStream *ost)
 
static int poll_filters (void)
 
static void print_final_stats (int64_t total_size)
 
static void print_report (int is_last_report, int64_t timer_start)
 
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 int ifilter_send_frame (InputFilter *ifilter, AVFrame *frame)
 
static int ifilter_send_eof (InputFilter *ifilter)
 
static int decode (AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
 
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 send_filter_eof (InputStream *ist)
 
static void process_input_packet (InputStream *ist, const AVPacket *pkt, int no_eof)
 
static void print_sdp (void)
 
static const HWAccelget_hwaccel (enum AVPixelFormat pix_fmt)
 
static enum AVPixelFormat get_format (AVCodecContext *s, const enum AVPixelFormat *pix_fmts)
 
static int get_buffer (AVCodecContext *s, AVFrame *frame, int flags)
 
static int init_input_stream (int ist_index, char *error, int error_len)
 
static InputStreamget_input_stream (OutputStream *ost)
 
static int check_init_output_file (OutputFile *of, int file_index)
 
static int init_output_bsfs (OutputStream *ost)
 
static int init_output_stream_streamcopy (OutputStream *ost)
 
static void set_encoder_id (OutputFile *of, OutputStream *ost)
 
static void parse_forced_key_frames (char *kf, OutputStream *ost, AVCodecContext *avctx)
 
static int init_output_stream_encode (OutputStream *ost)
 
static int transcode_init (void)
 
static int need_output (void)
 
static InputFileselect_input_file (void)
 
static voidinput_thread (void *arg)
 
static void free_input_threads (void)
 
static int init_input_threads (void)
 
static int get_input_packet_mt (InputFile *f, AVPacket *pkt)
 
static int get_input_packet (InputFile *f, AVPacket *pkt)
 
static int got_eagain (void)
 
static void reset_eagain (void)
 
static AVRational duration_max (int64_t tmp, int64_t *duration, AVRational tmp_time_base, AVRational time_base)
 
static int seek_to_start (InputFile *ifile, AVFormatContext *is)
 
static int process_input (void)
 
static int transcode (void)
 
static int64_t getutime (void)
 
static int64_t getmaxrss (void)
 
int main (int argc, char **argv)
 

Variables

const char program_name [] = "avconv"
 program name, defined by the program for show_version(). More...
 
const int program_birth_year = 2000
 program birth year, defined by the program for show_banner() More...
 
static FILE * vstats_file
 
static int nb_frames_drop = 0
 
static int want_sdp = 1
 
static int transcoding_finished
 
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 }
 

Function Documentation

◆ term_exit()

static void term_exit ( void  )
static

Definition at line 110 of file avconv.c.

Referenced by sigterm_handler(), and transcode().

◆ sigterm_handler()

static void sigterm_handler ( int  sig)
static

Definition at line 119 of file avconv.c.

Referenced by term_init().

◆ term_init()

static void term_init ( void  )
static

Definition at line 126 of file avconv.c.

Referenced by transcode().

◆ decode_interrupt_cb()

static int decode_interrupt_cb ( void ctx)
static

Definition at line 135 of file avconv.c.

◆ avconv_cleanup()

static void avconv_cleanup ( int  ret)
static

Definition at line 142 of file avconv.c.

Referenced by main().

◆ assert_avoptions()

void assert_avoptions ( AVDictionary m)

◆ abort_codec_experimental()

static void abort_codec_experimental ( AVCodec c,
int  encoder 
)
static

Definition at line 264 of file avconv.c.

Referenced by init_input_stream(), and init_output_stream().

◆ write_packet()

static void write_packet ( OutputFile of,
AVPacket pkt,
OutputStream ost 
)
static

◆ output_packet()

static void output_packet ( OutputFile of,
AVPacket pkt,
OutputStream ost 
)
static

◆ check_recording_time()

static int check_recording_time ( OutputStream ost)
static

Definition at line 405 of file avconv.c.

Referenced by do_subtitle_out().

◆ do_audio_out()

static void do_audio_out ( OutputFile of,
OutputStream ost,
AVFrame frame 
)
static

Definition at line 418 of file avconv.c.

Referenced by poll_filter().

◆ do_subtitle_out()

static void do_subtitle_out ( OutputFile of,
OutputStream ost,
InputStream ist,
AVSubtitle sub,
int64_t  pts 
)
static

Definition at line 456 of file avconv.c.

Referenced by transcode_subtitles().

◆ do_video_out()

static void do_video_out ( OutputFile of,
OutputStream ost,
AVFrame in_picture,
int *  frame_size 
)
static

Definition at line 525 of file avconv.c.

Referenced by poll_filter().

◆ psnr()

static double psnr ( double  d)
static

Definition at line 616 of file avconv.c.

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

◆ do_video_stats()

static void do_video_stats ( OutputStream ost,
int  frame_size 
)
static

Definition at line 622 of file avconv.c.

Referenced by poll_filter().

◆ init_output_stream()

static int init_output_stream ( OutputStream ost,
char *  error,
int  error_len 
)
static

Definition at line 2005 of file avconv.c.

Referenced by do_video_stats(), poll_filter(), and transcode_init().

◆ poll_filter()

static int poll_filter ( OutputStream ost)
static

Definition at line 673 of file avconv.c.

Referenced by poll_filters().

◆ finish_output_stream()

static void finish_output_stream ( OutputStream ost)
static

Definition at line 736 of file avconv.c.

Referenced by ifilter_send_eof(), poll_filters(), and process_input().

◆ poll_filters()

static int poll_filters ( void  )
static

Definition at line 757 of file avconv.c.

Referenced by ifilter_send_frame(), and transcode().

◆ print_final_stats()

static void print_final_stats ( int64_t  total_size)
static

Definition at line 805 of file avconv.c.

Referenced by print_report().

◆ print_report()

static void print_report ( int  is_last_report,
int64_t  timer_start 
)
static

Definition at line 908 of file avconv.c.

Referenced by transcode().

◆ flush_encoders()

static void flush_encoders ( void  )
static

Definition at line 1035 of file avconv.c.

Referenced by transcode().

◆ check_output_constraints()

static int check_output_constraints ( InputStream ist,
OutputStream ost 
)
static

Definition at line 1100 of file avconv.c.

Referenced by process_input_packet(), and transcode_subtitles().

◆ do_streamcopy()

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

Definition at line 1114 of file avconv.c.

Referenced by process_input_packet().

◆ ifilter_send_frame()

static int ifilter_send_frame ( InputFilter ifilter,
AVFrame frame 
)
static

Definition at line 1184 of file avconv.c.

Referenced by decode_audio(), and decode_video().

◆ ifilter_send_eof()

static int ifilter_send_eof ( InputFilter ifilter)
static

Definition at line 1256 of file avconv.c.

Referenced by send_filter_eof().

◆ decode()

static int decode ( AVCodecContext avctx,
AVFrame frame,
int *  got_frame,
AVPacket pkt 
)
static

◆ guess_input_channel_layout()

int guess_input_channel_layout ( InputStream ist)

Definition at line 1311 of file avconv.c.

Referenced by add_input_streams().

◆ decode_audio()

static int decode_audio ( InputStream ist,
AVPacket pkt,
int *  got_output 
)
static

Definition at line 1329 of file avconv.c.

Referenced by process_input_packet().

◆ decode_video()

static int decode_video ( InputStream ist,
AVPacket pkt,
int *  got_output 
)
static

Definition at line 1380 of file avconv.c.

Referenced by process_input_packet().

◆ transcode_subtitles()

static int transcode_subtitles ( InputStream ist,
AVPacket pkt,
int *  got_output 
)
static

Definition at line 1432 of file avconv.c.

Referenced by process_input_packet().

◆ send_filter_eof()

static int send_filter_eof ( InputStream ist)
static

Definition at line 1457 of file avconv.c.

Referenced by process_input_packet().

◆ process_input_packet()

static void process_input_packet ( InputStream ist,
const AVPacket pkt,
int  no_eof 
)
static

Definition at line 1469 of file avconv.c.

Referenced by process_input(), seek_to_start(), and transcode().

◆ print_sdp()

static void print_sdp ( void  )
static

Definition at line 1580 of file avconv.c.

Referenced by check_init_output_file().

◆ get_hwaccel()

static const HWAccel* get_hwaccel ( enum AVPixelFormat  pix_fmt)
static

Definition at line 1603 of file avconv.c.

Referenced by get_format().

◆ get_format()

static enum AVPixelFormat get_format ( AVCodecContext s,
const enum AVPixelFormat pix_fmts 
)
static

Definition at line 1612 of file avconv.c.

Referenced by init_input_stream().

◆ get_buffer()

static int get_buffer ( AVCodecContext s,
AVFrame frame,
int  flags 
)
static

Definition at line 1657 of file avconv.c.

Referenced by init_input_stream().

◆ init_input_stream()

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

Definition at line 1667 of file avconv.c.

Referenced by transcode_init().

◆ get_input_stream()

static InputStream* get_input_stream ( OutputStream ost)
static

◆ check_init_output_file()

static int check_init_output_file ( OutputFile of,
int  file_index 
)
static

Definition at line 1730 of file avconv.c.

Referenced by init_output_stream().

◆ init_output_bsfs()

static int init_output_bsfs ( OutputStream ost)
static

Definition at line 1776 of file avconv.c.

Referenced by init_output_stream().

◆ init_output_stream_streamcopy()

static int init_output_stream_streamcopy ( OutputStream ost)
static

Definition at line 1821 of file avconv.c.

Referenced by init_output_stream().

◆ set_encoder_id()

static void set_encoder_id ( OutputFile of,
OutputStream ost 
)
static

Definition at line 1886 of file avconv.c.

Referenced by init_output_stream_encode().

◆ parse_forced_key_frames()

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

Definition at line 1914 of file avconv.c.

Referenced by init_output_stream_encode().

◆ init_output_stream_encode()

static int init_output_stream_encode ( OutputStream ost)
static

Definition at line 1945 of file avconv.c.

Referenced by init_output_stream().

◆ transcode_init()

static int transcode_init ( void  )
static

Definition at line 2112 of file avconv.c.

Referenced by transcode().

◆ need_output()

static int need_output ( void  )
static

Definition at line 2253 of file avconv.c.

Referenced by transcode().

◆ select_input_file()

static InputFile* select_input_file ( void  )
static

Definition at line 2278 of file avconv.c.

Referenced by process_input().

◆ input_thread()

static void* input_thread ( void arg)
static

Definition at line 2302 of file avconv.c.

Referenced by init_input_threads().

◆ free_input_threads()

static void free_input_threads ( void  )
static

Definition at line 2331 of file avconv.c.

Referenced by transcode().

◆ init_input_threads()

static int init_input_threads ( void  )
static

Definition at line 2366 of file avconv.c.

Referenced by transcode().

◆ get_input_packet_mt()

static int get_input_packet_mt ( InputFile f,
AVPacket pkt 
)
static

Definition at line 2388 of file avconv.c.

Referenced by get_input_packet().

◆ get_input_packet()

static int get_input_packet ( InputFile f,
AVPacket pkt 
)
static

Definition at line 2410 of file avconv.c.

Referenced by process_input().

◆ got_eagain()

static int got_eagain ( void  )
static

Definition at line 2430 of file avconv.c.

Referenced by process_input().

◆ reset_eagain()

static void reset_eagain ( void  )
static

Definition at line 2439 of file avconv.c.

Referenced by process_input().

◆ duration_max()

static AVRational duration_max ( int64_t  tmp,
int64_t *  duration,
AVRational  tmp_time_base,
AVRational  time_base 
)
static

Definition at line 2447 of file avconv.c.

Referenced by seek_to_start().

◆ seek_to_start()

static int seek_to_start ( InputFile ifile,
AVFormatContext is 
)
static

Definition at line 2466 of file avconv.c.

Referenced by process_input().

◆ process_input()

static int process_input ( void  )
static

Definition at line 2539 of file avconv.c.

Referenced by transcode().

◆ transcode()

static int transcode ( void  )
static

Definition at line 2684 of file avconv.c.

Referenced by main().

◆ getutime()

static int64_t getutime ( void  )
static

Definition at line 2809 of file avconv.c.

Referenced by main().

◆ getmaxrss()

static int64_t getmaxrss ( void  )
static

Definition at line 2827 of file avconv.c.

Referenced by main().

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 2845 of file avconv.c.

Variable Documentation

◆ program_name

const char program_name[] = "avconv"

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

Definition at line 83 of file avconv.c.

Referenced by main(), show_banner(), show_help_default(), show_license(), show_usage(), and show_version().

◆ program_birth_year

const int program_birth_year = 2000

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

Definition at line 84 of file avconv.c.

Referenced by show_banner().

◆ vstats_file

FILE* vstats_file
static

Definition at line 86 of file avconv.c.

Referenced by avconv_cleanup(), and do_video_stats().

◆ nb_frames_drop

int nb_frames_drop = 0
static

Definition at line 88 of file avconv.c.

Referenced by do_video_out(), and print_report().

◆ want_sdp

int want_sdp = 1
static

Definition at line 90 of file avconv.c.

Referenced by check_init_output_file(), and main().

◆ transcoding_finished

int transcoding_finished
static

Definition at line 94 of file avconv.c.

Referenced by free_input_threads(), and input_thread().

◆ input_streams

InputStream** input_streams = NULL

Definition at line 97 of file avconv.c.

Referenced by add_input_streams(), init_input_filter(), open_input_file(), and open_output_file().

◆ nb_input_streams

int nb_input_streams = 0

◆ input_files

InputFile** input_files = NULL

◆ nb_input_files

int nb_input_files = 0

◆ output_streams

OutputStream** output_streams = NULL

Definition at line 102 of file avconv.c.

Referenced by new_output_stream(), and open_output_file().

◆ nb_output_streams

int nb_output_streams = 0

◆ output_files

OutputFile** output_files = NULL

◆ nb_output_files

int nb_output_files = 0

◆ filtergraphs

FilterGraph** filtergraphs

◆ nb_filtergraphs

int nb_filtergraphs

◆ received_sigterm

volatile int received_sigterm = 0
static

Definition at line 115 of file avconv.c.

Referenced by avconv_cleanup(), poll_filters(), sigterm_handler(), and transcode().

◆ received_nb_signals

volatile int received_nb_signals = 0
static

Definition at line 116 of file avconv.c.

Referenced by decode_interrupt_cb(), and sigterm_handler().

◆ int_cb