3.6.2. Interpreting imageattr Attributes (Interpretazione degli attributi imageattr)
3.6.2. Interpreting imageattr Attributes (Interpretazione degli attributi imageattr)
[RFC6236] definisce "a=imageattr" come un campo consultivo. Ciò significa che non vincola assolutamente i formati video che il mittente può utilizzare ma fornisce un'indicazione dei valori preferiti.
Questa specifica prescrive un comportamento più specifico. Quando un MediaStreamTrack, che sta producendo video a una certa risoluzione (la "risoluzione della traccia"), è collegato a un RtpSender, che sta codificando il video della traccia alla stessa o a una risoluzione inferiore (le "risoluzioni dell'encoder"), e viene applicata una descrizione remota che fa riferimento al mittente e contiene attributi "a=imageattr recv" validi, DEVE seguire le regole seguenti per garantire che il mittente non trasmetta una risoluzione che supererebbe i criteri di dimensione specificati negli attributi. Queste regole DEVONO essere seguite finché gli attributi rimangono presenti nella descrizione remota, inclusi i casi in cui la traccia cambia la sua risoluzione o viene sostituita con una traccia diversa.
A seconda di come è configurato RtpSender, potrebbe produrre una singola codifica a una certa risoluzione o, se è stato negoziato il simulcast (Sezione 3.7), più codifiche, ciascuna alla propria risoluzione specifica. Inoltre, a seconda della configurazione, ogni codifica può avere la flessibilità di ridurre la risoluzione quando necessario o può essere bloccata su una risoluzione di output specifica.
Per ogni codifica prodotta da RtpSender, viene elaborato l'insieme di attributi "a=imageattr recv" nella sezione "m=" corrispondente della descrizione remota per determinare cosa dovrebbe essere trasmesso. Vengono considerati solo gli attributi che fanno riferimento al formato multimediale selezionato per la codifica; ogni tale attributo viene valutato individualmente, iniziando dall'attributo con il valore "q=" più alto. Se più attributi hanno lo stesso valore "q=", vengono valutati nell'ordine in cui appaiono nella loro sezione "m=" contenitore. Si noti che mentre gli endpoint JSEP includeranno al massimo un attributo "a=imageattr recv" per formato multimediale, gli endpoint JSEP possono ricevere descrizioni di sessione da endpoint non-JSEP con sezioni "m=" che contengono più di tali attributi.
Per ogni attributo "a=imageattr recv", vengono applicate le seguenti regole. Se questa elaborazione ha successo, la codifica viene trasmessa di conseguenza e non vengono considerati ulteriori attributi per quella codifica. Altrimenti, viene valutato l'attributo successivo, nell'ordine sopra menzionato. Se nessuno degli attributi forniti può essere elaborato con successo, la codifica NON DEVE essere trasmessa e un errore DOVREBBE essere sollevato all'applicazione.
-
I limiti dell'attributo vengono confrontati con la risoluzione dell'encoder. Vengono considerati solo i limiti specifici menzionati di seguito; qualsiasi altro valore, come il rapporto d'aspetto dell'immagine, DEVE essere ignorato. Quando si considera un MediaStreamTrack che sta producendo video ruotato, la risoluzione non ruotata DEVE essere utilizzata per i controlli. Ciò è richiesto indipendentemente dal fatto che il ricevitore supporti l'esecuzione della rotazione lato ricezione (ad esempio, tramite il coordinamento dell'orientamento video (CVO) [TS26.114]), poiché semplifica notevolmente la logica di corrispondenza.
-
Se l'attributo include un valore "sar=" (rapporto d'aspetto del campione) impostato su qualcosa di diverso da "1.0", indicando che il ricevitore desidera ricevere pixel non quadrati, ciò non può essere soddisfatto e l'attributo NON DEVE essere utilizzato.
-
Se la risoluzione dell'encoder supera la dimensione massima consentita dall'attributo e l'encoder è autorizzato a regolare la sua risoluzione, l'encoder DOVREBBE applicare il ridimensionamento per soddisfare i limiti. Il ridimensionamento NON DEVE modificare il rapporto d'aspetto dell'immagine della codifica, ignorando eventuali differenze banali dovute all'arrotondamento. Ad esempio, se la risoluzione dell'encoder è 1280x720 e l'attributo ha specificato un massimo di 640x480, la risoluzione di output prevista sarebbe 640x360. Se il ridimensionamento non può essere applicato, l'attributo NON DEVE essere utilizzato.
-
Se la risoluzione dell'encoder è inferiore alla dimensione minima consentita dall'attributo, l'attributo NON DEVE essere utilizzato; l'encoder NON DEVE applicare l'ingrandimento. Le implementazioni JSEP DOVREBBERO evitare questa situazione consentendo la ricezione di risoluzioni arbitrariamente piccole, forse tramite fallback su un decodificatore software.
-
Se la risoluzione dell'encoder è compresa tra le dimensioni massima e minima, non è necessaria alcuna azione.