Übersicht über das HD-Fotoformat

Dieses Thema enthält Informationen zum nativen HD-Fotocodec, der über die Windows Imaging Component (WIC) verfügbar ist.

Wichtig

Das HD-Fotoformat ist eine Vorstandardimplementierung des JPEG-XR-Formats. Das JPEG-XR-Format wurde vollständig in Windows 8. Weitere Informationen finden Sie in der ÜBERSICHT ÜBER DEN JPEG XR-Codec.

Dieses Thema enthält folgende Abschnitte:

Codec-Identität

Die folgende Tabelle enthält Codec-Identifikationsinformationen.

Komponente Beschreibung
Formale Namen HD-Foto, Windows Medienfoto
Dateinamenerweiterung(en) Wdp
MIME-Typ (MIME type) image/vnd.ms-photo
Dateisignaturen Erste vier Bytes: 0x4949bc00 (Version 0; Vorabversion), 0x4949bc01 (Version 1.0)

In der folgenden Tabelle sind die GUIDs aufgeführt, die zum Identifizieren der nativen HD Photo-Codeckomponenten verwendet werden.

Komponente Anzeigename GUID
Containerformat GUID _ ContainerFormatWmp 57a37caa-367a-4540-916bf183c5093a4b
Decoder CLSID _ WICWmpDecoder a26cec36-234c-4950-ae16e34aace71d0d
Encoder CLSID _ WICWmpEncoder ac4ce3cb-e1c1-44cd-82155a1665509ec2

Codierung

Die WIC-Codierungs-API ist codecunabhängig, und die Bildcodierung für WIC-fähige Codecs ist im Wesentlichen identisch. Weitere Informationen zur Bildcodierung mithilfe der WIC-API finden Sie unter Übersicht über die Codierung.

Encoderoptionen

WIC-fähige Codecs unterscheiden sich auf der Ebene der Codierungsoption. Encoderoptionen spiegeln die Funktionen eines Bildencoder wider, und jeder native Codec unterstützt einen Satz dieser Encoderoptionen. Encoderoptionen können grundlegende WIC-unterstützte Optionen sein, die für alle WIC-fähigen Codes (wenn auch nicht unbedingt unterstützt) oder codecspezifische Optionen verfügbar sind, die vom Bildformatcodec entworfen wurden. Um diese Codierungsoptionen während des Codierungsprozesses zu verwalten, verwendet WIC die IPropertyBag2-Schnittstelle . Weitere Informationen zur Verwendung der IPropertyBag2-Schnittstelle für die WIC-Codierung finden Sie unter Übersicht über die Codierung.

Der HD Photo-Codec verwendet beide grundlegenden WIC-Optionen und bietet mehrere HD Photo-spezifische Codierungsoptionen. In der folgenden Tabelle sind die Encoderoptionen aufgeführt, die vom nativen HD-Fotocodec unterstützt werden.

Grundlegende WIC-Encoderoptionen

Eigenschaftenname VARTYPE Wertbereich Standardwert
ImageQuality VT _ R4 0 - 1.0 0.9
Lossless VT _ BOOL TRUE, FALSE FALSE
BitmapTransform VT _ UI1 WICBitmapTransformOptions WICBitmapTransformRotate0

HD Photo Specific Encoder Options

Eigenschaftenname VARTYPE Wertbereich Standardwert
UseCodecOptions VT _ BOOL TRUE, FALSE FALSE
Qualität VT _ UI1 1 - 255 10
Überlappen VT _ UI1 0 - 2 1
Subsampling VT _ UI1 0 – 3 3, wenn ImageQuality > 0.8 ist; andernfalls 1;
HorizontalTileSlices VT _ UI2 0 - 4095 (Bildbreite – 1) >> 8
VerticalTileSlices VT _ UI2 0 - 4095 (Bildhöhe – 1) >> 8
FrequencyOrder VT _ BOOL TRUE, FALSE TRUE
InterleavedAlpha VT _ BOOL TRUE, FALSE FALSE
AlphaQuality VT _ UI1 1 - 255 1
CompressedDomainTranscode VT _ BOOL TRUE, FALSE TRUE
ImageDataDiscard VT _ UI1 0 – 3 0
AlphaDataDiscard VT _ UI1 0–4 Wird nicht verwendet.
IgnoreOverlap VT _ BOOL TRUE, FALSE FALSE

Wenn eine Encoderoption in der IPropertyBag2-Optionsliste vorhanden ist, die der Codec nicht unterstützt, wird sie ignoriert.

ImageQuality-Option

Gibt die gewünschte Bildgenauigkeit an. 0.0 gibt die geringstmögliche Genauigkeit und 1,0 die höchste Genauigkeit an. Für das HD-Fotobildformat führt ein 1,0-Wert zu einer mathematischen verlustlosen Komprimierung.

Der Standardwert ist 0,9.

CompressionQuality-Option

Gibt die gewünschte Komprimierungsqualität an. 0.0 gibt das verfügbare effiziente Komprimierungsschema an. In der Regel erzeugt dieses Schema eine schnellere Codierung, aber eine größere Ausgabe. Der Wert 1.0 gibt das effizienteste verfügbare Komprimierungsschema an, das in der Regel eine längere Codierung, aber eine kleinere Ausgabe erzeugt.

HD Photo unterstützt diese Encoderoption nicht. Dieser Wert wird ignoriert, wenn er in der IPropertyBag2-Parameterliste vorhanden ist.

Verlustlose Option

Gibt an, ob der Verlustkomprimierungsmodus verwendet werden soll. Für das HD-Fotobildformat überschreibt dieser Wert den Wert der Option ImageQuality.

Der Standardwert ist FALSE.

BitmapTransform-Option

Gibt an, wie das Bild während der Bilddecodierung transformiert wird. Sie müssen diese Option auf einen der WICBitmapTransformOptions-Enumerationswerte festlegen.

Der Standardwert ist WICBitmapTransformOptions::WICBitmapTransformRotate0.

UseCodecOptions-Option

Wenn der Wert VARIANT _ TRUE ist, werden die Optionen Quality, Overlapund Subsampling anstelle des Optionswerts verwendet.

Der Standardwert ist FALSE.

Quality-Option

Gibt die Komprimierungsqualität für das Bild an. Der Wert 1 gibt den verlustlosen Modus an. Das Erhöhen von Werten führt zu einem höheren Komprimierungsverhältnis und einer niedrigeren Bildqualität.

Der Standardwert ist 10.

Überlappungsoption

Gibt die Ebene der Überlappungsverarbeitung an.

In der folgenden Tabelle sind die verfügbaren Überlappungsverarbeitungsebenen aufgeführt.

Wert Beschreibung
0 Überlappungsverarbeitung ist nicht aktiviert.
1 Eine Ebene der Überlappungsverarbeitung ist aktiviert, bei der 4x4-blockcodierte Werte basierend auf Werten benachbarter Blöcke geändert werden.
2 Zwei Überlappungsverarbeitungsebenen sind aktiviert. Zusätzlich zur Verarbeitung der ersten Ebene werden codierte Werte von 16x16-Makroblöcken basierend auf den Werten benachbarter Makroblöcke geändert.

Der Standardwert ist 1.

Subsamplingoption

Gibt zusätzliche Komprimierung im Komprimierungsraum an. Auf diese Weise können Sie die Details der Leuchtdichte auf Kosten der Farbdetails beibehalten. Diese Option gilt nur für RGB-Bilder.

In der folgenden Tabelle sind die verfügbaren Unterbeispieloptionen aufgeführt.

Wert Beschreibung
3 Die 4:4:4-Codierung behält die vollständige Auflösung bei.
2 Die 4:2:2-Codierung reduziert die Auflösung der Farbauflösung auf 1/2 der Leuchtdichteauflösung.
1 Die 4:2:0-Codierung reduziert die Auflösung der Farbauflösung auf 1/4 der Leuchtdichteauflösung.
0 Die 4:0:0-Codierung verwirft alle Inhalte und behält nur die Leuchtdichte bei. Da der Codec eine leicht geänderte Definition der Leuchtdichte verwendet, um die Leistung zu verbessern, empfiehlt es sich, ein RGB-Bild vor der Codierung in monofarbig zu konvertieren, anstatt diesen Subsamplingmodus zu verwenden.

Der Standardwert ist 3, wenn ImageQuality > 0,8; andernfalls 1.

HorizontalTileSlices, VerticalTileSlices-Optionen

Geben Sie die horizontale und vertikale Kacheln des Bilds an, bevor Sie die Komprimierungscodierung durchführen, um die optimale Leistung der Bereichsdecodierung zu erzielen. Indem Sie das Bild während der Codierung in rechteckige Kacheln unterteilen, können Sie Bereiche des Bilds decodieren, ohne den gesamten komprimierten Datenstrom zu verarbeiten. Der Standardwert 0 gibt keine Unterteilung an, sodass das gesamte Bild als einzelne Kachel behandelt wird. Der Wert 1 für jeden Parameter erstellt eine einzelne horizontale und eine einzelne vertikale Division, die das Bild effektiv in vier gleich große Kacheln aufteilt. Der Maximalwert 4095 für jeden Parameter teilt das Bild in 4096 Kachelzeilen mit 4096 Kacheln pro Zeile auf. Anders ausgedrückt: Die Parameterwerte sind gleich der Anzahl der horizontalen und vertikalen Kacheln (bzw. minus 1). Eine Kachel darf nie kleiner als 16 Pixel in Breite oder Höhe sein, daher kann der HD-Fotoencoder diesen Parameter anpassen, um die erforderliche Minimale Kachelgröße zu erhalten. Da jeder Kachel Speicher- und Verarbeitungsaufwand zugeordnet ist, sollten Sie diese Werte sorgfältig auswählen, um das spezifische Szenario zu erfüllen.

HorizontalTileSlices:Der Standardwert ist (Bildbreite – 1) >> 8.

VerticalTileSlices:Der Standardwert ist (Bildhöhe – 1) >> 8.

FrequencyOrder-Option

Gibt an, dass das Bild in der Reihenfolge der Häufigkeit codiert werden muss. Die Daten mit der niedrigsten Häufigkeit werden zuerst in der Datei angezeigt, und der Bildinhalt wird nach seiner Häufigkeit und nicht nach seiner räumlichen Ausrichtung gruppiert. Das Organisieren einer Datei nach Häufigkeits reihenfolge bietet die beste Leistung für jede häufigkeitsbasierte Decodierung und wird daher empfohlen. Geräteimplementierungen von HD-Fotoencodern können eine Datei in räumlicher Reihenfolge organisieren, um den während der Codierung erforderlichen Speicherbedarf zu reduzieren.

Der Standardwert ist TRUE, und es wird empfohlen, dass Anwendungen und Geräte immer die Häufigkeits reihenfolge verwenden, es sei denn, Sie haben leistungs- oder anwendungsspezifische Gründe für die Verwendung der räumlichen Reihenfolge.

InterleavedAlpha-Option

Durch Festlegen dieser Option auf TRUE wird der Codec angewiesen, die Alphakanalinformationen als zusätzlichen verwebten Kanal ohne Korrelation mit den Bildinhaltskanälen zu codieren. Dieser Modus ist nützlich, wenn Sie alpha gleichzeitig mit dem Bild in einem Streamingszenario decodieren müssen.

Das Festlegen dieses Parameters auf FALSE führt zu einem planaren Alphakanal, der als separates Bild mit einem eigenen optionalen Quality-Wert codiert ist. Mit einem planaren Alphakanal können Sie die Bilddaten und den Alphakanal unabhängig decodieren. Überlappte Alphakanäle werden nur für bestimmte RGB-Pixelformate unterstützt. Sie können einen planaren Alphakanal jedem Bildformat zuordnen, das einen Alphakanal definiert.

Der Standardwert ist FALSE.

AlphaQuality-Option

Gibt die Komprimierungsqualität für das planare Alphakanalbild an. Der Wert 1 legt den verlustlosen Modus fest. Das Erhöhen von Werten führt zu einem höheren Komprimierungsverhältnis und einer niedrigeren Bildqualität.

Der Standardwert ist 1.

CompressedDomainTranscode-Option

Mit HD Photo können Sie eine Reihe von Dateitransformationsvorgängen ausführen, ohne die komprimierten Daten tatsächlich zu decodieren und in die Zieldatei neu zu codieren. Vorgänge für komprimierte Domänen sind sehr effizient und vermeiden zusätzliche Qualitätsverluste, die typisch sind, wenn Sie ein verlustverknrücktes Bild decodieren und erneut codieren.

Die folgenden Vorgänge für komprimierte Domänen werden unterstützt:

  • Zuschneiden eines Bildbereichs.
  • Führen Sie eine Drehungs-/Kipptransformation aus.
  • Verwerfen von Häufigkeitsdaten (wodurch eine kleinere Bilddatei erstellt werden kann)
  • Organisieren Sie das Bild in der sequenziellen Reihenfolge zwischen räumlicher Reihenfolge und Häufigkeit neu.

Der HD Photo-Encoder führt einen komprimierten Domänentranscodierungsvorgang aus, wenn er ein HD-Fotobild mithilfe eines HD-Fotodecoders als Bildquelle codiert. Abhängig von den ausgewählten Codierungsoptionen verwendet der Codec nach Möglichkeit einen komprimierten Domänenvorgang. Wenn eine Anwendung sich dafür entscheidet, transcodierte Domänentranscodierungsvorgänge explizit zu verhindern, sollten Sie die Option UseCodecOptions auf TRUE und die Option CompressedDomainTranscode auf FALSE festlegen.

Wenn der Codec einen komprimierten Domänenvorgang ausführt, sind nur bestimmte Encoderparameter und Eigenschafteneinstellungen zulässig.

Der Standardwert ist TRUE, und es wird empfohlen, dass Anwendungen und Geräte immer die Häufigkeits reihenfolge verwenden, es sei denn, Sie haben bestimmte Leistungs- oder Anwendungsgründe, um die räumliche Reihenfolge zu verwenden.

ImageDataDiscard-Option

Dieser Parameter ist nur gültig, wenn die CompressedDomainTranscode-Option TRUE ist. Andernfalls wird es ignoriert. ImageDataDiscard gibt die Menge der Bilddaten an, die während einer komprimierten Domänentranscodierung verworfen werden. Wenn das Bild einen überlappten Alphakanal enthält, gilt dieser Datenverwerfen auch für den Alphakanal, mit den Ausnahmen, wie weiter unten in diesem Abschnitt beschrieben.

Die folgenden Werte sind zulässig.

Wert Beschreibung
0 Es werden keine Bildfrequenzdaten verworfen.
1 Die FlexBits werden verworfen, wodurch die Qualität des transcodierten Bilds willkürlich reduziert wird, ohne die effektive Auflösung des Bilds zu ändern. Die genaue Verringerung der Dateigröße oder die spezifische Qualitätsreduzierung hängt von zahlreichen Faktoren ab und kann nicht angegeben oder vorhergesagt werden. Dieser Wert gibt einen Fehler zurück, wenn Sie ihn für einen überlappten Alphakanal angeben.
2 Das HighPass frequency-Datenband wird verworfen (einschließlich FlexBits), wodurch die Auflösung des transcodierten Bilds in beiden Dimensionen um den Faktor 4 reduziert wird. Die tatsächlichen Abmessungen des transcodierten Bilds bleiben unverändert, es gehen jedoch alle Details in jedem 4x4-Pixelblock verloren. Aus diesem Grund sollten Sie das transcodierte Bild bei jeder Decodierung entsprechend abkodieren.
3 Sowohl die Hochpass- als auch die LowPass-Frequenzdatenbereiche werden verworfen (einschließlich flexBits), wodurch die Auflösung des transcodierten Bilds in beiden Dimensionen um den Faktor 16 reduziert wird. Die tatsächlichen Abmessungen des transcodierten Bilds bleiben unverändert, es gehen jedoch alle Details in jedem 16x16-Makroblock von Pixeln verloren. Aus diesem Grund sollten Sie das transcodierte Bild bei jeder Decodierung entsprechend abkodieren.

Der Standardwert ist 0.

AlphaDataDiscard-Option

Diese Option ist nur gültig, wenn die CompressedDomainTranscode-Eigenschaft TRUE ist und das Bild entweder einen planaren oder überlappten Alphakanal enthält. Andernfalls wird es ignoriert. Sie gibt die Menge der Alphafrequenzdaten an, die während einer komprimierten Domänentranscodierung verworfen werden. Die folgenden Werte sind für einen planaren Alphakanal zulässig.

Wert Beschreibung
0 Es werden keine Bildfrequenzdaten verworfen.
1 Die FlexBits werden verworfen, wodurch die Qualität des planaren Alphakanals für das transcodierte Bild willkürlich reduziert wird, ohne die effektive Auflösung zu ändern. Die genaue Verringerung der Dateigröße oder die spezifische Qualitätsreduzierung hängt von zahlreichen Faktoren ab und kann nicht angegeben oder vorhergesagt werden.
2 Das HighPass frequency-Datenband wird verworfen (einschließlich FlexBits), wodurch die Auflösung des transcodierten bildplanaren Alphakanals in beiden Dimensionen um den Faktor 4 reduziert wird. Die tatsächlichen Abmessungen des transcodierten Bilds bleiben unverändert, aber das Bild verliert alle planaren Alphakanaldetails in jedem 4x4-Pixelblock. Aus diesem Grund sollte das transcodierte Bild bei jeder Decodierung entsprechend herunterstastiert werden. In der Regel sollten Sie diesen Wert nur festlegen, wenn Sie die ImageDataDiscard-Eigenschaft auf denselben Wert festlegen.
3 Sowohl die Hochpass- als auch die LowPass-Frequenzdatenbereiche werden verworfen (einschließlich flexBits), wodurch die Auflösung des transcodierten Bilds in beiden Dimensionen um den Faktor 16 reduziert wird. Die tatsächlichen Abmessungen des transcodierten Bilds bleiben unverändert, aber das Bild verliert alle Details in jedem 16 x 16-Makroblock von Pixeln. Aus diesem Grund sollte das transcodierte Bild bei jeder Decodierung entsprechend herunterstastiert werden. In der Regel sollten Sie diesen Wert nur festlegen, wenn Sie die ImageDataDiscard-Eigenschaft auf denselben Wert festlegen.
4 Der Alphakanal wird vollständig verworfen. Das Pixelformat des transcodierten Bilds wird geändert, um das Entfernen des Alphakanals widerzubilden.

Für Bilder, die überlappte Alphakanäle enthalten, wird der Alphakanal gemäß dem Wert der ImageDataDiscard-Eigenschaft genauso wie die Bilddaten verarbeitet, es sei denn, diese Eigenschaft ist auf 4 festgelegt. Wenn diese Eigenschaft auf 4 festgelegt ist, wird der überlappte Alphakanal vollständig verworfen, und das Pixelformat des transcodierten Bilds wird entsprechend geändert.

Für dieses Feld gibt es keinen Standardwert.

IgnoreOverlap-Option

Diese Option ist nur gültig, wenn die CompressedDomainTranscode-Eigenschaft TRUE ist und eine Unterbereichstranscodierung von genau einer oder mehreren Kacheln angefordert wird. Der Standardvorgang für eine Region-Transcodierung (oder -decodierung) besteht im Erweitern des angeforderten Bereich um die umgebenden Pixel, die für die Überlappung der Randbereichsdecodierung erforderlich sind. Wenn dieser Parameter auf TRUE festgelegt ist, werden die umgebenden Pixel ignoriert, und nur die ausgewählten Kacheln werden extrahiert. Auch dies erfordert, dass der angeforderte Bereich genau mit den Koordinaten einer oder mehrere Kacheln übereinstimmen muss. Wenn das Quellbild nicht gekachelt ist oder der angeforderte Bereich partielle Kacheln angibt, wird dieser Parameter ignoriert.

Der Standardwert ist FALSE.

Decodierung

Die WIC-Decodierungs-API ist codecunabhängig, und die Bilddecodierung für WIC-fähige Codecs ist im Wesentlichen identisch. Weitere Informationen zur Bilddecodierung finden Sie in der Übersicht über die Decodierung. Weitere Informationen zur Verwendung von decodierten Bilddaten finden Sie in der Übersicht über Bitmapquellen.

IWICBitmapSourceTransform-Unterstützung

Zusätzlich zu den Schnittstellen, die als WIC-fähiger Codec erforderlich sind, unterstützt der native HD Photo-Decoder auch IWICBitmapSourceTransform. Die IWICBitmapSourceTransform-Schnittstelle bietet eine erweiterte Option zum Decodieren eines Bildbitstreams. Anstatt nur ein vollständiges Bild mitHILFE von IWICBitmapFrameDecode zurückgebenzu können, aktiviert die IWICBitmapSourceTransform-Schnittstelle die folgenden Decoderoptionen.

  • Decodieren Sie einen rechteckigen Unterbereich des Bilds.
  • Decodieren in eine niedrigere Auflösung
  • Decodieren in ein anderes Pixelformat
  • Durchführen einer Transformation (Drehung/Kippen) während der Decodierung

Der native HD-Fotocodec bietet die folgende Unterstützungsebene für die IWICBitmapSourceTransform-Schnittstelle.

DoesSupportTransform

Die native Implementierung unterstützt alle WICBitmapTransformOptions-Transformationen.

GetClosestSize

Für Anforderungen, die kleiner als 1/2 die Dimension des Quellbilds in beiden Dimensionen sind, gibt HD Photo die nächste größte ganzzahlige Bildgröße zurück, die gleichmäßig um den Faktor 2 teilbar ist. Für alle anderen angeforderten Größen gibt HD Photo die ursprünglichen Bilddimensionen zurück.

GetClosestPixelFormat

HD Photo gibt das Pixelformat des codierten Bilds zurück.

Copypixels

HD Photo akzeptiert alle angeforderten Bereiche, die durch den WICRect-Parameter angegeben werden, und gibt diesen Teil des Bilds zurück.

Die Parameter uiWidth und uiHeight müssen Dimensionen angeben, wie sie von der GetClosestSize-Funktion zurückgegeben werden. Alle anderen Werte geben einen Fehler zurück.

Der pguidDstFormat-Parameter muss das von der GetClosestPixelFormat-Funktion zurückgegebene Pixelformat angeben. Jeder andere Wert gibt einen Fehler zurück.

HD Photo akzeptiert jeden zulässigen Wert für den dstTransform-Parameter. Beachten Sie, dass sich die von WIC für diesen Parameter zulässigen Werte von den Werten unterscheiden, die von HD Photo für das Transformationsmetadatentag verwendet werden.