[x264-devel] Bug in X264: Intra-refresh uses non-refreshed pixels

Jason Garrett-Glaser darkshikari at gmail.com
Tue Sep 14 21:14:56 CEST 2010


On Tue, Sep 14, 2010 at 2:18 AM, Chris Brien <chris.brien at tandberg.com> wrote:
> On 14.09.2010 00:19, Jason Garrett-Glaser wrote:
>>
>> On Mon, Sep 13, 2010 at 9:46 AM, Chris Brien<chris.brien at tandberg.com>
>>  wrote:
>>>
>>> When decoding from a GDR recovery point, the stripe of intra macroblocks
>>> X264 generates as the refresh boundary is supposed to be pristine, using
>>> only pixel data from the left of the good/bad boundary in order to ensure
>>> that (prior to deblocking) the pixels to the left of the boundary are all
>>> known and correct.
>>>
>>> I4x4 macroblocks using vertical-left or diagonal-down-left prediction in
>>> the
>>> top-right 4x4 block use the C neighbour pixel. This means that there is a
>>> dependency on unknown pixels which can propagate down-left through the
>>> frame, and will not be cleared-up. These modes should be disabled for
>>> these
>>> blocks.
>>
>> Can you confirm that disabling these modes actually fixes it?  Here's a
>> patch.
>>
>> Dark Shikari
>
> After applying the patch, it would appear to be fixed. I can now decode the
> X264 encoded stream from any recovery point and eventually get pixel-exact
> results, both with the JM decoder, and ours.
>
> Thanks!
>
> Chris
>

OK, I'll come up with something that's less of a horrible hack and commit that.

Jason


More information about the x264-devel mailing list