Quest’oggi, avendo un po’ di tempo a disposizione ho fatto un piccolo esperimento.
Ho scaricato da internet una demo di un programma di video editing ed ho esportato un fotogramma del DVD di Monsters in formato bitmap (in realtà non c’era alcun bisogno della demo… va bene anche un banalissimo “capture”, il quale non restituisce le caratteristiche dell’output, come credevo, ma dell’input).
Chi conosce un po’ di programmazione saprà che il codice per l’esportazione di una immagine richiede l’estrazione di tutte le informazioni (altezza, larghezza, risoluzione orizzontale, risoluzione verticale, numero di bit per pixel ecc.) dal file di origine, in questo caso lo stream video, ed il loro utilizzo per la ricreazione, sul disco, di un file con le stesse caratteristiche. Quindi si presume che i pixel del file bmp ottenuto dal video editor (o dal player) abbiano lo stesso numero di bit dei pixel a video. A questo punto ho importato il file bmp con un mio programma per l’elaborazione delle immagini e riottenuto, via codice, le informazioni relative al file bmp importato (anche in questo caso bastava “Proprietà” oppure Photoshop, ma un sorgente fornisce molte più informazioni ed è più sicuro) e………… sorpresa !
Il file ha la bellezza di 24 bit, il che significa, se non ho preso lucciole per lanterne, che sia con YUY2 (16 bit) che, a maggior ragione, con YV12 (12 bit), si perdono informazioni, ovvero sfumature di colore. Con ffdshow settato su YV12, visualizziamo immagini con la metà delle sfumature che si ottengono utilizzando RGB32 o RGB24 (che consiglio a Marlenio e a chi ha avuto problemi legati al 32, di provare), e non stiamo parlando della perdita di qualche sfumatura, ma di centinaia di migliaia ! Ecco perché la comparsa dei piani nelle immagini visualizzate in RGB32 rispetto ad YV12 e perché l’immagine di PowerDVD appare così piatta…
Non solo. Se avessi ottenuto come valore 32 bit non sarei stato così convinto. Poteva essere che gli sviluppatori del video editor, per risparmiare righe di codice, avessero utilizzato, il formato a 32 bit per il file bitmap di destinazione, indipendentemente dalle caratteristiche del file sorgente. Ma perché usare un formato inusuale come 24 bit avendo a disposizione un formato come il 32 bit se non per rispecchiare le caratteristiche del materiale sorgente ?
Non so voi, ma d’ora in poi per me non saranno più gli spazi colore a doversi adattare agli altri filtri (o al mio hardware), ma questi ultimi all’RGB32.
Finalmente un saldo punto di riferimento nel marasma di variabili che è ffdshow.
Raffaele