ango ha detto:
Esiste una discussione dove è spiegato per benino la sequenza temporale e il ruolo del flusso dati dal DVD al monitor?
Non sono sicuro di aver capito le tue domande e non so nulla di regolazione di un CRT, ma posso riassumere la catena dei filtri.
Sorgente (Media/DVD/BD...) -> source/splitter (es. Haaili splitter per gli .mkv) -> flusso video + flusso audio + (eventuale) flusso sottotitoli
A questo punto ogni flusso prende la sua strada. Per il video:
Flusso video -> decoder (es. CoreAVC) -> video decodificato -> eventuale post-processing (es. ffdshow) -> video decodificato e manipolato -> renderer video
Lo scaling può avvenire nella fase di post-processing (se richiesto) o avviene comunque nel renderer se la risoluzione del video è diversa da quella del monitor. Può anche avvenire in entrambi.
La conversione colore può avvenire in una o più fasi distribuite tra decoder, post-processing e renderer. Avviene comunque nel renderer per il discorso che ho fatto alcuni post su.
Il tearing è legato alla tempistica del disegno del frame rispetto ai sincronismi video. Durante la durata di un refresh sul monitor, solo una parte del tempo è dedicata a trasmettere l'immagine (la cosiddetta parte attiva); la rimanente parte è costituita da Front Porch, Vertical Blank e Back Porch.
Ad esempio a 50Hz, un refersh dura 20ms. Di questi, solo ad esempio, 17 sono impiegati per trasmettere l'immagine al monitor. Gli altri tre sono disponibili per trasmettere altre cose (è qui per esempio che il PAL mette le informazioni TeleText, etc...).
La scheda video usa di norma due buffer dove accumula il disegno del frame. Quando finisce un frame, scambia i buffer, quello finito va al monitor e l'altro diventa disponibile per disegnare il frame succcessivo. Questo scambio può avvenire quando vogliamo, ma l'invio deve avvenire durante il Vertical Blank.
Se all'arrivo del Vertical Blank la scheda video sta ancora disegnando il frame, lo scambio viene forzato e al monitor che aveva già disegnato un pezzo del frame precedente, arriva il frame successivo: il risultato è due pezzi di due frame diversi sul monitor, separati da uno "strappo", in inglese tearing.
Perchè succede ? Un motivo è la scheda video troppo lenta: se nel caso dei 50Hz impiega più di 20ms a disegnare il frame, avremo tearing. In questo caso l'unica soluzione è cambiare scheda video.
Un altro motivo, più comune, è che il renderer comincia a disegnare il frame troppo a ridosso del Vertical Blank. Ad esempio, la scheda video impiega solo 12ms, ma comincia a disegnare solo a 8 ms dal Vertical Blank: risultato, tearing. In questo caso la soluzione è software e va dall'uso dell'Exclusive Renderless alla patch di Beliyaal in MPC-HC, all'uso del VSync di Reclock, etc...
Spero di aver risposto ad alcuni dubbi.