# AOMedia Video 1

AOMedia Video 1 (AV1) è un codec video con licenza royalty-free e aperto pensato per la trasmissione video online (streaming).
L'AV1, la cui prima versione è stata pubblicata dall'Alliance for Open Media nel 2018, è pensato per essere il successore di VP9 ed è studiato per essere integrato nel contenitore WebM insieme al codec audio Opus, per poter essere usato nell'HTML5 video e nel WebRTC.

## Storia

Nel 2015 fu fondato l'Alliance for Open Media, consorzio no profit comprendente le industrie e organizzazioni di semiconduttori, fornitori video on demand, produttori di contenuti video, società di sviluppo software e i fornitori di browser web, riunitesi allo scopo di sviluppare degli standard video da sottoporre all'Internet Engineering Task Force per la standardizzazione e per competere con il Moving Picture Experts Group, creatore del formato HEVC. Il primo progetto del consorzio fu di implementare un formato video libero dalle royalty.
La prima versione 0.1.0 del codec di riferimento AV1 venne resa pubblica il 7 aprile 2016 insieme a nuovi strumenti di codifica testati, discussi e ripetuti nei gruppi di lavoro AOMedia. Quindi per la fine di ottobre 2017, data nella quale vigeva un blocco di diverse funzionalità software, era anche prevista la finalizzazione della prima versione. Dopo un rinvio al congelamento del formato bitstream, destinato per gennaio 2018, proseguì lo sviluppo di diverse funzionalità significative a causa nonché dei bug critici irrisolti, le ulteriori modifiche ai transform, alla previsione dei vettori di movimento, della sintassi e il completamento dell'analisi legale.
Il 25 giugno 2018 fu convalidata la prima versione 1.0.0 della specifica. L'8 gennaio 2019 AOMedia pubblicò la versione validata 1.0.0 con Errata 1 della specifica. Mozilla immediatamente iniziò con dei test ed integrò la prima implementazione del decoder libaom sul browser Firefox, alla versione 65 (gennaio 2019) e alla versione 67 (maggio 2019) esso fu sostituito con dav1d.
Il 21 gennaio 2021 AV1 fu incluso nello standard mail MIME col nome video/AV1, limitatamente per il Real-time Transport Protocol.
Il 9 novembre 2021 Netflix annunciò di aver iniziato lo streaming dei contenuti AV1 sui numerosi televisori con la decodifica di AV1.
YouTube iniziò le prime sperimentazioni dell'AV1 nel 2018. L'adozione è avvenuta in modo molto graduale, annunciando nel maggio 2023 il supporto per il live streaming 4K a 60 fps.
Nel luglio 2022 l'Unione Europea avviò ad un'indagine preliminare nei confronti dell'alleanza, in vista di segnalazioni di violazioni di brevetti, conclusa nel maggio 2023 senza l'adozione di misure.
Sempre a maggio 2023, la AOM ha annunciato che è in studio lo standard del codec successivo, l'AV2.

## Obiettivi

Lo sviluppo del codec AV1 costituisce una risposta ai consorzi delle grandi aziende del settore che stabiliscono degli standard proprietari che impongono le royalties per l'utilizzo: come ad esempio il più conosciuto H.265/HEVC sviluppato da MPEG, Video Coding Experts Group e ITU-T. Il minore bitrate contribuisce a ridurre la quantità di bandwidth globale richiesta per lo streaming video, la quale rappresenta una criticità delle infrastrutture di trasmissione: già alla costituzione dell'alleanza si prevedeva che il traffico internet globale sarebbe triplicato tra il 2017 e il 2022, ossia l'82% della larghezza globale di bandwidth. Al fine di ridurre l'impatto sulle infrastrutture di trasmissione, l'alleanza si è concentrata sullo sviluppo di nuovi formati video che definiscono lo standard delle prestazioni di compressione video. In un documento congiunto, tre Stati membri dell'UE affermano che i principali attori nel settore dei media (contenuti multimediali) rappresentino il 55% di traffico su Internet, un fattore chiave nella spinta all'adozione del formato AV1.
Fu progettato per essere integrato nel contenitore WebM insieme al codec audio Opus, per essere usato nell'HTML5 video e offrire una codifica video con il supporto alle risoluzioni fino a 8K pixel orizzontali, offre una maggiore efficienza di compressione rispetto ai codec esistenti, come H.264, HEVC e VP9, riducendo la quantità di dati necessari per trasmettere un video di alta qualità.

## Caratteristiche tecniche

AV1 usa una serie di tecniche avanzate di codifica come la predizione intra-frame, la trasformazione adattiva, il filtraggio in loop, il controllo del tasso di errore e il super-resolution. Comprende il filtro di Wiener, loop restoration e guided filter ed infine il supporto alla funzionalità di grain synth - che nei contenuti compressi AV1 questo rumore può essere generato in overlay dal decoder, in base a un parametro che indica la quantità di rumore da aggiungere e non è quindi codificato insieme al contenuto per evitare un eccesso di artefatti. Un'altra caratteristica principale è il deringing avanzato, che viene utilizzato per rimuovere gli artefatti di ringing.

### Profili e livelli

AV1 definisce 3 profili per i decoder: Main, High e Professional.
Il profilo Main consente una profondità di 8 o 10 bit per campione con campionamento cromatico 4:0:0 (scala di grigi) e 4:2:0. Il profilo alto aggiunge il supporto per il campionamento cromatico 4:4:4. Il profilo Professional estende le funzionalità al supporto completo per il sottocampionamento della crominanza 4:0:0, 4:2:0, 4:2:2 e 4:4:4 a profondità di colore di 8, 10 e 12 bit.

#### Livelli

AV1 definisce i livelli per i decoder con variabili massime per livelli compresi tra 2.0 e 6.3. Le risoluzioni di esempio sarebbero 426×240 a 30 fps per il livello 2.0, 854×480 a 30 fps per il livello 3.0, 1920×1080 a 30 fps per il livello 4.0, 3840×2160 a 60 fps per il livello 5.1, 3840 × 2160 a 120 fps per il livello 5.2 e 5.3 e 7680×4320 a 120 fps per il livello 6.2 Il livello 7 non è stato ancora definito.

#### Formati contenitore supportati
##### Standardarizzati

Formato file multimediale di base ISO: la specifica del contenitore ISOBMFF di AOMedia fu la prima ad essere completata e la prima a essere adottata. Questo è il formato utilizzato da YouTube.

##### In elaborazione

Matroska la versione 1 della specifica Matroska Containers è stata pubblicata a settembre 2018. Tuttavia, si può dire che le modifiche sostanziali siano continuate in ottobre e una nuova versione, o finalizzazione, deve ancora essere annunciata da dicembre.

##### Standard incompiuti

Flusso di trasporto MPEG.

#### Non standardizzati

WebM: Per una questione di forma, AV1 non è stato approvato nel sottoinsieme Matroska, noto come WebM nella fine del 2019.
On2 IVF: questo formato è stato ereditato dalla prima versione pubblica di VP8: dove fungeva da semplice contenitore di sviluppo. Rav1e supporta anche questo formato.
Pre-standard WebM: libaom ha offerto il supporto iniziale per WebM, prima che fosse specificata la containerizzazione Matroska, ma è stata modificata per conformarsi ad essa.

### Tecnologia interna
#### Partizione

Qui il contenuto del frame è suddiviso in blocchi alternati adiacenti della stessa dimensione, chiamati superblocchi. Simile al concetto di macroblocco, un superblocco è quadrato e può avere una dimensione di 128×128 o di 64×64 pixel. I superblocchi possono essere divisi in blocchi più piccoli in base a diverse modalità di partizione. Il modello di suddivisione a quattro vie è l'unico modello in grado di suddividere le partizioni in modo ricorsivo. Ciò consente la divisione dei superblocchi dei blocchi grandi a partizioni piccole come 4x4 pixel.
La modalità di partizione a forma di T è una nuova funzione sviluppata dal VP10, che suddivide il superblocco orizzontalmente o verticalmente nelle partizioni a strisce 4:1 e 1:4. L'utilizzo della modalità di partizione è limitato dalla dimensione del superblocco. Né il superblocco 128 × 128 né il superblocco 8 × 8, possono utilizzare la suddivisione della partizione a strisce 4: 1 o 1: 4, ma solo la segmentazione a forma di T del superblocco 8 × 8 non può essere adoperata.
Utilizzando due previsioni indipendenti sulle parti di diversi spazi di blocco, è possibile utilizzare delle linee di transizione inclinate lisce (previsioni di partizione a cuneo). Ciò consente di segmentare gli oggetti con precisione senza le varie linee di passaggio lungo i contorni quadrati e consente un parallelismo maggiore del codificatore basato su dipendenze prevedibili tra i ranghi delle tessere.

#### Previsione

AV1 esegue l'elaborazione interna in una precisione maggiore (frequenza di campionamento di 10 o 12 bit), con conseguente miglioramento delle prestazioni della compressione grazie a dei minori errori di arrotondamento nell'immagine dovuti alla maggiore risoluzione.
Le previsioni possono essere combinate in delle previsioni composte in un modo più avanzato in un blocco, comprese le previsioni di partizione a forma di cuneo lisce e nitide in diverse direzioni e maschere implicite basate sull'utilizzo di due predittori per esplorare la differenza tra i due, Questo sarà meglio di facendo la media. Ciò consente l'uso di due previsioni inter o una combinazione di previsioni interframe ed intra all'interno dello stesso superblocco.
Nella previsione inter-frame, un frame può accedere a 6 degli 8 frame buffer disponibili invece di 3, e può essere una previsione bidirezionale allo stesso tempo, ovvero la previsione combinata della previsione inter-frame e intra-frame:
Gli strumenti di analisi del movimento globale in AV1 vengono utilizzati per ridurre le informazioni ridondanti nei vettori di movimento identificando i modelli generati dal movimento della telecamera; come rumore è un'informazione ridondante: ciò consente ciò che è stato tentato ma non raggiunto in formati precedenti come MPEG-4 ASP nonostante un nuovo approccio al 3D. Il frame fornito nel bitstream ha una serie di parametri di curvatura e i parametri della regione implicita possono essere calcolati dai blocchi circostanti e utilizzati nel blocco. I fotogrammi di commutazione (S-frame) sono un nuovo tipo di interframe che può essere previsto utilizzando un frame di riferimento decodificato a risoluzione più elevata dalla stessa immagine, per consentire il passaggio a risoluzioni inferiori, nel caso di streaming di bit adattivo senza avviare con un frame completo clip immagine fotogramma chiave.

#### Previsione intraframe

Intra Prediction usa le informazioni disponibili nel fotogramma corrente per prevedere i pixel del blocco di destinazione. Nella maggior parte dei casi la previsione intra viene costruita dai pixel vicini sopra la sinistra, del blocco target da prevedere. Il predittore DC effettua previsioni calcolando la media dei pixel sinistro e superiore del blocco.
In base all'angolo specificato, il predittore di direzione può estrapolare i pixel vicini. In AV1 comincia in un angolo di 45 gradi, con uno spazio di 22,5 gradi ciascuna volta, ed aumenta gradualmente fino a 203 gradi; con un totale di otto modalità. Per ogni modalità di direzione al blocco più grande possono essere assegnati 3 gradi ciascuno, su un totale di 6 serie di segnali di offset, tre serie sopra e tre serie sotto il protagonista: per un totale di 56 angoli.
Tra questi, il predittore di movimento reale è sostituito dal predittore di Paeth, che distinguerà la differenza tra il pixel noto nell'angolo in alto a sinistra e il pixel a sinistra e sopra il nuovo pixel, quindi selezionerà il pixel nella direzione di il gradiente più piccolo come predittore. Inoltre il predittore della tavolozza potrebbe essere utilizzato per i vari blocchi con meno colori e fino a 8 colori, come alcuni contenuti dello schermo del computer, e il predittore del blocco cromatico basato sui campioni del piano di luminanza può essere utilizzato per sfruttare la correlazione tra luminanza e colore informazioni.
Per ridurre i bordi visibili lungo i confini dei blocchi predetti, è possibile utilizzare le tecniche di Overlapping Block Motion Compensation (OBMC) per sovrapporre blocchi adiacenti da 2 a 32 pixel e fondere le parti sovrapposte.

### Trasformazione del flusso data

Per trasformare l'errore rimanente dopo la previsione (trasformazione dei dati) nel dominio della frequenza il codificatore AV1 può utilizzare i blocchi; quadrati o rettangoli 2:1/1:2 e 4:1/1:4 per la trasformata discreta del coseno come pure la trasformata sinusoidale discreta simmetrica sui blocchi con errore inferiore sul bordo sinistro o superiore dai pixel vicini oppure scegliere di non trasformare.
Questo compone 2 trasformazioni in 1D, consentendo di utilizzare trasformazioni diverse per le dimensioni orizzontale e verticale.

#### Quantizzazione

L'AV1 comprende una matrice di quantizzazione ottimizzata, otto set di parametri di quantizzazione possono essere selezionati ed inviati in un fotogramma, con i parametri separati per due piani cromatici e può essere utilizzati la previsione spaziale. Su ogni nuovo superblocco, i parametri di quantizzazione possono essere regolati inviando un segnale di offset.

#### Filtro

Il filtro passa-basso vincolato (filtro) di Thor e il filtro di de-ringing direzionale di Daala hanno dei risultati eccellenti per il filtraggio ad anello.
il filtro di potenziamento direzionale vincolato combinato con i due supera i risultati dell'utilizzo di filtri generali da soli o insieme.
Si tratta di un filtro di sostituzione condizionale orientato nel bordo che uniforma le patch con intensità configurabile lungo la direzione del bordo principale per rimuovere gli effetti di squillo.
Sono inoltre disponibili filtri di ripristino loop basati su filtri Wiener e filtri di ripristino autoguidati per rimuovere il ringing sfocato dovuto all'elaborazione a blocchi.
La sintesi della grana della pellicola migliora la codifica di segnali rumorosi utilizzando metodi di codifica video parametrici. A causa dell'intrinseca casualità del rumore della grana della pellicola, questo componente del segnale fu tradizionalmente costoso da codificare, facilmente perso (parola sbagliatae danneggiato può lasciare come residuo un significativo squillo della codifica. Questi problemi vengono aggirati utilizzando la sintesi della grana della pellicola che sostituisce parti del segnale con parti che sono visivamente simili nell'impressione visiva soggettiva piuttosto che nella somiglianza oggettiva. Invece di rimuovere componenti granulari dal segnale e analizzarne le caratteristiche non casuali, solo i parametri descrittivi vengono passati al decodificatore, che rimodella e sintetizza il segnale di rumore pseudocasuale aggiungendo nuovamente i componenti originali. La sintesi della grana della pellicola è l'equivalente visivo della tecnica di sostituzione del rumore percettivo utilizzata nei codec audio AC3, AAC, Vorbis e Opus.

#### Codifica entropica

Il codificatore entropico del Daala è un codificatore aritmetico non binario che sostituisce il codificatore binario VP9 originale. La codifica aritmetica non binaria è vantaggiosa per evitare brevetti esistenti e aumenta anche il parallelismo del processo seriale a livello di bit, riducendo così il requisito di velocità dell'oscillatore a cristallo per l'implementazione hardware. Efficienza della moderna codifica aritmetica binaria come indicato in precedenza per Adaptive Binary Arithmetic Coding; che viene implementato utilizzando un alfabeto più grande del binario e quindi più veloce, come la codifica di Huffman, sebbene non sia ancora buono come la codifica di Hough Mann è semplice e veloce. AV1 ha la capacità nel codificatore aritmetico di regolare le probabilità dei simboli per simbolo codificato piuttosto che per fotogramma.

#### Codifica video adattiva

Soprattutto per i video, la codifica video adattiva è una tecnica generale e non univoca per AV1, in modo da poter estrarre flussi video con bitrate inferiore di migliore qualità da flussi video con bitrate più elevato. Ciò differisce dallo streaming a bitrate adattivo in quanto parte dell'efficienza di compressione in ogni adattamento al bitrate più elevato è rinunciata per le prestazioni complessive dello streaming di immagini. Anche il processo di codifica si realizza in modo meno ridondante ed impegnativo.
È necessario non confondere AV1 con la tecnologia video scalabile (Intel SVT), ovvero la famiglia di codificatori software di Intel che comprende SVT-HEVC, SVT-VP9 e SVT-AV1, come non è da confondere la codifica video scalabile generale o una codifica video stratificata generale rispetto alla codifica video scalabile = SVC di MPEG.
AV1 fornisce adattabilità temporale e spaziale, frame rate e risoluzioni sono definiti come metodi disponibili per flussi di bit bassi.

### Hardware

AV1 supporta l'accelerazione hardware tramite la Video Acceleration API (VA API): in particolare con le librerie libva-aomdec e libva-aomenc. I primi codec video basati su VAAPI sono stati annunciati nel 2018 e sono stati resi disponibili nel primo trimestre del 2019.
Mesa è arrivato alla versione 22.2.4. Include una modifica importante che disabilita l'accelerazione hardware per i codec video proprietari (H.264 e H.265) quando si utilizza lo stack di driver Mesa. I codec video aperti (VP8, VP9, AV1) non sono interessati alla modifica e possono ancora essere accelerati via hardware. Questa modifica riguarda principalmente le schede grafiche AMD. La grafica integrata Intel HD Graphics è supportata dal driver open "intel-media-driver" (2014-2016) o (per i processori dal 2017 in poi) dal driver open "libva-intel-driver". Le schede NVIDIA utilizzano il proprio driver proprietario. La decisione di Manjaro segue quella di Fedora e openSUSE.

## Diffusione
### Principali Hardware

AV1 è supportato da:
* Alveo MA35D.
* Schede video RDNA2 (tranne 6500 XT e inferiori), RTX 30 e molti SoC mobili.
* GeForce 40 series.
* NVIDIA GeForce serie 30 mobile e desktop.
* iGPU mobili e desktop AMD RDNA2 Radeon RX 6000 e Ryzen serie 7000.
* Samsung Exynos 2100 e 2200.
* Qualcomm Snapdragon 8 Gen 2, con il supporto per la riproduzione 8K 60fps HDR 10-bit AV1.
* Le Smart TV con processori MediaTek e le CPU ARM integrate negli smartphone come Dimensity 8000, 9000, 9020, 9080 e 1000, 1080, 1100, 1200 e 1300.

### Risoluzione 8K

Elenco del supporto per l'accelerazione HW 8k (specifiche minime) Codec AV1 (AOMedia Video 1, AV01):
Nvidia RTX3050, RTX 3060, RTX 3070, RTX 3080, RTX 3090 Intel UHD 730, 750, 770 (intel Xe-LP Graphics Series) Intel's DG1 discrete GPU AMD RX 6600 RX 6700, RX 6800, RX 6900, NVIDIA GeForce RTX 40.
Chipset TV 8K che supportano AV1:
Realtek’s RTD2893, MediaTek S900 Samsung (MediaTek’s custom Wi-Fi 6 chipset), New 2020 QLED 8K TV LG (MediaTek’s custom Alpha 9 Gen 3 AI Processor), 2019 OLED 8K TV (88Z9, 75SM9980), New 2020 OLED 8K TV.

### Browser web e decodificatori software

I browser web esistenti utilizzano il decoder software dav1d per il MIME type AVIF e per la riproduzione dei video in AV1, qualora il PC e il browser siano abbastanza rapidi secondo il media engine e se non si dispone di un'accelerazione hardware. Esso è il decoder SW più rapido per AV1 e anche molto ottimizzato e veloce su ARM. Google sviluppa il proprio decodificatore libgav1, usato principalmente sulle piattaforme mobili a partire da Android 12 per la decodifica di file AVIF ma codesta implementazione risultò circa 2-4 volte meno veloce nel 2019 in confronto a dav1d 0.7 in un test eseguito su CPU ARM. Entrambi i decodificatori posseggono una licenza royalty-free.
Dav1d fu presentato dalla VideoLAN con FFmpeg nell'ottobre 2018, con gran parte di codice sorgente contribuito da TwoOriolies, azienda software proprietaria. Alla versione 0.9.1 di agosto 2021 fu annunciato che dav1d conteneva 140.000 righe di codice assembler con le principali ottimizzazioni completate. Il 18 marzo 2022, Xiph esce dav1d 1.0, migliorando ulteriormente l'efficienza.
I navigatori Microsoft Edge, Mozilla Firefox, Google Chrome e Opera Browser supportano AV1.
* Edge dalla versione 17, disponibile ad aprile 2018.
* Chrome dalla versione 70, disponibile a ottobre 2018.
* Firefox dalla versione 65, disponibile a gennaio 2019.
* Vivaldi.

### Implementazioni software

I vari codificatori av1 integrano alcuni presets ad uso VOD (video on demand) che mirano alla codifica efficiente. Furono introdotte le impostazioni adatte nelle situazioni di streaming real-time con configurazioni WebRTC a bassa latenza (low-delay) o non.
* Libaom è l'implementazione di riferimento, sviluppata da AOMedia. Include aomenc con aomdec.
* Ad aprile 2019 Intel e Netflix annunciarono di essere al lavoro a un codec video ad alte prestazioni open source SVT-AV1 (Scalable Video Technology for AV1) e royalty-free per i creatori di contenuti, sviluppatori e fornitori di servizi, allo scopo di rendere lo standard AV1 commercialmente valido.
* SVT-AV1 include un codificatore e un decodificatore con licenza open source, sviluppati in primo luogo da Intel e in collaborazione con Netflix; con un'attenzione particolare alle prestazioni di threading. Il progetto è mantenuto per conto della Cidana Corporation (Cidana Developers), facente parte della (SIWG). Ad agosto 2020, Alliance for Open Media Software Implementation Working Group adottò SVT-AV1 come proprio codificatore di produzione. SVT-AV1 1.0.0 fu rilasciato nel 22 aprile 2022.
* Rav1e, contribuito da Xiph e Mozilla, è implementato principalmente nel linguaggio Rust e anche in assembler (il nome significa Rust AV1 encoder). Descritto (originariamente) dai suoi autori come il più veloce e affidabile dei codificatori AV1, abbastanza veloce per i flussi WebRTC in tempo reale, esso sfrutta le assembly dav1d per accelerare la decodifica dell'input.
* Encoder Visionular Aurora AV1 (proprietario).
* Encoder Eve-AV1 (a pagamento).
* Cisco Webex (solo real-time live encoding).
* AVIF. Include: avifenc e avifdec.

### Altri software

* HandBrake 1.6.0 (utilizza FFmpeg): comprende il supporto a SVT-AV1 e alle GPU Intel® Arc™ (qsv), da parte di Intel, annunciato in un comunicato. Esso supporta la decodifica AV1 dalla versione 1.3 (novembre 2019).
* Mediainfo.
* FFmpeg.
* Av1an: permette la codifica parallela usando l'encoder di riferimento libaom, usando lo splitting delle scene invece che dello stream lineare, velocizzando il processo senza compromettere la qualità.
* Libheif.
* cavif-rs.
* cavif (scaricabile se si è loggati su GitHub in GitHub Actions).
* MPV, VLC Media Player dalla versione 3.0.
* StaxRip (Avisynth e FFmpeg).
* Fastflix (FFmpeg).
* Anche su GitHub ci sono altri diversi frontend GUI FFmpeg e/o Avisynth come FFmpeg Batch AV converter, la GUI per av1an Nmkoder che ha anche una sola modalità FFmpeg e Shutter Encoder.
* Hybrid, ha opzioni avanzate ed è una GUI per l'esecuzione di script Avisynth, non disponibile su GitHub e il suo programma di installazione pesa più di 1 GB.
* XMedia Recode.
* OBS Studio: cattura schermata e live streaming (FOSS), supporta i codec libaom e SVT-AV1 con OBS 27 e a partire da OBS Studio 29.1 Beta 1 l'encoding con le GPU che lo supportano (QSV, NVENC, VCN 4.0) ed inoltre trasmissione di streaming AV1 su YouTube e anche altre piattaforme tramite il protocollo RTMP (Real Time Messaging Protocol), YouTube joins SRT Alliance.