Auravision: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
No edit summary
Line 20: Line 20:
== Hypothesis 2 ==
== Hypothesis 2 ==
--[[User:Kostya|Kostya]] 06:07, 10 December 2008 (EST)
--[[User:Kostya|Kostya]] 06:07, 10 December 2008 (EST)
 
<pre>
first 16 bytes - some rubbish
first 16 bytes - some rubbish
next 16 bytes - quantization table for luma
next 16 bytes - quantization table for luma
next 16 bytes - quantization table for chroma
next 16 bytes - quantization table for chroma
 
</pre>
the rest is packed into nibbles somehow with actual value obtained via table
the rest is packed into nibbles somehow with actual value obtained via table


[[Category:Video Codecs]]
[[Category:Video Codecs]]
[[Category:Undiscovered Video Codecs]]
[[Category:Undiscovered Video Codecs]]

Revision as of 07:34, 10 December 2008

According to various codec lists, AURA is a YUV 4:1:1 codec while AUR2 is YUV 4:2:2. The payload of an AURA frame begins with the 6 ASCII bytes 'YUV411'.

Hypothesis

--Multimedia Mike 02:42, 10 December 2008 (EST)

Any given AURA sample contains frames of a constant size. For 160x120 files, the frames are each 14448 bytes. For 240x180 files, the frames are each 32448 bytes. In YUV 4:1:1 data, a 4x4 block consisting of 16 pixels assigns a Y sample to each pixel while all 16 pixels share a U and a V sample. If each sample is 1 byte, the size of a raw YUV 4:1:1 frame is (width * height * 18) / 16. This formula does not reconcile with AURA frames.

However, if each of the Y samples is only coded with 5 bits, the observed frame sizes come close, with 48 extra bytes. Indeed, the frames do appear to begin with a 48-byte header. So the size of the frame is calculated as

 p = width * height
 48 + (p * 5/8) + (p/16) * 2

Testing this hypothesis might require trying several different bit reading methods.

Hypothesis 2

--Kostya 06:07, 10 December 2008 (EST)

first 16 bytes - some rubbish
next 16 bytes - quantization table for luma
next 16 bytes - quantization table for chroma

the rest is packed into nibbles somehow with actual value obtained via table