[FFmpeg-devel] Proposed vf_decimate enhancement
Ray Cole
the.other.ray.cole at gmail.com
Mon Dec 14 22:24:30 CET 2015
Quite honestly I decided it isn't worth the frustration of trying to submit a patch. It works for me and I'm happy with it.
-- Ray
On 12/14/2015 03:19 PM, Michael Niedermayer wrote:
> On Tue, Sep 29, 2015 at 11:02:33AM -0500, Ray Cole wrote:
>> Here is an updated patch. I cleaned the code up to hopefully be closer to standards. It works well for me, but your mileage may vary...
>>
>> --- vf_decimate.c 2015-09-29 10:56:46.171698492 -0500
>> +++ vf_decimatex.c 2015-09-29 10:59:50.679695685 -0500
> a git patch with a commit message would be better
> see:
> git commit -a
> git format-patch -1
>
>
> [...]
>
>> @@ -51,6 +52,10 @@
>> int bdiffsize;
>> int64_t *bdiffs;
>>
>> + /* Ray */
> git keeps track of who changed what
>
>
>
>> + int lastdrop;
>> + int64_t drop_count[25]; // drop counts
> The purpose of comments is to provide additional information not
> already in the field name
>
>
>> +
>> /* options */
>> int cycle;
>> double dupthresh_flt;
>> @@ -60,6 +65,9 @@
>> int blockx, blocky;
>> int ppsrc;
>> int chroma;
>> + int force_drop;
>> + int lock_on;
>> +
>> } DecimateContext;
>>
>> #define OFFSET(x) offsetof(DecimateContext, x)
>> @@ -71,9 +79,13 @@
>> { "scthresh", "set scene change threshold", OFFSET(scthresh_flt), AV_OPT_TYPE_DOUBLE, {.dbl = 15.0}, 0, 100, FLAGS },
>> { "blockx", "set the size of the x-axis blocks used during metric calculations", OFFSET(blockx), AV_OPT_TYPE_INT, {.i64 = 32}, 4, 1<<9, FLAGS },
>> { "blocky", "set the size of the y-axis blocks used during metric calculations", OFFSET(blocky), AV_OPT_TYPE_INT, {.i64 = 32}, 4, 1<<9, FLAGS },
>> - { "ppsrc", "mark main input as a pre-processed input and activate clean source input stream", OFFSET(ppsrc), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
>> + { "ppsrc", "mark main input as a pre-processed input and activate clean source input stream", OFFSET(ppsrc), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS },
>> - { "chroma", "set whether or not chroma is considered in the metric calculations", OFFSET(chroma), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, FLAGS },
>> + { "chroma", "set whether or not chroma is considered in the metric calculations", OFFSET(chroma), AV_OPT_TYPE_INT, {.i64=1}, 0, 1, FLAGS },
> this looks like a unintended mistake
>
>
>> + { "force_drop", "set to forcefully drop frame X in cycle", OFFSET(force_drop), AV_OPT_TYPE_INT, {.i64=-1}, -1, 4, FLAGS },
>> + { "lock_on", "set to lock on to a cycle", OFFSET(lock_on), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS },
>
>
>> +
>> { NULL }
>> +
>> };
>>
>> AVFILTER_DEFINE_CLASS(decimate);
>> @@ -140,13 +152,15 @@
>> q->totdiff = 0;
>> for (i = 0; i < dm->bdiffsize; i++)
>> q->totdiff += bdiffs[i];
>> +
>> q->maxbdiff = maxdiff;
>> +
>> }
> stray changes
> please read your patch before submitting
>
>
>
>>
>> static int filter_frame(AVFilterLink *inlink, AVFrame *in)
>> {
>> - int scpos = -1, duppos = -1;
>> - int drop = INT_MIN, i, lowest = 0, ret;
>> + int scpos = -1, duppos = -1, common = 0, start = 0;
>> + int drop = INT_MIN, i, lowest = 0, lowest_tot = 0, ret =0;
>> AVFilterContext *ctx = inlink->dst;
>> AVFilterLink *outlink = ctx->outputs[0];
>> DecimateContext *dm = ctx->priv;
>> @@ -176,17 +190,128 @@
>> dm->last = av_frame_clone(in);
>> dm->fid = 0;
>>
>> +
>> +// The major change starts here
> git keeps track of changes, theres no need to put such notes in
> the source
>
>
> [...]
>> @@ -372,6 +499,7 @@
>> fps = av_mul_q(fps, (AVRational){dm->cycle - 1, dm->cycle});
>> av_log(ctx, AV_LOG_VERBOSE, "FPS: %d/%d -> %d/%d\n",
>> inlink->frame_rate.num, inlink->frame_rate.den, fps.num, fps.den);
>> + outlink->flags |= FF_LINK_FLAG_REQUEST_LOOP;
> this flag no longer exists
>
> and please provide a commit message for the change which describes
> what is changed, how and why
>
>
> [...]
>
More information about the ffmpeg-devel
mailing list