Carlo Macchiavello

Tutto è possibile

Tag: standard

H264 standard… mica tanto

Spesso mi sento dire, mi faccia un mp4 che è standard … sorrido e creo un file che so essere compatibile con le esigenze del cliente.

Una volta era più facile distribuire un video, perché i supporti erano più limitati a vhs o dvd, con due standard video PAL o NTSC per distribuire in tutto il mondo.

Oggi ci sono mille e più varianti, ad esempio se si fornisce un supporto solido come il Blu-ray ci sono quelle che vengono indicate come le specifiche di base, e le varianti di formato… che ogni anno cambiano sul sito ufficiale del consorzio, perché a seconda del lettore da tavolo potrebbe essere supportata o no la variante, non dipende dalla data di produzione, o dal brand, anzi alle volte prodotti di marchi meno noti supportano più formati di altri più blasonati.

Lo standard del Blu-ray nasce a 24 fotogrammi al secondo, per rispettare la naturale creazione dei film, senza alterazioni su durata della parte video o alterazione sulla parte audio. Poco dopo la sua nascita è stato subito aggiunto il 23,976 per supportare più facilmente la riproduzione nel mondo Americano e Giapponese (NTSC a 60 hrz). Il codec di compressione di nascita era l’mpeg2 come il dvd (anche se con una variante dedicata all’alta definizione) anche se quasi subito fu introdotto il formato H264 (variante del codec mpeg 4), poi di recente aggiornato al suo successore H265.

Oggi il Blu-ray supporta dal 23,976 24 25 29,97 30 48 50 59,94 60, e neanche tutti in stream progressivo, ma alcuni solo in stream interlacciato per questioni di compatibilità.

Questo per dire come un prodotto che nasceva per uniformare e offrire il massimo della qualità della visione casalinga senza “interpretazioni” si è trasformato nell’insalata dei formati. Inoltre a seconda del monitor, televisore o proiettore su cui si vedono i risultati le immagini saranno più o meno fluidi o naturali.

Quando ci viene chiesto un H264 standard ci viene chiesto il nulla, perché lo standard è molto ampio e a seconda del dispositivo con cui verrà letto verrà INTERPRETATO in modo più i meno fedele.

Lo standard H264 prevede di registrare da un minimo di un segnale 8 bit 4:2:0 ad una serie di informazioni fino a 12bit 4:4:4, cambiare le impostazioni di codifica punto per punto del filmato, gestire più flussi video sovrapposti, alpha, riproduzioni parziali dei dati, cioè ottimizzare in lettura una scalabilità 1:2,1:3,1:4 etc dei pixel, inglobare codice, indici di capitoli, aree sensibili con dati a link e molto altro ancora; peccato che quasi nessun encoder sfrutti tutte queste caratteristiche.

Quando si crea un file H264 la maggior parte degli encoder ci permette solo di impostare il tipo di compressione e i profili, ma niente di più.

Ironicamente invece di usare un prodotto commerciale, la soluzione più versatile anche se meno comoda è il prodotto freeware ffmpeg, un programma a comando di linea che supporta praticamente tutte le funzioni di moltissimo codec sia in ingresso che uscita, ed è disponibile su tutti i principali sistemi operativi, sono state sviluppate diverse interfacce per utilizzare in modo più comodo e flessibile il prodotto.

Considerato che chi arriva ad un articolo di questo tipo di aspetta un suggerimento sugli “standard” vi posso dare dei suggerimenti su come affrontare il discorso e cosa scegliere come impostazioni e cosa influenza qualità e “compatibilità”.

⁃ Riproduzione da televisore o decoder o player multimediale

⁃ Riproduzione da computer diretto

⁃ Caricamento online

Anche se sono le situazioni più comuni in realtà aprono mille e più situazioni e varianti, perché in realtà la questione della riproduzione è al 50% dipendente dal file e al 50% dal sistema di riproduzione.

Quando si crea un file “classico” si sceglie la risoluzione, i fotogrammi al secondo, il bitrate e se questo è fisso o variabile.

In generale si deve creare un equilibrio tra i dati al secondo letto dal dispositivo e la qualità finale, questo significa che se si sceglie una compressione fissa vuol dire che ogni fotogramma avrà la stessa quantità di informazioni registrabili, immaginiamo 2000, ma se ho un fotogramma di una persona davanti ad un muro bianco tutti i dettagli vengono dedicati alla persona, se ho 20 persone gli stessi dati vengono “divisi” per registrare, quindi ogni persona al max avrà 100 per registrare i dettagli, quindi l’immagine sarà meno dettagliata.

Questo sistema permette di avere i seguenti caratteristiche:

⁃ Funziona anche su dispositivi più semplici

⁃ Prevedibilità della dimensione finale del file.

⁃ Per migliorare la qualità basta alzare il bitrate globale (entro certi limiti).

⁃ Per migliorare la compatibilità con i vecchi dispositivi basta abbassare il bitrate.

⁃ Non si notano jittering di decodifica dei movimenti perché i fotogrammi non devono essere creati ma sono tutti completi.

Se si sceglie una compressione variabile si imposta un range di dati minimo e massimo, per cui il sistema di compressione esegue due livelli di compressione, sia creando un frame Delta e un frame parziale per cui vengono creati dei gruppi di fotogrammi, con la logica di creare il primo frame intero, il secondo frame memorizza solo la differenza tra il primo e il secondo, il terzo la differenza tra il secondo e il terzo e così via fino al prossimo fotogramma Delta.

Il secondo livello di compressione variabile si preoccupa di distribuire una quantità di dati del gruppo in funzione delle necessità, di quanti dati sono necessari fotogramma per fotogramma, ottimizzando peso e qualità.

Il risultato ha caratteristiche differenti rispetto al primo metodo :

⁃ Con lo stesso bitrate massimale la qualità può essere notevolmente migliore

⁃ Lo stream dei dati è più efficiente via rete

Ma ci sono dei contro :

⁃ Questa lettura chiede cache più grandi e dispositivi più potenti perché i fotogrammi sono creati al volo, non esistono completamente

⁃ Se si vuole andare avanti e indietro nel filmato la richiesta di memoria e potenza sale

⁃ Alcuni tipi di filmati e movimenti possono con alcuni encoder dare risultati peggiori che il primo metodo perché da frame a frame sarà meno coerente come struttura e forma (se si lavora solo con bitrate molto bassi)

⁃ In caso di problemi di stream dei dati si possono vedere dei salti nei movimenti veloci, causando una visione a scatti.

⁃ Su dispositivi più vecchi possono esserci riproduzioni di artefatti (blocchi di movimento etc) che non sono presenti nel filmato originale.

In conclusione :

A seconda del dispositivo più o meno recente si deve creare un h264 con il primo metodo e bitrate bassi se si vuole vedere su ogni dispositivo vecchio e/o poco potente come molti smartphone di basso livello; con dispositivi moderni si può creare video col secondo metodo che a parità di peso offrirà una qualità superiore e con dettaglio e sfumature più efficienti.

 


USB 3.0 … dipende diciamo 2.5 vah…

EU-4306_USB3

 

USB 3.0 una evoluzione dello standard per aumentare la velocità di trasferimento dati di xx volte.

Tutti più felici che per copiare i dati, mettere al sicuro i nostri dati, le fotografie, i filmati, i tempi si riducono in modo notevole.

Il mercato è pieno di periferiche di archiviazione usb 3.0, portatili e fissi hanno praticamente quasi solo porte usb 3.0, un paradiso… quasi …

La teoria dice che lo standard 3.0 ci porta dai 60 mb/s al 640 mb/s quindi parliamo di oltre dieci volte più veloce nel trasferire i dati tra un dispositivo all’altro.

La teoria, ma la pratica?

La teoria è questa, mentre la realtà è ben differente, perchè le vere performance sono di gran lunga superiore all’usb 2.0 ma ci sono spesso colli di bottiglia che non vengono considerati.

  • la velocità del chipset della scheda usb 3.0 del computer
  • la velocità del chipset del controller del supporto dati
  • la velocità del supporto da cui si copiano i dati
  • la velocità del supporto su cui si copiano i dati
  • se il supporto sorgente e origine condividono lo stesso controller il chipset riesce a distribuire il flusso dati in modo uniforme.

Facciamo un esempio pratico : compro il disco esterno USB 3.0 di marca nota XX (considerata la velocità con cui cambiano i modelli e i dispositivi, non ha senso indicare marca e modello, visto che lo stesso modello acquistato più volte conteneva dischi diversi e di velocità differenti), provo a copiare dei dati e lo trovo decisamente lento…
Provo a cambiare la porta del computer, niente; provo a cambiare computer, niente; provo a cambiare la sorgente dei dati, niente… sono un testardo, apro il box del disco (annullando la garanzia, ma pazienza), scopro che il disco contenuto è un 3900 rpm, ovvero un disco robusto, a bassa velocità di rotazione, che per un disco da 2.5 portatile è ottimo perchè si riducono le possibilità di danni in caso di urto e cadute in fase di rotazione, ma che riduce le performance effettive durante la copia.

ora nella maggior parte dei casi, i dischi meccanici singoli non hanno la capacità di saturare la banda del sata o dell’USB 3.0, ma se uso dei raid dove la somma delle performance dei dischi si somma, potrei anche arrivare a raggiungerla. Nella media delle persone, nessuno ha il problema di questo tipo, nè soprattutto si accorge delle differenze.

Chi invece deve maneggiare tanti dati professionalmente (backup dati, backup filmati etc) deve tener conto di diversi fattori tecnici, non solo relativi ma combinati tra di loro, perchè un disco veloce con poca cache può essere superato da un disco poco più lento, ma con maggior cache; la differenza di taglia del disco influisce sulle performance, perchè se i dischi sono più densi a parità di giri offrono un output dati maggiore quindi possono offrire maggior velocità al salire con la taglia.

Le incompatibilità che non esistevano sull’USB 2.0

In un mercato dove tutti fanno a gara ad offrire il prodotto usb 3.0 al prezzo più basso sembra di essere in paradiso, ma…
Non tutti sanno che ci sono incompatibilità più o meno forti tra i diversi chipset dei controller delle schede madri e quelli dei box/nas/dischi esterni.

Dopo aver avuto una serie di problemi con diverse schede madri, che sganciavano diversi dischi, ho fatto un po’ di ricerche e ho scoperto che i diversi produttori di chipset fanno a scaricabarile tra di loro per le responsabilità degli sganci dei supporti e/o problemi di comunicazione tra di loro. Esistono centinaiai di thread nei forum informatici che mettono in evidenza che gli accoppiamenti più a rischio sono quando si collegano i chipset :

– JMICRON JMS539 + NEC/RENESAS D720200
– JMICRON JMS551 + NEC/RENESAS D720200
– JMICRON JMS539 + ETRON EJ168A
– JMICRON JMS551 + ETRON EJ168A

quando si combinano questi chipset il rischio, o la certezza, visto che il comportamento che ne consegue è lineare, è che il dispositivo collegato avrà rallentamenti, sganci ogni 10-15 minuti del dispositivo.

Il palliativo sta nel mantenere aggiornati i driver di entrambi i chipset, disabilitare ogni tipo di risparmio energetico sui dischi e sul sistema relativo ai chipset. Ci sono aggiornamenti firmware sui siti relativi ai produttori di chipset, dove si può sperare di ridurre i problemi.

Perchè è importante sapere quale chipset stiamo usando?

perchè a seconda dei prodotti possiamo avere più chipset sulla stessa macchina, ad esempio la piastra gigabyte che usavo prima aveva due chipset diversi, e con una scheda esterna ho introdotto un terzo chipset non incriminato. L’attuale piastra Asus ha tre chipset diversi usb 3.0 e quindi devo stare attento a quale porta USB 3.0 uso per gli hard disk esterni, su due ho i chipset incriminati, per cui se collego il disco WD mini che non ha il controller problematico, tutto ok, ma se collego i nas (ne ho tre, due da 4 dischi e uno da 8 dischi) devo usare il terzo gruppo di porte USB 3.0, che però sono porte esterne, quindi ho acquistato una basetta esterna per portarle dietro a portata di connettori, altrimenti mi si sconnettono ogni 15 minuti i dischi contenuti nei nas.

Quindi si può concludere che…

lo standard Usb 3.0 ci permette di copiare i dati FINO a 640 mb/s a patto che si copino i dati da un disco collegato su un chipset DIVERSO da quello di ricezione.

Cosa posso fare per ottimizzare il trasferimento dati?

  • usare dischi connessi su chipset e standard differenti, ad esempio dischi interni su sata verso o da dischi Usb 3.0 veloci.
  • usare dischi esterni usb 3.0 su due chipset differenti per evitare che il chipset lavorando sia in ingresso che uscita dati non abbia qualche tipo di rallentamento
  • disabilitare ogni tipo di risparmio energetico su dischi interni ed esterni
  • disabilitare il controllo antivirus sui dati in arrivo dal disco X (solo per dati sicuri)
  • usare software ottimizzati per la copia dati e che usino il parity check per avere la certezza della copia dei dati.


Powered by WordPress & Theme by Anders Norén

Translate »
error: Content is protected !!