Delen via


Overzicht van HD-foto-indeling

Dit onderwerp bevat informatie over de systeemeigen (ingebouwde) HD Photo-codec die beschikbaar is via het Windows Imaging Component (WIC).

Belangrijk

De HD Photo-indeling is een pre-standaardimplementatie van de JPEG XR-indeling en ondersteuning voor HD Photo wordt geïmplementeerd door de JPEG XR WIC-codec. Zie overzicht van JPEG XR-codecsvoor meer informatie.

Codec-identiteit

De volgende tabel bevat informatie over codec-identificatie.

Bestanddeel Beschrijving
Formele naam(en) HD Photo, Windows Media Photo
Bestandsnaamextensie(en) wdp
MIME-type image/vnd.ms-photo
Bestandshandtekening(en) Eerste vier bytes: 0x4949bc00 (versie 0; voorlopige versie), 0x4949bc01 (versie 1.0)

De volgende tabel bevat de GUID's die worden gebruikt om de systeemeigen HD Photo codec-onderdelen te identificeren.

Bestanddeel Vriendelijke naam GUID
Containerindeling GUID_ContainerFormatWmp 57a37caa-367a-4540-916bf183c5093a4b
Decoder CLSID_WICWmpDecoder a26cec36-234c-4950-ae16e34aace71d0d
Encoder CLSID_WICWmpEncoder ac4ce3cb-e1c1-44cd-82155a1665509ec2

Codering

De WIC-coderings-API is ontworpen om codec-onafhankelijk te zijn en codering van afbeeldingen voor WIC-codecs is in feite hetzelfde. Zie de Overzicht van codering van afbeeldingenvoor meer informatie over het coderen van afbeeldingen met behulp van de WIC-API.

Encoderopties

WIC-codecs verschillen op het niveau van de coderingsopties. Encoderopties weerspiegelen de mogelijkheden van een afbeeldingscoderingsprogramma en elke systeemeigen codec ondersteunt een set van deze encoderopties. Encoderopties kunnen eenvoudige WIC-ondersteunde opties zijn die beschikbaar zijn voor alle WIC-ingeschakelde codes (hoewel niet noodzakelijkerwijs ondersteund), of specifiek door de afbeeldingsformaat-codec ontworpen codec-opties. Voor het beheren van deze coderingsopties tijdens het coderingsproces gebruikt WIC de IPropertyBag2 interface. Zie voor meer informatie over het gebruik van de IPropertyBag2 interface voor WIC-codering de Encoding Overview.

De HD Photo-codec maakt gebruik van zowel eenvoudige WIC-opties als verschillende HD Photo-specifieke coderingsopties. De volgende tabel bevat de encoderopties die worden ondersteund door de systeemeigen HD Photo-codec.

Basisopties voor WIC-coderingsprogramma's

Naam van eigenschap VARTYPE Waardebereik Standaardwaarde
Beeldkwaliteit VT_R4 0 - 1.0 0.9
Lossless VT_BOOL WAAR, ONWAAR ONWAAR
BitmapTransform- VT_UI1 WICBitmapTransformOptions WICBitmapTransformRotate0

Opties voor HD Photo Specific Encoder

Naam van eigenschap VARTYPE Waardebereik Standaardwaarde
UseCodecOptions VT_BOOL WAAR, ONWAAR ONWAAR
kwaliteit VT_UI1 1 - 255 10
overlappen VT_UI1 0 - 2 1
subsampling VT_UI1 0 - 3 3 als ImageQuality > 0,8; anders 1;
HorizontalTileSlices VT_UI2 0 - 4095 (afbeeldingsbreedte – 1) >> 8
VerticalTileSlices VT_UI2 0 - 4095 (hoogte van afbeelding – 1) >> 8
FrequentieVolgorde VT_BOOL WAAR, ONWAAR WAAR
InterleavedAlpha VT_BOOL WAAR, ONWAAR ONWAAR
AlphaQuality VT_UI1 1 - 255 1
CompressedDomainTranscode- VT_BOOL WAAR, ONWAAR TRUE
ImageDataDiscard- VT_UI1 0 - 3 0
AlphaDataDiscard- VT_UI1 0 - 4 Niet gebruikt.
IgnoreOverlap VT_BOOL WAAR, ONWAAR ONWAAR

Als een encoderoptie aanwezig is in de IPropertyBag2 lijst met opties die de codec niet ondersteunt, wordt deze genegeerd.

Optie Beeldkwaliteit

Hiermee specificeert u de gewenste afbeeldingsgetrouwheid. 0.0 geeft de laagst mogelijke betrouwbaarheid aan en 1,0 geeft de hoogste kwaliteit aan. Voor de HD Photo-afbeeldingsindeling resulteert een 1.0-waarde in een wiskundig verliesloze compressie.

De standaardwaarde is 0,9.

Optie Compressiekwaliteit

Stelt de gewenste compressiekwaliteit in. 0.0 geeft het efficiënte compressieschema aan dat beschikbaar is. Normaal gesproken produceert dit schema een snellere codering, maar grotere uitvoer. Een waarde van 1.0 geeft het meest efficiënte compressieschema aan dat beschikbaar is, wat doorgaans een langere codering produceert, maar een kleinere uitvoer.

HD Photo biedt geen ondersteuning voor deze encoderoptie. Deze waarde wordt genegeerd als deze aanwezig is in de IPropertyBag2 parameterlijst.

Optie zonder verlies

Hiermee geeft u op of de compressiemodus voor verliezen moet worden gebruikt. Voor de afbeeldingsindeling HD-foto overschrijft deze waarde de optiewaarde ImageQuality.

De standaardwaarde is FALSE.

BitmapTransform-optie

Hiermee geeft u op hoe de afbeelding wordt getransformeerd tijdens het decoderen van afbeeldingen. U moet deze optie instellen op een van de WICBitmapTransformOptions opsommingswaarden.

De standaardwaarde is WICBitmapTransformOptions::WICBitmapTransformRotate0.

Gebruik de optie UseCodecOptions

Als de waarde VARIANT_TRUE is, de opties Quality, Overlapen Subsampling in plaats van de optiewaarde.

De standaardwaarde is FALSE.

Kwaliteitsoptie

Hiermee geeft u de compressiekwaliteit voor de afbeelding. Een waarde van 1 geeft verliesloze modus aan. Toenemende waarden resulteren in hogere compressieverhoudingen en lagere beeldkwaliteit.

De standaardwaarde is 10.

Optie Overlap

Hiermee geeft u het niveau van overlappende verwerking.

De volgende tabel bevat de beschikbare overlappingsverwerkingsniveaus.

Waarde Beschrijving
0 Er is geen overlappingsverwerking ingeschakeld.
1 Eén niveau van overlappingsverwerking is ingeschakeld, waarbij 4x4 blok gecodeerde waarden worden gewijzigd op basis van waarden van aangrenzende blokken.
2 Er zijn twee niveaus van overlappingsverwerking ingeschakeld. Naast de verwerking op het eerste niveau worden gecodeerde waarden van 16x16 macroblokken gewijzigd op basis van de waarden van aangrenzende macroblokken.

De standaardwaarde is 1.

Optie voor subsampling

Hiermee specifieert u extra compressie in de chromaruimte. Op deze manier kunt u luminantiedetails behouden ten koste van kleurdetails. Deze optie is alleen van toepassing op RGB-afbeeldingen.

De volgende tabel bevat de beschikbare opties voor subsampling.

Waarde Beschrijving
3 4:4:4 codering behoudt volledige chroma resolutie.
2 4:2:2 codering vermindert de chroma resolutie tot 1/2 van luminantie resolutie.
1 4:2:0 codering vermindert de chromaresolutie tot 1/4 van de luminantieresolutie.
0 4:0:0 codering verwijdert alle chroma-inhoud en behoudt alleen de helderheid. Omdat de codec een enigszins gewijzigde definitie van luminantie gebruikt om de prestaties te verbeteren, raden we u aan een RGB-afbeelding te converteren naar monochroom voordat u coderen in plaats van deze subsamplingmodus van chroma te gebruiken.

De standaardwaarde is 3 als ImageQuality> 0,8; anders 1.

Opties voor HorizontalTileSlices, VerticalTileSlices

Geef de horizontale en verticale tegeling van de afbeelding op voordat u compressiecodering uitvoert voor de optimale prestaties van regiodecodering. Door de afbeelding tijdens het coderen in rechthoekige tegels te verdelen, kunt u regio's van de afbeelding decoderen zonder de volledige gecomprimeerde gegevensstroom te verwerken. Met de standaardwaarde 0 wordt geen onderverdeling opgegeven, zodat de volledige afbeelding wordt behandeld als één tegel. Een waarde van 1 voor elke parameter maakt één horizontale en één verticale verdeling, waardoor de afbeelding in vier tegels met gelijke grootte wordt verdeeld. De maximumwaarde van 4095 voor elke parameter verdeelt de afbeelding in 4096 tegelrijen met 4096 tegels per rij. Met andere woorden, de parameterwaarden zijn gelijk aan het aantal horizontale en verticale tegels (respectievelijk) min 1. Een tegel kan nooit kleiner zijn dan 16 pixels in breedte of hoogte, dus de HD Photo-encoder kan deze parameter aanpassen om de vereiste minimale tegelgrootte te behouden. Omdat er sprake is van opslag- en verwerkingsoverhead die aan elke tegel is gekoppeld, moet u deze waarden zorgvuldig kiezen om te voldoen aan het specifieke scenario.

HorizontalTileSlices: de standaardwaarde is (Afbeeldingsbreedte – 1) >> 8.

VerticalTileSlices: de standaardwaarde is (Afbeeldingshoogte – 1) >> 8.

FrequencyOrder-optie

Hiermee geeft u op dat de afbeelding moet worden gecodeerd in frequentievolgorde. De laagste frequentiegegevens worden eerst weergegeven in het bestand, en de inhoud van de afbeelding wordt gegroepeerd op basis van de frequentie in plaats van de ruimtelijke oriëntatie. Het ordenen van een bestand op basis van frequentievolgorde biedt de beste prestaties voor elke op frequentie gebaseerde decodering, en daarom raden we het aan. Apparaatimplementaties van HD Photo-encoders kunnen een bestand in ruimtelijke volgorde organiseren om de geheugenvoetafdruk te verminderen die nodig is tijdens het coderen.

De standaardwaarde is TRUE en we raden aan dat toepassingen en apparaten altijd frequentievolgorde gebruiken, tenzij u prestatie- of toepassingsspecifieke redenen hebt om ruimtelijke volgorde te gebruiken.

Optie InterleavedAlpha

Als u deze optie instelt op TRUE geeft u de codec opdracht om de alfakanaalgegevens te coderen als een extra interleaved kanaal, zonder correlatie met de kanalen voor afbeeldingsinhoud. Deze modus is handig wanneer u alfa tegelijk moet decoderen met de afbeelding in een streamingscenario.

Als u deze parameter instelt op FALSE resulteert in een planar alpha-kanaal, gecodeerd als een afzonderlijke afbeelding met een eigen optionele kwaliteitswaarde. Met behulp van een planar alfakanaal kunt u de afbeeldingsgegevens en het alfakanaal onafhankelijk decoderen. Interleaved alpha-kanalen worden alleen ondersteund voor bepaalde RGB-pixelindelingen. U kunt een Planar-alfakanaal koppelen aan elke afbeeldingsindeling die een alfakanaal definieert.

De standaardwaarde is FALSE.

Optie AlphaQuality

Hiermee geeft u de compressiekwaliteit voor de planaire alfakanaalafbeelding. Een waarde van 1 stelt de modus verliesloos in. Toenemende waarden resulteren in hogere compressieverhoudingen en lagere beeldkwaliteit.

De standaardwaarde is 1.

Optie CompressedDomainTranscode

Met BEHULP van HD Photo kunt u een aantal bewerkingen voor bestandstransformatie uitvoeren zonder de gecomprimeerde gegevens daadwerkelijk te decoderen en opnieuw te coderen naar het doelbestand. Gecomprimeerde domeinbewerkingen zijn zeer efficiënt en voorkomen eventuele extra kwaliteitsverlies die typisch is wanneer u een lossy-gecomprimeerde afbeelding decodert en opnieuw coderen.

De volgende gecomprimeerde domeinbewerkingen worden ondersteund:

  • Een regio van de afbeelding bijsnijden.
  • Voer een rotatie- of spiegeltransformatie uit.
  • Frequentiegegevens negeren (waardoor het mogelijk is om een kleiner afbeeldingsbestand te maken.)
  • Rangschik de afbeelding tussen de ruimtelijke en de opeenvolgende frequentievolgorde opnieuw.

De HD Photo-encoder voert een gecomprimeerde domeintranscodebewerking uit wanneer deze een HD Photo-afbeelding codeert met behulp van een HD Photo-decoder als de afbeeldingsbron. Afhankelijk van de coderingsopties die u hebt geselecteerd, gebruikt de codec indien mogelijk een gecomprimeerde domeinbewerking. Als een toepassing ervoor kiest om eventuele gecomprimeerde domeintranscodebewerkingen expliciet te remmen, moet u de optie UseCodecOptions-optie instellen op TRUE- en de optie CompressedDomainTranscode op FALSE.

Wanneer de codec een gecomprimeerde domeinbewerking uitvoert, zijn alleen bepaalde coderingsparameter- en eigenschapsinstellingen toegestaan.

  • De basisopties voor encoders ImageQuality, CompressionQuality en Lossless worden genegeerd.
  • De HD Photo-specific encoder options Quality, Overlap, InterleavedAlpha en AlphaQuality worden genegeerd.
  • Indien aanwezig, moeten de opties HorizontalTileSlices en VerticalTileSlices worden ingesteld op nul. De tegelgrootte van een afbeelding kan niet worden gewijzigd als onderdeel van een gecomprimeerde domeintranscode.
  • U kunt de organisatie van afbeeldingen wijzigen tussen frequentie en ruimtelijke volgorde door de juiste waarde op te geven van de FrequencyOrdering opties.
  • Een kardinale draaiing en/of horizontale/verticale flipbewerking kan worden uitgevoerd op basis van de waarde die is opgegeven in de optie BitmapTransform encoder.
  • De afbeelding kan worden bijgesneden door de gewenste regio op te geven met behulp van de WICRect- parameter van de methode WriteSource encoder.
  • Afbeeldings- en/of alfagegevens kunnen worden verwijderd door de juiste waarden op te geven in de ImageDataDiscard en/of AlphaDataDiscard opties, waardoor de gecodeerde bestandsgrootte wordt verkleind en de resolutie van de nieuwe afbeelding effectief wordt verkleind.

De standaardwaarde is TRUE en we raden aan dat toepassingen en apparaten altijd de frequentievolgorde gebruiken, tenzij u specifieke prestatie- of toepassingsredenen hebt om de ruimtelijke volgorde te gebruiken.

Optie ImageDataDiscard

Deze parameter is alleen geldig als de optie CompressedDomainTranscode is TRUE; anders wordt het genegeerd. ImageDataDiscard geeft de hoeveelheid afbeeldingsgegevens op die moeten worden verwijderd tijdens een gecomprimeerde domeintranscode. Als de afbeelding een interleaved alfakanaal bevat, is deze weggegooide data ook van toepassing op het alfakanaal, met de uitzonderingen zoals beschreven verderop in deze sectie.

De volgende waarden zijn toegestaan.

Waarde Beschrijving
0 Er worden geen afbeeldingsfrequentiegegevens verwijderd.
1 De FlexBits worden verwijderd, waardoor de kwaliteit van de transcodeerde afbeelding willekeurig wordt verminderd zonder de effectieve resolutie van de afbeelding te wijzigen. De exacte bestandsgroottevermindering of de specifieke kwaliteitsvermindering is afhankelijk van talloze factoren en kan niet worden opgegeven of voorspeld. Deze waarde genereert een fout als u deze opgeeft voor een interleaved alpha-kanaal.
2 De highPass-frequentiegegevensband wordt verwijderd (dat ook de FlexBits omvat), waardoor de resolutie van de getranscodeerde afbeelding effectief wordt verminderd met een factor van 4 in beide dimensies. De werkelijke afmetingen van de getranscodeerde afbeelding blijven hetzelfde, maar de afbeelding verliest alle detail in elk 4x4-pixelblok. Daarom moet u een getranscodeerde afbeelding dienovereenkomstig verminderen wanneer u deze decodeert.
3 Zowel de HighPass- als LowPass-frequentiebanden worden verwijderd (waaronder ook de FlexBits), waardoor de resolutie van de getranscodeerde afbeelding met een factor van 16 in beide dimensies effectief wordt verminderd. De werkelijke afmetingen van de transcoded afbeelding blijven hetzelfde, maar verliest alle details in elk macroblok van 16x16 pixels. Daarom moet u de getranscodeerde afbeelding downsamplen wanneer u deze decodeert, dienovereenkomstig.

De standaardwaarde is 0.

Optie AlphaDataDiscard

Deze optie is alleen geldig als de eigenschap CompressedDomainTranscode is TRUE en de afbeelding een planar- of interleaved alpha-kanaal bevat; anders wordt het genegeerd. Hiermee geeft u de hoeveelheid alfafrequentiegegevens op die moeten worden verwijderd tijdens een gecomprimeerde domeintranscode. De volgende waarden zijn toegestaan voor een planar alfakanaal.

Waarde Beschrijving
0 Er worden geen afbeeldingsfrequentiegegevens verwijderd.
1 De FlexBits worden verwijderd, waardoor de kwaliteit van het planaire alfakanaal voor de getranscodeerde afbeelding willekeurig wordt verminderd zonder de effectieve resolutie te wijzigen. De exacte bestandsgroottevermindering of de specifieke kwaliteitsvermindering is afhankelijk van talloze factoren en kan niet worden opgegeven of voorspeld.
2 De gegevensband van de HighPass-frequentie wordt verwijderd (inclusief de FlexBits), waardoor de resolutie van het planar alphakanaal van het transcoded beeld effectief wordt verminderd met een factor 4 in beide dimensies. De werkelijke afmetingen van de getranscodeerde afbeelding blijven hetzelfde, maar de afbeelding verliest alle details van het alfakanaal in elk 4x4-pixelblok. Daarom moet de getranscodeerde afbeelding passend worden verkleind wanneer deze wordt gedecodeerd. Normaal gesproken moet u deze waarde alleen instellen wanneer u de eigenschap ImageDataDiscard instelt op dezelfde waarde.
3 Zowel de HighPass- als LowPass-frequentiebanden worden verwijderd (waaronder ook de FlexBits), waardoor de resolutie van de getranscodeerde afbeelding met een factor van 16 in beide dimensies effectief wordt verminderd. De werkelijke afmetingen van de transcoded afbeelding blijven hetzelfde, maar de afbeelding verliest alle details in elk macroblok van 16x16 pixels. Daarom moet de getranscodeerde afbeelding dienovereenkomstig worden verkleind wanneer deze wordt gedecodeerd. Normaal gesproken moet u deze waarde alleen instellen wanneer u de eigenschap ImageDataDiscard instelt op dezelfde waarde.
4 Het Alpha-kanaal is volledig verwijderd. De pixelindeling van de transcoded afbeelding wordt gewijzigd om het verwijderen van het alfakanaal weer te geven.

Voor afbeeldingen die interleaved alfakanalen bevatten, tenzij deze eigenschap is ingesteld op 4, wordt het alfakanaal hetzelfde verwerkt als de afbeeldingsgegevens, volgens de waarde van de eigenschap ImageDataDiscard. Als deze eigenschap is ingesteld op 4, wordt het interleaved alpha-kanaal volledig verwijderd en wordt de pixelindeling van de getranscodeerde afbeelding dienovereenkomstig gewijzigd.

Geen standaardwaarde.

Optie Overlap Negeren

Deze optie is alleen geldig als de eigenschap CompressedDomainTranscodeTRUE is en een transcode van een subregio met precies één of meer tegels wordt aangevraagd. De standaardbewerking voor een regiotranscode (of decoderen) is om de aangevraagde regio uit te breiden met de omringende pixels die nodig zijn voor overlappingscodering van de regioranden. Wanneer deze parameter is ingesteld op TRUE, worden de omringende pixels genegeerd en worden alleen de geselecteerde tegel of tegels geëxtraheerd. Nogmaals, dit vereist dat de aangevraagde regio exact overeenkomt met de coördinaten van een of meer tegels. Als de bronafbeelding niet wordt betegeld of als de opgegeven regio gedeeltelijke tegels specificeert, wordt deze parameter genegeerd.

De standaardwaarde is FALSE.

Decodering

De WIC-decoderings-API is ontworpen om codec-onafhankelijk te zijn en decoderen van afbeeldingen voor WIC-codecs is in feite hetzelfde. Voor meer informatie over het decoderen van afbeeldingen, zie de Overzicht van decoderen. Zie de Overzicht van bitmapbronnenvoor meer informatie over het gebruik van gedecodeerde afbeeldingsgegevens.

Ondersteuning voor IWICBitmapSourceTransform

Naast de vereiste interfaces om een WIC-compatibele codec te zijn, ondersteunt de HD Photo-systeemeigen decoder ook de IWICBitmapSourceTransform. De interface IWICBitmapSourceTransform biedt een geavanceerde optie voor het decoderen van een afbeeldingsbitstream. In plaats van alleen een volledige afbeelding te retourneren met behulp van IWICBitmapFrameDecode, schakelt IWICBitmapSourceTransform interface de volgende decoderopties in.

  • Decoderen van een rechthoekig subgebied van de afbeelding.
  • Decoderen naar een lagere resolutie
  • Decoderen naar een andere pixelindeling
  • Tijdens het decoderen een transformatie uitvoeren (draaien/spiegelen)

De systeemeigen HD Photo-codec biedt het volgende ondersteuningsniveau voor de interface IWICBitmapSourceTransform.

DoesSupportTransform

Systeemeigen implementatie ondersteunt alle WICBitmapTransformOptions transformaties.

KrijgDichtstbijzijndeGrootte

Voor aanvragen die kleiner zijn dan 1/2 de dimensie van de bronafbeelding in beide dimensies, retourneert HD Photo de eerstvolgende grootste gehele afbeeldingsgrootte die gelijkmatig deelbaar is met een factor van twee. Voor alle andere aangevraagde grootten retourneert HD Photo de oorspronkelijke afbeeldingsafmetingen.

GetClosest PixelFormat

HD Photo retourneert de pixelindeling van de gecodeerde afbeelding.

Copy Pixels

HD Photo accepteert een aangevraagde regio die is opgegeven door de WICRect parameter en retourneert dat gedeelte van de afbeelding.

De parameters uiWidth en uiHeight moeten dimensies opgeven die worden geretourneerd door de functie GetClosestSize. Eventuele andere waarden retourneren een fout.

De parameter pguidDstFormat moet de pixelindeling opgeven die wordt geretourneerd door de functie GetClosest PixelFormat. Elke andere waarde retourneert een fout.

HD Photo accepteert elke toegestane waarde voor de parameter dstTransform. Houd er rekening mee dat de waarden die zijn toegestaan door WIC voor deze parameter verschillen van de waarden die worden gebruikt door HD Photo voor de metagegevenstag Transformatie.