[FFmpeg-devel] [PATCH] Move VC1 loop filter to DSPContext

David Conrad lessen42
Tue Apr 14 06:04:35 CEST 2009


On Apr 13, 2009, at 11:09 AM, Kostya Shishkov wrote:

> On Mon, Apr 13, 2009 at 11:39 AM, David Conrad <lessen42 at gmail.com>  
> wrote:
>> On Apr 3, 2009, at 2:42 AM, Kostya wrote:
>>
>>> On Wed, Apr 01, 2009 at 02:44:13PM -0400, David Conrad wrote:
>>>>
>>>> The loop filter is identical to the VC1 spec and the one in the
>>>> reference implementation.
>>>> The file I have that uses the loop filter is bitexact to the binary
>>>> codec for I and P frames, but not B frames.
>>>> Of the files I have that do not use the loop filter, three are
>>>> bitexact and one is not bitexact for any frame.
>>>> The two files that aren't bitexact are from HDDVD rips, so I'll  
>>>> create
>>>> a roundup ticket since there's probably some weird feature or
>>>> something being used.
>>>
>>> That may be caused by the fact spec requires 16-bit processing
>>> (well, 10-bit) because of transform and filtering (loop, overlap)  
>>> and
>>> my code uses 8-bit everywhere.
>>>
>>> Now I'm a bit far from my computers so I probably look at it in two
>>> weeks. Roundup ticket will be a good reminder.
>>
>> I was looking through the code, and it seems that qpel isn't done for
>> forward MVs, nor is the rounding flag taken into account  
>> (vc1_interp_mc()
>> line 1911-1919 of vc1.c). I haven't read the spec to see if this is  
>> actually
>> correct, but I'll look into this more tomorrow unless Kostya beats  
>> me to it.
>
> Yes, please look.
> Maybe it should be 1/4 pel MC there too.

It turns out that, although needed, the lack of qpel on forward MVs  
wasn't causing the main +/- 1 differences; that was due to MMX2 hpel  
and MMX no_rnd hpel. The MMX2 hpel was under !bitexact, so my fault  
there; I'm looking into why the MMX no_rnd hpel isn't bitexact with  
the C version. This still leaves some +/- 1 differences that appear to  
be loop filter related.



More information about the ffmpeg-devel mailing list