PDA

View Full Version : Modalità RGB vs. YUY2


Nosferatu
03-02-2004, 17:10
Stavo giocherellando con HuffYUV 2.1.1 e le modalità RGB32 e YUY2.
Come noto, la modalità YUY2 permette di salvare montagne di spazio su disco sottocampionando in 4:2:0 due canali croma, e ottenendo il terzo con semplici differenze con il canale luma.
Sottocampionare i canali croma è una cosa banale e utilizzata da un sacco di codec, visto che permette di tagliare 1/3 del bitrate quasi senza perdita.

Ma qui mi è venuto un dubbio: volendo avere una vera compressione lossless con HuffYUV, e partendo da un filmato MPEG-4, quindi DivX o XviD, si può comprimere in YUY2?
E cioè: MPEG-4 fa uso di sottocampionamento croma o lavora in RGB puro?

Per fare luce, con BSPlayer si può ottenere questa informazione premendo ALT+3, alla voce "Surface Type": sia DivX che XviD dichiarano un surface di tipo YUY2.

Tuttavia ho fatto una prova sommaria per confrontare i risultati così:
In VirtualDub ho generato 2 file avi con un solo fotogramma compresso in HuffYUV, nelle due modalità.
Poi ho riaperto i due file e ho salvato la BMP di quell'unico fotogramma.
Ebbene: i file sono binariamente diversi, anche se sinceramente ad occhio non vedo differenza.

Qualcuno ha informazioni aggiuntive circa YUY2 vs. RGB32 nei file DivX/XviD?

Nosferatu
04-02-2004, 13:42
Mi autorispondo per correggermi: un mio collega espertone mi segnala che YUY2 non sottocampiona i canali croma, bensì usa semplicemente un dominio diverso per definirli.

In pratica il sottocampionamento riguarda intrinsecamente il codec, e comunque di sicuro non riguarda gli MPEG-4, visto che ad esempio usano il Qpel che spacca il pixel in 4, altro che sottocampionarli!

Invece YUY2 salva spazio semplicemente usando meno bit di definizione per i due canali croma, es. 4 bit al posto dei canonici 8.

NicolaBot
06-02-2004, 11:34
Io avevo letto su una guida che il Qpel non spacca in 4 il pixel ma il blocco 16*16 utilizzato per la stima del moto e che con il divx il sottocampionamento c'è.

IMHO non avrebbe molto senso spaccare il singolo pixel in quattro.

Ciao