[FFmpeg-soc] [soc]: r1867 - in libavfilter: avfilter.c diffs/04_ffmpeg_filters.diff
Vitor Sessak
vitor1001 at gmail.com
Sat Feb 9 18:00:06 CET 2008
Hi
Bobby Bingham wrote:
> On Sat, 9 Feb 2008 12:03:35 +0100 (CET)
> vitor <subversion at mplayerhq.hu> wrote:
>
>> Author: vitor
>> Date: Sat Feb 9 12:03:35 2008
>> New Revision: 1867
>>
>> Log:
>> The filter framework as is hangs with filters that
>> modify the input buffer, even if it asks for the right
>> permission. This is a fix for that.
>> See "Box blurring with libavfilter" thread in libav-user.
>>
>>
>> Modified:
>> libavfilter/avfilter.c
>> libavfilter/diffs/04_ffmpeg_filters.diff
>>
>
> [...]
>
>>
>> void avfilter_draw_slice(AVFilterLink *link, int y, int h)
>> @@ -253,6 +256,7 @@ void avfilter_draw_slice(AVFilterLink *l
>> if(link->srcpic) {
>> avcodec_get_chroma_sub_sample(link->format, &hsub, &vsub);
>>
>> + link->cur_pic->pts = link->srcpic->pts;
>> src[0] = link->srcpic-> data[0] + y * link->srcpic->
>> linesize[0]; dst[0] = link->cur_pic->data[0] + y *
>> link->cur_pic->linesize[0]; for(i = 1; i < 4; i ++) {
>
> This is probably better done in avfilter_start_frame. That way it's
> not done repeatedly for each slice, and the filter can change the pts
> of the frame in its own start_frame if it wants.
>
> [...]
>
>> @@ -76,7 +76,10 @@ Index: ffmpeg.c
>> + FilterInPriv *priv = link->src->priv;
>> + AVFilterPicRef *picref;
>> +
>> -+ picref = avfilter_get_video_buffer(link, AV_PERM_WRITE);
>> ++ /* This picture will be needed unmodified later for decoding
>> the next ++ * frame */
>> ++ picref = avfilter_get_video_buffer(link, AV_PERM_PRESERVE |
>> ++ AV_PERM_REUSE2);
>
> You should probably keep the AV_PERM_WRITE flag in there as well.
Completely agree with both. Changed.
Thanks,
-Vitor
More information about the FFmpeg-soc
mailing list