Hi,

On Wed, Dec 12, 2012 at 4:29 PM, Janne Grunau <janne-li...@jannau.net> wrote:
> On 2012-12-12 16:16:21 -0800, Ronald S. Bultje wrote:
>> Hi,
>>
>> On Wed, Dec 12, 2012 at 3:22 PM, Janne Grunau <janne-li...@jannau.net> wrote:
>> > On 2012-12-12 14:39:34 -0800, Ronald S. Bultje wrote:
>> >> Hi,
>> >>
>> >> On Wed, Dec 12, 2012 at 12:30 PM, Janne Grunau <janne-li...@jannau.net> 
>> >> wrote:
>> >> > Fixes hang in HPCAMAPALQ_BRCM_B.264_s14038 while waiting on invalid
>> >> > field 2.
>> >> > ---
>> >> >  libavcodec/h264.c | 3 ++-
>> >> >  1 file changed, 2 insertions(+), 1 deletion(-)
>> >> >
>> >> > diff --git a/libavcodec/h264.c b/libavcodec/h264.c
>> >> > index 546b046..d5a54e2 100644
>> >> > --- a/libavcodec/h264.c
>> >> > +++ b/libavcodec/h264.c
>> >> > @@ -433,7 +433,8 @@ static void await_references(H264Context *h)
>> >> >                      ff_thread_await_progress(&ref_pic->f,
>> >> >                                               FFMIN((row >> 1), 
>> >> > pic_height - 1),
>> >> >                                               0);
>> >> > -                } else if (FIELD_PICTURE && !ref_field_picture) { // 
>> >> > field referencing one field of a frame
>> >> > +                } else if (FIELD_PICTURE &&
>> >> > +                           (!ref_field_picture || ref_field > 1)) { // 
>> >> > field referencing one field of a frame or complementary field pair
>> >>
>> >> I don't understand this one. If we're referencing two fields,
>> >> shouldn't ref_field_picture automatically be true?
>> >
>> > it isn't and the code that marks both fields of a complementory field
>> > pair as available doesn't touch field_picture.
>>
>> Right, but isn't this wrong then? I mean, the reference is
>> field-based, so we're going to reference a field. The part where both
>> fields are available doesn't negate the fact that we're only
>> referencing one.
>>
>> It seems to me that a change like this could potentially cause use of
>> reference data before the second field of a reference is fully
>> decoded.
>
> I need to check
>
>> What does the hang look like?
>
> ref_field = ref_pic->f.reference;
>
> and it waits on ref_field in the next else that breaks when reference is
> PICT_FRAME

that's BOTTOM_FIELD | TOP_FIELD.

Ronald
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to