Condividi tramite


Panoramica del formato foto HD

Questo argomento fornisce informazioni sul codec HD nativo (predefinito) disponibile tramite windows Imaging Component (WIC).

Importante

Il formato HD Photo è un'implementazione standard del formato JPEG XR e il supporto per HD Photo viene implementato dal codec JPEG XR WIC. Per altre info, vedi Panoramica del codec XR JPEG.

Identità codec

Nella tabella seguente vengono fornite informazioni sull'identificazione del codec.

Componente Descrizione
Nomi formali Foto HD, Windows Media Photo
Estensioni di file Wdp
tipo MIME image/vnd.ms-photo
Firme file Primi quattro byte: 0x4949bc00 (versione 0; versione non definitiva), 0x4949bc01 (versione 1.0)

La tabella seguente elenca i GUID usati per identificare i componenti codec HD Photo nativi.

Componente Nome descrittivo GUID
Formato del contenitore GUID_ContainerFormatWmp 57a37caa-367a-4540-916bf183c5093a4b
Decodificatore CLSID_WICWmpDecoder a26cec36-234c-4950-ae16e34aace71d0d
Codificatore CLSID_WICWmpEncoder ac4ce3cb-e1c1-44cd-82155a1665509ec2

Codifica

L'API di codifica WIC è progettata per essere indipendente dal codec e la codifica delle immagini per i codec abilitati per WIC è essenzialmente la stessa. Per altre informazioni sulla codifica delle immagini tramite l'API WIC, vedere Cenni preliminari sulla codifica.

Opzioni del codificatore

I codec abilitati per WIC differiscono a livello di opzione di codifica. Le opzioni del codificatore riflettono le funzionalità di un codificatore di immagini e ogni codec nativo supporta un set di queste opzioni del codificatore. Le opzioni del codificatore possono essere opzioni supportate da WIC di base disponibili per tutti i codici abilitati per WIC (anche se non necessariamente supportati) o opzioni specifiche del codec progettate dal codec del formato immagine. Per gestire queste opzioni di codifica durante il processo di codifica, WIC usa l'interfaccia IPropertyBag2 . Per altre informazioni sull'uso dell'interfaccia IPropertyBag2 per la codifica WIC, vedere Cenni preliminari sulla codifica.

Il codec HD Photo usa entrambe le opzioni wic di base e offre diverse opzioni di codifica specifiche di FOTO HD. La tabella seguente elenca le opzioni del codificatore supportate dal codec HD Photo nativo.

Opzioni di base del codificatore WIC

Nome proprietà VARTYPE Gamma valori Valore predefinito
ImageQuality VT_R4 0 - 1.0 0.9
Lossless VT_BOOL TRUE, FAL edizione Standard FALSE
BitmapTransform VT_UI1 WICBitmapTransformOptions WICBitmapTransformRotate0

Opzioni del codificatore specifico per foto HD

Nome proprietà VARTYPE Gamma valori Valore predefinito
UseCodecOptions VT_BOOL TRUE, FAL edizione Standard FALSE
Quality VT_UI1 1 - 255 10
Sovrapposizione VT_UI1 0 - 2 1
Sottocampionamento VT_UI1 0 - 3 3 se ImageQuality > 0.8; in caso contrario, 1;
HorizontalTileSlices VT_UI2 0 - 4095 (larghezza immagine - 1) >> 8
VerticalTileSlices VT_UI2 0 - 4095 (altezza immagine - 1) >> 8
FrequencyOrder VT_BOOL TRUE, FAL edizione Standard TRUE
InterleavedAlpha VT_BOOL TRUE, FAL edizione Standard FALSE
AlphaQuality VT_UI1 1 - 255 1
CompressedDomainTranscode VT_BOOL TRUE, FAL edizione Standard TRUE
ImageDataDiscard VT_UI1 0 - 3 0
AlphaDataDiscard VT_UI1 0 - 4 non usata.
IgnoreOverlap VT_BOOL TRUE, FAL edizione Standard FALSE

Se un'opzione del codificatore è presente nell'elenco di opzioni IPropertyBag2 che il codec non supporta, viene ignorato.

Opzione ImageQuality

Specifica la fedeltà dell'immagine desiderata. 0.0 indica la fedeltà più bassa possibile e 1.0 specifica la massima fedeltà. Per il formato immagine HD Photo, un valore 1,0 restituisce una compressione matematicamente senza perdita.

Il valore predefinito è 0,9.

Opzione CompressionQuality

Specifica la qualità di compressione desiderata. 0.0 indica lo schema di compressione efficiente disponibile. In genere, questo schema produce una codifica più veloce ma un output più grande. Il valore 1.0 specifica lo schema di compressione più efficiente disponibile, che in genere produce una codifica più lunga ma un output più piccolo.

Foto HD non supporta questa opzione di codificatore. Questo valore viene ignorato se presente nell'elenco dei parametri IPropertyBag2.

Opzione senza perdita di dati

Specifica se utilizzare la modalità di compressione delle perdite. Per il formato immagine HD Photo, questo valore sostituisce il valore dell'opzione ImageQuality .

Il valore predefinito è FAL edizione Standard.

Opzione BitmapTransform

Specifica la modalità di trasformazione dell'immagine durante la decodifica dell'immagine. È necessario impostare questa opzione su uno dei valori di enumerazione WICBitmapTransformOptions.

Il valore predefinito è WICBitmapTransformOptions::WICBitmapTransformRotate0.

Opzione UseCodecOptions

Se il valore è VARIANT_TRUE opzioni Qualità, Sovrapposizione e Sottocampionamento anziché il valore dell'opzione.

Il valore predefinito è FAL edizione Standard.

Opzione Di qualità

Specifica la qualità della compressione per l'immagine. Il valore 1 indica la modalità senza perdita di dati. L'aumento dei valori comporta rapporti di compressione più elevati e una qualità dell'immagine inferiore.

Il valore predefinito è 10.

Opzione Di sovrapposizione

Specifica il livello di elaborazione della sovrapposizione.

Nella tabella seguente sono elencati i livelli di elaborazione di sovrapposizione disponibili.

Valore Descrizione
0 Non è abilitata alcuna elaborazione di sovrapposizione.
1 È abilitato un livello di elaborazione della sovrapposizione, modificando i valori codificati dei blocchi 4x4 in base ai valori dei blocchi adiacenti.
2 Sono abilitati due livelli di elaborazione della sovrapposizione. Oltre all'elaborazione di primo livello, i valori codificati di 16x16 blocchi di macro vengono modificati in base ai valori dei blocchi di macro adiacenti.

Il valore predefinito è 1.

Opzione di sottocampionamento

Specifica una compressione aggiuntiva nello spazio cromatico. In questo modo, è possibile mantenere i dettagli di luminanza a scapito dei dettagli di colore . Questa opzione si applica solo alle immagini RGB.

Nella tabella seguente sono elencate le opzioni di sottocampionamento disponibili.

Valore Descrizione
3 La codifica 4:4:4 mantiene la risoluzione completa dei cromatici.
2 La codifica 4:2:2 riduce la risoluzione dei cromatici a 1/2 della risoluzione della luminanza.
1 La codifica 4:2:0 riduce la risoluzione dei cromatici a 1/4 della risoluzione della luminanza.
0 La codifica 4:0:0 rimuove tutti i contenuti cromatici e mantiene solo la luminanza. Poiché il codec usa una definizione di luminanza leggermente modificata per migliorare le prestazioni, è consigliabile convertire un'immagine RGB in monocromatica prima della codifica anziché usare questa modalità di sottocampionamento cromatico.

Il valore predefinito è 3 se ImageQuality> 0,8; in caso contrario, 1.

Opzioni HorizontalTileSlices, VerticalTileSlices

Specificare la tillatura orizzontale e verticale dell'immagine prima di eseguire la codifica della compressione per ottenere prestazioni ottimali di decodifica dell'area. Dividendo l'immagine in riquadri rettangolari durante la codifica, è possibile decodificare le aree dell'immagine senza elaborare l'intero flusso di dati compresso. Il valore predefinito 0 non specifica alcuna suddivisione, quindi l'intera immagine viene considerata come un singolo riquadro. Un valore pari a 1 per ogni parametro crea un'unica divisione orizzontale e una singola divisione verticale, dividendo l'immagine in quattro riquadri di dimensioni uguali. Il valore massimo di 4095 per ogni parametro divide l'immagine in 4096 righe di riquadri con 4096 riquadri per riga. In altre parole, i valori dei parametri sono uguali al numero di riquadri orizzontali e verticali (rispettivamente) meno 1. Un riquadro non può mai essere inferiore a 16 pixel in larghezza o altezza, quindi il codificatore di foto HD potrebbe modificare questo parametro per mantenere le dimensioni minime richieste del riquadro. Poiché a ogni riquadro è associato un sovraccarico di archiviazione ed elaborazione, è consigliabile scegliere con attenzione questi valori per soddisfare lo scenario specifico.

HorizontalTileSlices: il valore predefinito è (Larghezza immagine - 1) >> 8.

VerticalTileSlices: il valore predefinito è (Altezza immagine - 1) >> 8.

Opzione FrequencyOrder

Specifica che l'immagine deve essere codificata in ordine di frequenza. I dati relativi alla frequenza più bassa vengono visualizzati per primi nel file e il contenuto dell'immagine viene raggruppato in base alla frequenza anziché all'orientamento spaziale. L'organizzazione di un file in base all'ordine di frequenza offre le migliori prestazioni per qualsiasi decodifica basata sulla frequenza e pertanto è consigliabile. Le implementazioni del dispositivo dei codificatori di foto HD possono organizzare un file nello spazio per ridurre il footprint di memoria necessario durante la codifica.

Il valore predefinito è TRUE ed è consigliabile che le applicazioni e i dispositivi usino sempre l'ordine di frequenza, a meno che non si disponga di prestazioni o motivi specifici dell'applicazione per usare l'ordine spaziale.

Opzione InterleavedAlpha

L'impostazione di questa opzione su TRUE indica al codec di codificare le informazioni sul canale alfa come canale interleaved aggiuntivo, senza alcuna correlazione con i canali di contenuto dell'immagine. Questa modalità è utile quando è necessario decodificare alfa contemporaneamente con l'immagine in uno scenario di streaming.

L'impostazione di questo parametro su FAL edizione Standard comporta un canale alfa planare, codificato come immagine separata con il proprio valore Di qualità facoltativo. Usando un canale alfa planare è possibile decodificare i dati dell'immagine e il canale alfa in modo indipendente. I canali alfa interleaved sono supportati solo per determinati formati di pixel RGB. È possibile associare un canale alfa planare a qualsiasi formato di immagine che definisce un canale alfa.

Il valore predefinito è FAL edizione Standard.

Opzione AlphaQuality

Specifica la qualità della compressione per l'immagine del canale alfa planare. Il valore 1 imposta la modalità senza perdita di dati. L'aumento dei valori comporta rapporti di compressione più elevati e una qualità dell'immagine inferiore.

Il valore predefinito è 1.

Opzione CompressedDomainTranscode

Usando Foto HD è possibile eseguire una serie di operazioni di trasformazione file senza decodificare effettivamente i dati compressi e codificarli nuovamente nel file di destinazione. Le operazioni di dominio compresso sono molto efficienti ed evitano eventuali perdite di qualità aggiuntive tipiche quando si decodifica e si codifica nuovamente un'immagine compressa con perdita di dati.

Sono supportate le operazioni di dominio compresse seguenti:

  • Ritagliare un'area dell'immagine.
  • Eseguire una trasformazione rotazione/capovolgimento.
  • Eliminare i dati relativi alla frequenza (rendendo possibile la creazione di un file di immagine più piccolo).
  • Riorganizzare l'immagine tra l'ordine sequenziale spaziale e quello di frequenza.

Il codificatore foto HD esegue un'operazione di transcodifica del dominio compresso quando codifica un'immagine HD Photo usando un decodificatore di foto HD come origine dell'immagine. A seconda delle opzioni di codifica selezionate, il codec usa un'operazione di dominio compressa, se possibile. Se un'applicazione sceglie di inibire in modo esplicito eventuali operazioni di transcodifica del dominio compresso, è necessario impostare l'opzione UseCodecOptions su TRUE e l'opzione CompressedDomainTranscode su FAL edizione Standard.

Quando il codec esegue un'operazione di dominio compresso, sono consentiti solo determinati parametri del codificatore e impostazioni delle proprietà.

Il valore predefinito è TRUE ed è consigliabile che le applicazioni e i dispositivi usino sempre l'ordine di frequenza, a meno che non si disponga di specifiche prestazioni o motivi dell'applicazione per usare l'ordine spaziale.

Opzione ImageDataDiscard

Questo parametro è valido solo se l'opzione CompressedDomainTranscode è TRUE; in caso contrario, viene ignorata. ImageDataDiscard specifica la quantità di dati dell'immagine da rimuovere durante la transcodifica di un dominio compresso. Se l'immagine contiene un canale alfa interleaved, questi dati vengono rimossi anche al canale alfa, con le eccezioni descritte più avanti in questa sezione.

Sono consentiti i valori seguenti.

Valore Descrizione
0 Nessun dato sulla frequenza dell'immagine viene rimosso.
1 I FlexBit vengono scartati, rendendo una riduzione arbitraria della qualità dell'immagine transcodificata senza modificare la risoluzione effettiva dell'immagine. La riduzione esatta delle dimensioni del file o la riduzione della qualità specifica dipende da numerosi fattori e non può essere specificata o stimata. Questo valore restituisce un errore se viene specificato per un canale alfa interleaved.
2 La banda di dati ad alta frequenza HighPass viene eliminata (che include anche FlexBits), riducendo in modo efficace la risoluzione dell'immagine transcodificata da un fattore pari a 4 in entrambe le dimensioni. Le dimensioni effettive dell'immagine transcodificata rimangono invariate, ma perdono tutti i dettagli in ogni blocco 4x4 di pixel. Pertanto, è consigliabile eseguire il down-sample dell'immagine transcodificata di conseguenza ogni volta che la si decodifica.
3 Entrambe le bande di dati HighPass e LowPass vengono eliminate (che includono anche FlexBits), riducendo in modo efficace la risoluzione dell'immagine transcodificata da un fattore di 16 in entrambe le dimensioni. Le dimensioni effettive dell'immagine transcodificata rimangono invariate, ma perdono tutti i dettagli in ogni macroblock di 16x16 di pixel. Pertanto, è consigliabile eseguire il down-sample dell'immagine transcodificata di conseguenza ogni volta che la si decodifica.

Il valore predefinito è 0.

Opzione AlphaDataDiscard

Questa opzione è valida solo se la proprietà CompressedDomainTranscode è TRUE e l'immagine contiene un canale alfa planare o interleaved; in caso contrario, viene ignorato. Specifica la quantità di dati di frequenza alfa da rimuovere durante la transcodifica di un dominio compresso. Per un canale alfa planare sono consentiti i valori seguenti.

Valore Descrizione
0 Nessun dato sulla frequenza dell'immagine viene rimosso.
1 I FlexBit vengono scartati, rendendo una riduzione arbitraria della qualità del canale alfa planare per l'immagine transcodificata senza modificare la risoluzione effettiva. La riduzione esatta delle dimensioni del file o la riduzione della qualità specifica dipende da numerosi fattori e non può essere specificata o stimata.
2 La banda di dati ad alta frequenza HighPass viene eliminata (che include anche FlexBits), riducendo in modo efficace la risoluzione del canale alfa planare dell'immagine transcodificata di un fattore 4 in entrambe le dimensioni. Le dimensioni effettive dell'immagine transcodificata rimangono invariate, ma l'immagine perde tutti i dettagli del canale alfa planare in ogni blocco di pixel 4x4. Pertanto, l'immagine transcodificata deve essere campionata di conseguenza ogni volta che viene decodificata. In genere, è necessario impostare questo valore solo quando si imposta la proprietà ImageDataDiscard sullo stesso valore.
3 Entrambe le bande di dati HighPass e LowPass vengono eliminate (che includono anche FlexBits), riducendo in modo efficace la risoluzione dell'immagine transcodificata da un fattore di 16 in entrambe le dimensioni. Le dimensioni effettive dell'immagine transcodificata rimangono invariate, ma l'immagine perde tutti i dettagli in ogni macroblock di 16x16 di pixel. Pertanto, l'immagine transcodificata deve essere campionata di conseguenza ogni volta che viene decodificata. In genere, è necessario impostare questo valore solo quando si imposta la proprietà ImageDataDiscard sullo stesso valore.
4 Il canale Alfa viene completamente rimosso. Il formato pixel dell'immagine transcodificata viene modificato in modo da riflettere la rimozione del canale alfa.

Per le immagini che contengono canali alfa interleaved, a meno che questa proprietà non sia impostata su 4, il canale alfa viene elaborato come i dati dell'immagine, in base al valore della proprietà ImageDataDiscard. Se questa proprietà è impostata su 4, il canale alfa interleaved viene completamente rimosso e il formato pixel dell'immagine transcodificata viene modificato di conseguenza.

Nessun valore predefinito.

Opzione IgnoreOverlap

Questa opzione è valida solo se la proprietà CompressedDomainTranscode è TRUE e viene richiesta una transcodifica di una o più sezioni di una o più aree secondarie. L'operazione predefinita per una transcodifica dell'area (o decodifica) consiste nell'espandere l'area richiesta in modo da includere i pixel circostanti necessari per la decodifica sovrapposta dei bordi dell'area. Quando questo parametro è impostato su TRUE, i pixel circostanti vengono ignorati e vengono estratti solo il riquadro o i riquadri selezionati. Anche in questo caso, è necessario che l'area richiesta corrisponda esattamente alle coordinate di uno o più riquadri. Se l'immagine di origine non viene affiancata o se l'area richiesta specifica riquadri parziali, questo parametro viene ignorato.

Il valore predefinito è FAL edizione Standard.

Decodifica

L'API di decodifica WIC è progettata per essere indipendente dal codec e la decodifica delle immagini per i codec abilitati per WIC è essenzialmente la stessa. Per altre informazioni sulla decodifica delle immagini, vedere La panoramica della decodifica. Per altre informazioni sull'uso di dati immagine decodificati, vedere Cenni preliminari sulle origini bitmap.

Supporto di IWICBitmapSourceTransform

Oltre alle interfacce necessarie per essere un codec abilitato per WIC, il decodificatore hd photo nativo supporta anche IWICBitmapSourceTransform. L'interfaccia IWICBitmapSourceTransform offre un'opzione avanzata per decodificare un flusso di bit di immagine. Anziché restituire semplicemente un'immagine completa usando IWICBitmapFrameDecode, l'interfaccia IWICBitmapSourceTransform abilita le opzioni del decodificatore seguenti.

  • Decodificare un'area secondaria rettangolare dell'immagine.
  • Decodificare a una risoluzione inferiore
  • Decodifica in un formato pixel diverso
  • Eseguire una trasformazione (rotazione/scorrimento) durante la decodifica

Il codec HD Photo nativo offre il livello di supporto seguente per l'interfaccia IWICBitmapSourceTransform .

DoesSupportTransform

L'implementazione nativa supporta tutte le trasformazioni WICBitmapTransformOptions.

GetClosestSize

Per le richieste inferiori a 1/2, la dimensione dell'immagine di origine in entrambe le dimensioni, HD Photo restituisce la dimensione più grande dell'immagine intera successiva divisibile in modo uniforme per un fattore di due. Per tutte le altre dimensioni richieste, HD Photo restituisce le dimensioni originali dell'immagine.

GetClosestPixelFormat

Hd Photo restituisce il formato pixel dell'immagine codificata.

CopyPixels

Foto HD accetta qualsiasi area richiesta specificata dal parametro WICRect e restituisce tale parte dell'immagine.

I parametri uiWidth e uiHeight devono specificare le dimensioni restituite dalla funzione GetClosestSize . Tutti gli altri valori restituiscono un errore.

Il parametro pguidDstFormat deve specificare il formato pixel restituito dalla funzione GetClosestPixelFormat . Qualsiasi altro valore restituisce un errore.

Hd Photo accetta qualsiasi valore consentito per il parametro dstTransform . Si noti che i valori consentiti da WIC per questo parametro sono diversi dai valori usati da HD Photo per il tag dei metadati di trasformazione.