[FFmpeg-devel] [PATCH] lavfi: Port fspp to FFmpeg
Reimar Döffinger
Reimar.Doeffinger at gmx.de
Mon Dec 22 17:57:34 CET 2014
On 22.12.2014, at 17:23, Stefano Sabatini <stefasab at gmail.com> wrote:
> 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?
What codec did your lq version end up using? I suspect fspp is most tested and works best with MPEG-4 ASP.
It should significantly reduce blocking - obviously only if your video has significant blocking.
It used to work fairly well on early flv streaming videos.
More information about the ffmpeg-devel
mailing list