[FFmpeg-soc] [PATCH] updated! vf_overlay alpha patch and watermarking using PNG with alpha
Vitor Sessak
vitor1001 at gmail.com
Wed May 12 08:57:16 CEST 2010
Baptiste Coudurier wrote:
> Hi Vitor,
>
> On 12/08/2009 10:37 AM, Vitor Sessak wrote:
>> Stefano Sabatini wrote:
>>> On date Tuesday 2009-12-01 00:57:59 +0100, Stefano Sabatini encoded:
>>>> On date Tuesday 2009-12-01 00:50:50 +0100, Vitor Sessak encoded:
>>> [...]
>>>> I'm fine with committing the patch to soc if tested, even better would
>>>> be to try to push the filter to the main repo. Does someone want to
>>>> volunteer for this?
>>>
>>> A somehow tinied-up version which can be used as a base for SVN
>>> inclusion,
>>
>> Nice work!
>>
>>> I believe we should get rid of the blend parameter, also
>>> the expression evaluation may stay in a successive commit.
>>
>> Do you have any idea of how to get rid of it? Are you planning to
>> implement Michael's suggestion of calling swscale to convert one of the
>> inputs to the right pixel format?
>>
>> A few comments...
>>
>>
>> > static int query_formats(AVFilterContext *ctx)
>> > {
>> > OverlayContext *over = ctx->priv;
>> >
>> > if (over->blend) {
>> > enum PixelFormat pix_fmts1[] = { PIX_FMT_YUV420P, PIX_FMT_NONE };
>> > enum PixelFormat pix_fmts2[] = { PIX_FMT_YUVA420P, PIX_FMT_NONE };
>>
>> these can be const.
>>
>> > } else {
>> > avfilter_default_query_formats(ctx);
>>
>> Are all lavfi formats supported?
>>
>> >
>> > static void copy_blended( uint8_t *out, int out_linesize,
>> > const uint8_t *in, int in_linesize,
>> > const uint8_t *alpha, int alpha_linesize,
>> > int w, int h, int hsub, int vsub)
>> > {
>> > int x, y;
>> >
>> > for (y = 0; y < h; y++) {
>> > uint8_t *outp = out + y * out_linesize;
>> > const uint8_t *inp = in + y * in_linesize;
>> > const uint8_t *alphap = alpha + (y<<vsub) * alpha_linesize;
>> >
>> > for (x = 0; x < w; x++) {
>> > *outp = (*outp * (0xff - *alphap) + *inp * *alphap) >> 8;
>>
>> Looks like some rounding could be useful.
>
> Like:
> outp = (*outp * (0xff - *alphap) + *inp * *alphap + 128) >> 8;
>
> ?
I think so.
-Vitor
More information about the FFmpeg-soc
mailing list