[FFmpeg-devel] [PATCH] lavfi: Port fspp to FFmpeg

Stefano Sabatini stefasab at gmail.com
Mon Dec 22 17:23:44 CET 2014


On date Monday 2014-12-22 13:07:03 +0100, Stefano Sabatini encoded:
> On date Friday 2014-12-19 16:46:40 +0530, arwa arif encoded:
> [...]
> > From c1c3255203226663fc382a0994182df3d558afe6 Mon Sep 17 00:00:00 2001
> > From: Arwa Arif <arwaarif1994 at gmail.com>
> > Date: Sun, 14 Dec 2014 12:03:31 +0530
> > Subject: [PATCH] lavfi: port mp=fspp to a native libavfilter filter
[...]
> > +    if (fspp->log2_count && !ctx->is_disabled) {
> > +        if (!fspp->use_bframe_qp && fspp->non_b_qp_table)
> > +            qp_table = fspp->non_b_qp_table;
> > +
> > +        if (qp_table || fspp->qp) {
> > +            const int cw = FF_CEIL_RSHIFT(inlink->w, fspp->hsub);
> > +            const int ch = FF_CEIL_RSHIFT(inlink->h, fspp->vsub);
> > +
> > +            /* get a new frame if in-place is not possible or if the dimensions
> > +             * are not multiple of 8 */
> > +            if (!av_frame_is_writable(in) || (inlink->w & 7) || (inlink->h & 7)) {
> > +                const int aligned_w = FFALIGN(inlink->w, 8);
> > +                const int aligned_h = FFALIGN(inlink->h, 8);
> > +
> > +                out = ff_get_video_buffer(outlink, aligned_w, aligned_h);
> > +                if (!out) {
> > +                    av_frame_free(&in);
> > +                    return AVERROR(ENOMEM);
> > +                }
> > +                av_frame_copy_props(out, in);
> 
> > +                out->width  = in->width;
> > +                out->height = in->height;
> 
> is this required?
> 
> [...]
> 
> LGTM otherwise. I'm going to test and see if it works on this machine.
> 
> What about adding a FATE test?

Note: I had to rebase the patch because of a conflict in version.h,
please always rebase against latest master.

@all

I'm testing with:
ffmpeg -i matrixbench_mpeg2.mpg -b:v 200k matrixbench_mpeg2-lq.mpg

ffplay -f lavfi -i "nullsrc=s=720x576 [bg]; movie=matrixbench_mpeg2-lq.mpg:s=dv+da [v][out1]; [v]split[v1][v2]; [v1]crop=in_w/2:in_h:0:0 [v1pp]; [v2]crop=in_w/2:in_h:in_w/2:0,fspp [v2pp]; [bg][v1pp] overlay[bg+v1pp]; [bg+v1pp][v2pp] overlay=W/2 [out0]"

I'm unable to see significant differences in terms of quality between
left and right part of the output (same with mp=fspp, so it doesn't
depend on the port).

Is this expected?

What's the use case of fspp?
-- 
FFmpeg = Fanciful & Fast Martial Puristic Elaborated Game


More information about the ffmpeg-devel mailing list