diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-01-31 18:51:47 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-01-31 21:32:06 +0100 |
commit | 14b171cd71f2b5f1cc66e4df89c2692f68ac098b (patch) | |
tree | d301b4b78e21e7399d0c9b9f4206e00b1b99578f | |
parent | b482c001214fc519cf6be7802458bf8e441991b7 (diff) | |
download | ffmpeg-14b171cd71f2b5f1cc66e4df89c2692f68ac098b.tar.gz |
Add sample_aspect_ratio to AVFilterLink
-rw-r--r-- | doc/APIchanges | 3 | ||||
-rw-r--r-- | libavfilter/avfilter.c | 4 | ||||
-rw-r--r-- | libavfilter/avfilter.h | 5 | ||||
-rw-r--r-- | libavfilter/vf_aspect.c | 14 | ||||
-rw-r--r-- | libavfilter/vf_transpose.c | 5 |
5 files changed, 29 insertions, 2 deletions
diff --git a/doc/APIchanges b/doc/APIchanges index aa1221df45..d6d5f85c08 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2009-03-08 API changes, most recent first: +2011-01-31 - X - lavfi 1.75.0 - AVFilterLink sample_aspect_ratio + Add sample_aspect_ratio field to AVFilterLink. + 2011-01-15 - r26374 - lavfi 1.74.0 - AVFilterBufferRefAudioProps Rename AVFilterBufferRefAudioProps.samples_nb to nb_samples. diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 6581af56af..aad3a5b0b1 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -194,6 +194,10 @@ int avfilter_config_links(AVFilterContext *filter) link->time_base = link->src && link->src->input_count ? link->src->inputs[0]->time_base : AV_TIME_BASE_Q; + if (link->sample_aspect_ratio.num == 0 && link->sample_aspect_ratio.den == 0) + link->sample_aspect_ratio = link->src->input_count ? + link->src->inputs[0]->sample_aspect_ratio : (AVRational){1,1}; + if ((config_link = link->dstpad->config_props)) if ((ret = config_link(link)) < 0) return ret; diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index ad8b1e51a5..48555fdbaa 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -27,7 +27,7 @@ #include "libavcore/samplefmt.h" #define LIBAVFILTER_VERSION_MAJOR 1 -#define LIBAVFILTER_VERSION_MINOR 74 +#define LIBAVFILTER_VERSION_MINOR 75 #define LIBAVFILTER_VERSION_MICRO 0 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ @@ -580,9 +580,10 @@ struct AVFilterLink { enum AVMediaType type; ///< filter media type - /* These two parameters apply only to video */ + /* These parameters apply only to video */ int w; ///< agreed upon image width int h; ///< agreed upon image height + AVRational sample_aspect_ratio; ///< agreed upon sample aspect ratio /* These two parameters apply only to audio */ int64_t channel_layout; ///< channel layout of current buffer (see libavcore/audioconvert.h) int64_t sample_rate; ///< samples per second diff --git a/libavfilter/vf_aspect.c b/libavfilter/vf_aspect.c index 6f86bf2924..95bfb666ff 100644 --- a/libavfilter/vf_aspect.c +++ b/libavfilter/vf_aspect.c @@ -82,6 +82,9 @@ static int setdar_config_props(AVFilterLink *inlink) av_log(inlink->dst, AV_LOG_INFO, "w:%d h:%d -> dar:%d/%d par:%d/%d\n", inlink->w, inlink->h, dar.num, dar.den, aspect->aspect.num, aspect->aspect.den); + + inlink->sample_aspect_ratio = aspect->aspect; + return 0; } @@ -108,6 +111,16 @@ AVFilter avfilter_vf_setdar = { #endif /* CONFIG_SETDAR_FILTER */ #if CONFIG_SETSAR_FILTER +/* for setdar filter, convert from frame aspect ratio to pixel aspect ratio */ +static int setsar_config_props(AVFilterLink *inlink) +{ + AspectContext *aspect = inlink->dst->priv; + + inlink->sample_aspect_ratio = aspect->aspect; + + return 0; +} + AVFilter avfilter_vf_setsar = { .name = "setsar", .description = NULL_IF_CONFIG_SMALL("Set the pixel sample aspect ratio."), @@ -118,6 +131,7 @@ AVFilter avfilter_vf_setsar = { .inputs = (AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, + .config_props = setsar_config_props, .get_video_buffer = avfilter_null_get_video_buffer, .start_frame = start_frame, .end_frame = avfilter_null_end_frame }, diff --git a/libavfilter/vf_transpose.c b/libavfilter/vf_transpose.c index 970c38120d..272b17ff1a 100644 --- a/libavfilter/vf_transpose.c +++ b/libavfilter/vf_transpose.c @@ -102,6 +102,11 @@ static int config_props_output(AVFilterLink *outlink) outlink->w = inlink->h; outlink->h = inlink->w; + if (inlink->sample_aspect_ratio.num){ + outlink->sample_aspect_ratio = av_div_q((AVRational){1,1}, inlink->sample_aspect_ratio); + } else + outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; + av_log(ctx, AV_LOG_INFO, "w:%d h:%d dir:%d -> w:%d h:%d rotation:%s vflip:%d\n", inlink->w, inlink->h, trans->dir, outlink->w, outlink->h, trans->dir == 1 || trans->dir == 3 ? "clockwise" : "counterclockwise", |