[FFmpeg-devel] [PATCH]v308 and yuv4 encoders and decoders
Derek Buitenhuis
derek.buitenhuis at gmail.com
Fri Dec 30 20:30:17 CET 2011
On 30/12/2011 1:50 PM, Carl Eugen Hoyos wrote:
> Derek Buitenhuis<derek.buitenhuis<at> gmail.com> writes:
>
>> So I checked libquicktime's source code. The part you copied the ^0x80
>> from is yuv2.
>
> I copied it from libavcodec/rawdec.c, the only thing I used the libquicktime
> source for was to confirm that Y is 2x2. (Theoretically, it could be 4x1, or am
> I misunderstanding?)
>
>> yuv2 can have signed chroma (i.e. can have a negative
>> value), and that's why it xors with 0x80. yuv4 has unsigned chroma, so
>> I do not think you should be xoring with 0x80.
>
> Did you test?
No, but no I have.
>
>> Can you, say, compare output of libquicktime with your
>> decoder/encoder?
>
> I may be misunderstanding "compare" but without "^ 0x80", output looks very
> broken to me.
Ok, so after, testing, you are indeed correct. yuv4.c is anything but
nice read, however I found yuv4toyuv.c, which has:
> *u_out1++ = (int)*input_row++ + 0x80;
> *v_out1++ = (int)*input_row++ + 0x80;
Which would be equivalent to what you do, if all values
read in only use the lower 7 bits. I think.
I think it SHOULD be fine, since we do the same thing for
yuv2, which needs this as well.
- Derek
More information about the ffmpeg-devel
mailing list