On Mon, Jul 4, 2011 at 6:21 AM, Kostya <[email protected]> wrote:
> On Mon, Jul 04, 2011 at 06:08:20AM -0700, Jason Garrett-Glaser wrote:
>> 2011/7/4 Måns Rullgård <[email protected]>:
>> > Jason Garrett-Glaser <[email protected]> writes:
>> >
>> >> 2011/7/4 Måns Rullgård <[email protected]>:
>> >>> "Jason Garrett-Glaser " <[email protected]> writes:
>> >>>
>> >>>> Module: libav
>> >>>> Branch: master
>> >>>> Commit: 4320a309ce10a7eec93aef239a0776a33b1a5a34
>> >>>>
>> >>>> Author:    Jason Garrett-Glaser <[email protected]>
>> >>>> Committer: Jason Garrett-Glaser <[email protected]>
>> >>>> Date:      Mon Jun 27 13:07:26 2011 -0700
>> >>>>
>> >>>> H.264: make filter_mb_fast support the case of unavailable top mb
>> >>>>
>> >>>> Significantly faster deblocking in streams with lots of slices.
>> >>>>
>> >>>> ---
>> >>>>
>> >>>>  libavcodec/h264_loopfilter.c |   42 
>> >>>> ++++++++++++++++++++++++++++--------------
>> >>>>  1 files changed, 28 insertions(+), 14 deletions(-)
>> >>>
>> >>> This seems to have introduced some invalid reads per
>> >>> http://fate.libav.org/x86_32-linux-gcc-valgrind/20110704043908
>> >>
>> >> The valgrind log seems to suggest that qp0 =
>> >> s->current_picture.qscale_table[mb_xy-1]; also causes an invalid read.
>> >>  This is interesting, as this line executed when we were on the left
>> >> edge -- even before my patch.
>> >
>> > Valgrind is only able to catch it on the top row though.
>> >
>> >> Does qscale_table not have edge padding?
>> >
>> > Apparently not.
>>
>> How's this?
>>
>> Jason
>
>> From a9608ec7e4795079753eb649eaffdd1d3e90e4dd Mon Sep 17 00:00:00 2001
>> From: Jason Garrett-Glaser <[email protected]>
>> Date: Mon, 4 Jul 2011 06:05:34 -0700
>> Subject: [PATCH] H.264: fix overreads of qscale_table
>>
>> filter_mb_fast assumed that qscale_table was padded like many of the other 
>> tables.
>> ---
>>  libavcodec/mpegvideo.c |    5 +++--
>>  libavcodec/mpegvideo.h |    1 +
>>  2 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
>> index 4978d28..56c1b35 100644
>> --- a/libavcodec/mpegvideo.c
>> +++ b/libavcodec/mpegvideo.c
>> @@ -285,9 +285,10 @@ int ff_alloc_picture(MpegEncContext *s, Picture *pic, 
>> int shared){
>>          }
>>
>>          FF_ALLOCZ_OR_GOTO(s->avctx, pic->mbskip_table , mb_array_size * 
>> sizeof(uint8_t)+2, fail) //the +2 is for the slice end check
>> -        FF_ALLOCZ_OR_GOTO(s->avctx, pic->qscale_table , mb_array_size * 
>> sizeof(uint8_t)  , fail)
>> +        FF_ALLOCZ_OR_GOTO(s->avctx, pic->qscale_table_base , (big_mb_num + 
>> s->mb_stride) * sizeof(uint8_t)  , fail)
>>          FF_ALLOCZ_OR_GOTO(s->avctx, pic->mb_type_base , (big_mb_num + 
>> s->mb_stride) * sizeof(uint32_t), fail)
>>          pic->mb_type= pic->mb_type_base + 2*s->mb_stride+1;
>> +        pic->qscale_table= pic->qscale_table_base + 2*s->mb_stride+1;
>
> Please stop writing assignments like that. Copypasting is not an excuse.

You mean without the space?  I'm just doing it for consistency.
Changing the formatting in that file should be a separate patch.

Jason
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to