ffmpeg_filter.c File Reference

#include "ffmpeg.h"
#include "libavfilter/avfilter.h"
#include "libavfilter/avfiltergraph.h"
#include "libavfilter/buffersink.h"
#include "libavutil/audioconvert.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/pixdesc.h"
#include "libavutil/pixfmt.h"
#include "libavutil/imgutils.h"
#include "libavutil/samplefmt.h"

Go to the source code of this file.

Defines

#define DEF_CHOOSE_FORMAT(type, var, supported_list, none, get_name, separator)
 Define a function for building a string containing a list of allowed formats,.
#define AUTO_INSERT_FILTER(opt_name, filter_name, arg)
#define DESCRIBE_FILTER_LINK(f, inout, in)
#define AUTO_INSERT_FILTER_INPUT(opt_name, filter_name, arg)

Functions

enum PixelFormat choose_pixel_fmt (AVStream *st, AVCodec *codec, enum PixelFormat target)
void choose_sample_fmt (AVStream *st, AVCodec *codec)
static char * choose_pix_fmts (OutputStream *ost)
 DEF_CHOOSE_FORMAT (enum AVSampleFormat, sample_fmt, sample_fmts, AV_SAMPLE_FMT_NONE, GET_SAMPLE_FMT_NAME,",") DEF_CHOOSE_FORMAT(int
 DEF_CHOOSE_FORMAT (uint64_t, channel_layout, channel_layouts, 0, GET_CH_LAYOUT_NAME,", ")
static void init_input_filter (FilterGraph *fg, AVFilterInOut *in)
static int configure_output_video_filter (FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
static int configure_output_audio_filter (FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
int configure_output_filter (FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
static int sub2video_prepare (InputStream *ist)
static int configure_input_video_filter (FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
static int configure_input_audio_filter (FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
static int configure_input_filter (FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
int configure_filtergraph (FilterGraph *fg)
int ist_in_filtergraph (FilterGraph *fg, InputStream *ist)

Variables

 sample_rate
 supported_samplerates
 GET_SAMPLE_RATE_NAME


Define Documentation

#define AUTO_INSERT_FILTER ( opt_name,
filter_name,
arg   ) 

Value:

do {                 \
    AVFilterContext *filt_ctx;                                              \
                                                                            \
    av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi "            \
           "similarly to -af " filter_name "=%s.\n", arg);                  \
                                                                            \
    ret = avfilter_graph_create_filter(&filt_ctx,                           \
                                       avfilter_get_by_name(filter_name),   \
                                       filter_name, arg, NULL, fg->graph);  \
    if (ret < 0)                                                            \
        return ret;                                                         \
                                                                            \
    ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0);                 \
    if (ret < 0)                                                            \
        return ret;                                                         \
                                                                            \
    last_filter = filt_ctx;                                                 \
    pad_idx = 0;                                                            \
} while (0)

Referenced by configure_output_audio_filter().

#define AUTO_INSERT_FILTER_INPUT ( opt_name,
filter_name,
arg   ) 

Value:

do {                 \
    AVFilterContext *filt_ctx;                                              \
                                                                            \
    av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi "            \
           "similarly to -af " filter_name "=%s.\n", arg);                  \
                                                                            \
    snprintf(name, sizeof(name), "graph %d %s for input stream %d:%d",      \
                fg->index, filter_name, ist->file_index, ist->st->index);   \
    ret = avfilter_graph_create_filter(&filt_ctx,                           \
                                       avfilter_get_by_name(filter_name),   \
                                       name, arg, NULL, fg->graph);         \
    if (ret < 0)                                                            \
        return ret;                                                         \
                                                                            \
    ret = avfilter_link(filt_ctx, 0, first_filter, pad_idx);                \
    if (ret < 0)                                                            \
        return ret;                                                         \
                                                                            \
    first_filter = filt_ctx;                                                  \
} while (0)

Referenced by configure_input_audio_filter().

#define DEF_CHOOSE_FORMAT ( type,
var,
supported_list,
none,
get_name,
separator   ) 

Value:

static char *choose_ ## var ## s(OutputStream *ost)                            \
{                                                                              \
    if (ost->st->codec->var != none) {                                         \
        get_name(ost->st->codec->var);                                         \
        return av_strdup(name);                                                \
    } else if (ost->enc->supported_list) {                                     \
        const type *p;                                                         \
        AVIOContext *s = NULL;                                                 \
        uint8_t *ret;                                                          \
        int len;                                                               \
                                                                               \
        if (avio_open_dyn_buf(&s) < 0)                                         \
            exit_program(1);                                                   \
                                                                               \
        for (p = ost->enc->supported_list; *p != none; p++) {                  \
            get_name(*p);                                                      \
            avio_printf(s, "%s" separator, name);                              \
        }                                                                      \
        len = avio_close_dyn_buf(s, &ret);                                     \
        ret[len - 1] = 0;                                                      \
        return ret;                                                            \
    } else                                                                     \
        return NULL;                                                           \
}
Define a function for building a string containing a list of allowed formats,.

Definition at line 136 of file ffmpeg_filter.c.

#define DESCRIBE_FILTER_LINK ( f,
inout,
in   ) 

Value:

{                                                                  \
    AVFilterContext *ctx = inout->filter_ctx;                      \
    AVFilterPad *pads = in ? ctx->input_pads  : ctx->output_pads;  \
    int       nb_pads = in ? ctx->input_count : ctx->output_count; \
    AVIOContext *pb;                                               \
                                                                   \
    if (avio_open_dyn_buf(&pb) < 0)                                \
        exit_program(1);                                           \
                                                                   \
    avio_printf(pb, "%s", ctx->filter->name);                      \
    if (nb_pads > 1)                                               \
        avio_printf(pb, ":%s", avfilter_pad_get_name(pads, inout->pad_idx));\
    avio_w8(pb, 0);                                                \
    avio_close_dyn_buf(pb, &f->name);                              \
}

Definition at line 472 of file ffmpeg_filter.c.

Referenced by configure_input_filter(), and configure_output_filter().


Function Documentation

static char* choose_pix_fmts ( OutputStream ost  )  [static]

Definition at line 90 of file ffmpeg_filter.c.

Referenced by configure_output_video_filter().

enum PixelFormat choose_pixel_fmt ( AVStream st,
AVCodec codec,
enum PixelFormat  target 
)

Definition at line 36 of file ffmpeg_filter.c.

Referenced by choose_pix_fmts(), and read_ffserver_streams().

void choose_sample_fmt ( AVStream st,
AVCodec codec 
)

Definition at line 68 of file ffmpeg_filter.c.

Referenced by read_ffserver_streams().

int configure_filtergraph ( FilterGraph fg  ) 

static int configure_input_audio_filter ( FilterGraph fg,
InputFilter ifilter,
AVFilterInOut in 
) [static]

Definition at line 613 of file ffmpeg_filter.c.

Referenced by configure_input_filter().

static int configure_input_filter ( FilterGraph fg,
InputFilter ifilter,
AVFilterInOut in 
) [static]

Definition at line 692 of file ffmpeg_filter.c.

Referenced by configure_filtergraph().

static int configure_input_video_filter ( FilterGraph fg,
InputFilter ifilter,
AVFilterInOut in 
) [static]

Definition at line 547 of file ffmpeg_filter.c.

Referenced by configure_input_filter().

static int configure_output_audio_filter ( FilterGraph fg,
OutputFilter ofilter,
AVFilterInOut out 
) [static]

Definition at line 367 of file ffmpeg_filter.c.

Referenced by configure_output_filter().

int configure_output_filter ( FilterGraph fg,
OutputFilter ofilter,
AVFilterInOut out 
)

Definition at line 489 of file ffmpeg_filter.c.

Referenced by configure_filtergraph(), and init_output_filter().

static int configure_output_video_filter ( FilterGraph fg,
OutputFilter ofilter,
AVFilterInOut out 
) [static]

Definition at line 284 of file ffmpeg_filter.c.

Referenced by configure_output_filter().

DEF_CHOOSE_FORMAT ( uint64_t  ,
channel_layout  ,
channel_layouts  ,
,
GET_CH_LAYOUT_NAME  ,
,
 
)

Type Constraints

Definition at line 171 of file ffmpeg_filter.c.

DEF_CHOOSE_FORMAT ( enum  AVSampleFormat,
sample_fmt  ,
sample_fmts  ,
AV_SAMPLE_FMT_NONE  ,
GET_SAMPLE_FMT_NAME  ,
,
 
)

static void init_input_filter ( FilterGraph fg,
AVFilterInOut in 
) [static]

Definition at line 209 of file ffmpeg_filter.c.

Referenced by configure_filtergraph().

int ist_in_filtergraph ( FilterGraph fg,
InputStream ist 
)

Definition at line 766 of file ffmpeg_filter.c.

Referenced by decode_audio(), and decode_video().

static int sub2video_prepare ( InputStream ist  )  [static]

Definition at line 501 of file ffmpeg_filter.c.

Referenced by configure_input_video_filter().


Variable Documentation

Definition at line 168 of file ffmpeg_filter.c.

Definition at line 168 of file ffmpeg_filter.c.

Referenced by print_codec().


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