HD Fotoğraf biçimine genel bakış
Bu konu, Windows Görüntüleme Bileşeni (WIC) aracılığıyla kullanılabilen yerel (yerleşik) HD Fotoğraf codec bileşeni hakkında bilgi sağlar.
Önemli
HD Fotoğraf biçimi JPEG XR biçiminin standart öncesi bir uygulamasıdır ve HD Photo desteği JPEG XR WIC codec bileşeni tarafından uygulanır. Daha fazla bilgi için bkz. JPEG XR codec'e genel bakış.
Codec kimliği
Aşağıdaki tabloda codec tanımlama bilgileri sağlanmaktadır.
Bileşen | Açıklama |
---|---|
Resmi Adlar | HD Foto, Windows Media Foto |
Dosya Adı Uzantıları | wdp |
MIME türü | image/vnd.ms-photo |
Dosya İmzaları | İlk dört bayt: 0x4949bc00 (Sürüm 0; yayın öncesi), 0x4949bc01 (Sürüm 1.0) |
Aşağıdaki tabloda yerel HD Photo codec bileşenlerini tanımlamak için kullanılan GUID'ler listelenmiştir.
Bileşen | Anlaşılır İsim | GUID |
---|---|---|
Konteyner biçimi | GUID_ContainerFormatWmp | 57a37caa-367a-4540-916bf183c5093a4b |
Kod çözücü | CLSID_WICWmpDecoder | a26cec36-234c-4950-ae16e34aace71d0d |
Kodlayıcı | CLSID_WICWmpEncoder | ac4ce3cb-e1c1-44cd-82155a1665509ec2 |
Kodlama
WIC kodlama API'si codec'den bağımsız olacak şekilde tasarlanmıştır ve WIC özellikli codec'ler için görüntü kodlama temelde aynıdır. WIC API'sini kullanarak görüntü kodlama hakkında daha fazla bilgi için bkz. Kodlamaya Genel Bakış.
Kodlayıcı seçenekleri
WIC özellikli codec'ler kodlama seçeneği düzeyinde farklılık gösterir. Kodlayıcı seçenekleri bir görüntü kodlayıcının özelliklerini yansıtır ve her yerel codec bileşeni bu kodlayıcı seçeneklerinin bir kümesini destekler. Kodlayıcı seçenekleri, temel WIC destekli seçenekler olarak, tüm WIC özellikli kodlarda (her zaman desteklenmese de) veya görüntü formatına özgü codec bileşeni tarafından tasarlanan codec'e özel seçenekler olarak kullanılabilir. Kodlama işlemi sırasında bu kodlama seçeneklerini yönetmek için WIC, IPropertyBag2 arabirimini kullanır. WIC kodlaması için IPropertyBag2 arabirimini kullanma hakkında daha fazla bilgi için bkz. Kodlamaya Genel Bakış.
HD Photo codec bileşeni hem temel WIC seçeneklerini kullanır hem de çeşitli HD Fotoğrafa özgü kodlama seçenekleri sağlar. Aşağıdaki tabloda yerel HD Photo codec bileşeni tarafından desteklenen kodlayıcı seçenekleri listelenmektedir.
Temel WIC Kodlayıcı Seçenekleri
Özellik Adı | VARTYPE | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
Görüntü Kalitesi | VT_R4 | 0 - 1.0 | 0.9 |
Kayıpsız | VT_BOOL | DOĞRUYANLIŞ | YANLIŞ |
BitmapTransform | VT_UI1 | WICBitmapTransformOptions | WICBitmapTransformRotate0 |
HD Fotoğrafa Özgü Kodlayıcı Seçenekleri
Özellik Adı | Değişken Türü | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
UseCodecOptions | VT_BOOL | DOĞRUYANLIŞ | YANLIŞ |
Kalite | VT_UI1 | 1 - 255 | 10 |
Çakışma | VT_UI1 | 0 - 2 | 1 |
Alt örnekleme | VT_UI1 | 0 - 3 | ImageQuality > 0.8 ise 3; aksi takdirde 1; |
HorizontalTileSlices | VT_UI2 | 0 - 4095 | (görüntü genişliği – 1) >> 8 |
DikeyKaroDilimleri | VT_UI2 | 0 - 4095 | (görüntü yüksekliği – 1) >> 8 |
FrequencyOrder | VT_BOOL | DOĞRUYANLIŞ | DOĞRU |
InterleavedAlpha | VT_BOOL | DOĞRUYANLIŞ | YANLIŞ |
AlphaQuality | VT_UI1 | 1 - 255 | 1 |
CompressedDomainTranscode | VT_BOOL | DOĞRUYANLIŞ | TRUE |
ImageDataDiscard | VT_UI1 | 0 - 3 | 0 |
AlphaDataDiscard | VT_UI1 | 0 - 4 | Kullanılmıyor. |
ÖrtüşmeyiYoksay | VT_BOOL | DOĞRUYANLIŞ | YANLIŞ |
IPropertyBag2 seçenek listesinde codec'in desteklemediği bir kodlayıcı seçeneği varsa, bu seçenek yoksayılır.
ImageQuality seçeneği
İstenen görüntü doğruluğunu belirtir. 0,0, mümkün olan en düşük aslına uygunluğu, 1,0 ise en yüksek aslına uygunluğu belirtir. HD Fotoğraf görüntüsü biçimi için 1,0 değeri matematiksel olarak kayıpsız sıkıştırmaya neden olur.
Varsayılan değer 0,9'dur.
CompressionQuality seçeneği
İstenen sıkıştırma kalitesini belirtir. 0.0, kullanılabilir verimli sıkıştırma şemasını gösterir. Bu şema genellikle daha hızlı bir kodlama ancak daha büyük bir çıkış oluşturur. 1,0 değeri, genellikle daha uzun bir kodlama ama daha küçük bir çıkış üreten en verimli sıkıştırma şemasını belirtir.
HD Photo bu kodlayıcı seçeneğini desteklemez. IPropertyBag2 parametre listesinde varsa bu değer yoksayılır.
Kayıpsız seçenek
Kayıp sıkıştırma modunun kullanılıp kullanılmayacağını belirtir. HD Fotoğraf görüntüsü biçimi için bu değer ImageQuality seçenek değerini geçersiz kılar.
Varsayılan değer FALSEdeğeridir.
BitmapTransform seçeneği
Görüntünün kod çözme sırasında nasıl dönüştürüldüğünü belirtir. Bu seçeneği WICBitmapTransformOptions numaralandırma değerlerinden birine ayarlamanız gerekir.
Varsayılan değer WICBitmapTransformOptions::WICBitmapTransformRotate0.
UseCodecOptions seçeneği
Değer VARIANT_TRUE ise, seçenek değeri yerine Kalite, Çakışmave Alt Örnekleme seçeneklerini kullanın.
Varsayılan değer FALSEdeğeridir.
Kalite seçeneği
Görüntü için sıkıştırma kalitesini belirtir. 1 değeri kayıpsız modu gösterir. Değerlerin artırılması daha yüksek sıkıştırma oranlarına ve daha düşük görüntü kalitesine neden olabilir.
Varsayılan değer 10'dur.
Çakışma seçeneği
Örtüşme işleme düzeyini belirtir.
Aşağıdaki tabloda kullanılabilir çakışma işleme düzeyleri listeleniyor.
Değer | Açıklama |
---|---|
0 | Çakışma işlemesi etkin değil. |
1 | Üst üste işleme bir düzeyi etkinleştirilir, böylece 4x4 blok kodlama değerleri, komşu blokların değerlerine göre değiştirilir. |
2 | İki örtüşme işleme düzeyi etkinleştirilir. birinci düzey işlemeye ek olarak, 16x16 makro bloklarının kodlanmış değerleri komşu makro bloklarının değerlerine göre değiştirilir. |
Varsayılan değer 1'dir.
Alt örnekleme seçeneği
Chroma uzayında ek sıkıştırmayı belirtir. Bu şekilde, renk ayrıntısı pahasına parlaklık ayrıntılarını koruyabilirsiniz. Bu seçenek yalnızca RGB görüntüleri için geçerlidir.
Aşağıdaki tabloda kullanılabilir alt örnekleme seçenekleri listelenmiştir.
Değer | Açıklama |
---|---|
3 | 4:4:4 kodlaması tam krom çözünürlüğünü korur. |
2 | 4:2:2 kodlama, renk çözünürlüğünü 1/2 parlaklık çözünürlüğüne düşürür. |
1 | 4:2:0 kodlaması, renk çözünürlüğünü 1/4 parlaklık çözünürlüğüne düşürür. |
0 | 4:0:0 kodlaması tüm krom içeriğini atar ve yalnızca parlaklığı korur. Codec bileşeni performansı geliştirmek için biraz değiştirilmiş bir parlaklık tanımı kullandığından, bu chroma alt örnekleme modunu kullanmak yerine kodlamadan önce RGB görüntüsünü tek renkliye dönüştürmenizi öneririz. |
Varsayılan değer ImageQuality> 0,8 ise 3; aksi takdirde 1'dir.
HorizontalTileSlices, VerticalTileSlices seçenekleri
Sıkıştırma kodlamasını gerçekleştirmeden önce görüntünün yatay ve dikey döşemesini belirtin, böylece bölge çözmenin performansını optimize edebilirsiniz. Kodlama sırasında görüntüyü dikdörtgen kutucuklara bölerek sıkıştırılmış veri akışının tamamını işlemeden görüntünün bölgelerinin kodunu çözebilirsiniz. Varsayılan 0 değeri alt bölüm belirtmez, bu nedenle görüntünün tamamı tek bir kutucuk olarak değerlendirilir. Her parametre için 1 değeri tek bir yatay ve tek bir dikey bölme oluşturur ve görüntüyü eşit boyuttaki dört kutucukta etkili bir şekilde böler. Her parametre için en fazla 4095 değeri, görüntüyü her satırda 4096 kutucuktan oluşan 4096 kutucuk satırına böler. Başka bir deyişle, parametre değerleri yatay ve dikey kutucuk sayısı (sırasıyla) eksi 1'e eşittir. Bir kutucuk hiçbir zaman genişlik veya yükseklik olarak 16 pikselden küçük olamaz, bu nedenle HD Photo kodlayıcı gerekli minimum kutucuk boyutunu korumak için bu parametreyi ayarlayabilir. Her kutucukla ilişkili depolama ve işlem yükü olduğundan, belirli senaryoyu karşılamak için bu değerleri dikkatli bir şekilde seçmeniz gerekir.
HorizontalTileSlices: Varsayılan değer (Görüntü Genişliği – 1) >> 8'dir.
VerticalTileSlices: Varsayılan değer (Görüntü Yüksekliği – 1) >> 8'dir.
FrequencyOrder seçeneği
Görüntünün sıklık sırasına göre kodlanması gerektiğini belirtir. En düşük sıklık verileri dosyada ilk olarak görünür ve görüntü içeriği uzamsal yönlendirmesi yerine sıklığına göre gruplandırılır. Bir dosyayı sıklık sırasına göre düzenlemek, sıklık tabanlı kod çözme için en iyi performansı sağlar ve bu nedenle bunu öneririz. HD Photo kodlayıcılarının cihaz uygulamaları, kodlama sırasında gereken bellek ayak izini azaltmak için bir dosyayı uzamsal düzende düzenleyebilir.
Varsayılan değer TRUE ve uzamsal düzeni kullanmak için performans veya uygulamaya özgü nedenleriniz olmadığı sürece uygulamaların ve cihazların her zaman sıklık sırasını kullanmasını öneririz.
InterleavedAlpha seçeneği
Bu seçeneği TRUE olarak ayarlamak, codec'e alfa kanalı bilgilerini görüntü içerik kanallarıyla bağıntı olmayan ek bir kanal olarak kodlamasını sağlar. Bu mod, akış senaryosunda görüntüyle aynı anda alfa kodunu çözmeniz gerektiğinde kullanışlıdır.
Bu parametrenin FALSE olarak ayarlanması, isteğe bağlı Kalite değerine sahip ayrı bir görüntü olarak kodlanmış bir planar alfa kanalıyla sonuçlanır. Planar alfa kanalını kullanarak görüntü verilerinin ve alfa kanalının kodunu bağımsız olarak çözebilirsiniz. Araya kaydedilen alfa kanalları yalnızca belirli RGB piksel biçimleri için desteklenir. Planar alfa kanalını, alfa kanalını tanımlayan herhangi bir görüntü biçimiyle ilişkilendirebilirsiniz.
Varsayılan değer FALSEdeğeridir.
AlfaQuality seçeneği
Planar alfa kanalı görüntüsü için sıkıştırma kalitesini belirtir. 1 değeri kayıpsız modu ayarlar. Değerlerin artırılması daha yüksek sıkıştırma oranlarına ve daha düşük görüntü kalitesine neden olabilir.
Varsayılan değer 1'dir.
CompressedDomainTranscode seçeneği
HD Photo kullanarak sıkıştırılmış verilerin kodunu çözmeden ve hedef dosyaya yeniden kodlamadan bir dizi dosya dönüştürme işlemi gerçekleştirebilirsiniz. Sıkıştırılmış etki alanı işlemleri çok verimlidir ve kayıplı sıkıştırılmış bir görüntünün kodunu çözdüğünüzde ve yeniden kodladığınızda tipik olan ek kalite kaybını önler.
Aşağıdaki sıkıştırılmış etki alanı işlemleri desteklenir:
- Görüntünün bir bölgesini kırpın.
- Döndürme/çevirme dönüştürmesi gerçekleştir.
- Sıklık verilerini at (daha küçük bir görüntü dosyası oluşturmayı mümkün hale getirir.)
- Görüntüyü uzamsal ve frekans sıralı sırası arasında yeniden düzenleme.
HD Photo kodlayıcı, HD Photo kod çözücüsünü görüntü kaynağı olarak kullanarak bir HD Photo görüntüsünü kodladığında sıkıştırılmış bir dönüşüm işlemi gerçekleştirir. Seçtiğiniz kodlama seçeneklerine bağlı olarak, codec mümkünse sıkıştırılmış alan işlemi kullanır. Bir uygulama, sıkıştırılmış etki alanı dönüştürme işlemlerini açıkça engellemeyi seçerse, UseCodecOptions seçeneğini TRUE ve CompressedDomainTranscode seçeneğini FALSEolarak ayarlamanız gerekir.
Codec sıkıştırılmış bir etki alanı işlemi gerçekleştirdiğinde, yalnızca belirli kodlayıcı parametresi ve özellik ayarlarına izin verilir.
- Temel kodlayıcı seçenekleri Görüntü Kalitesi, Sıkıştırma Kalitesi ve Kayıpsız yoksayılır.
- HD Fotoğrafa özgü kodlayıcı seçenekleri Kalite, Üst Üste Binen, "InterleavedAlpha" ve "AlphaQuality" yoksayılır.
- Varsa, HorizontalTileSlices ve VerticalTileSlices seçenekleri sıfır olarak ayarlanmalıdır. Bir görüntünün kutucuk boyutu, sıkıştırılmış bir etki alanı dönüştürme kodunun parçası olarak değiştirilemez.
- FrequencyOrdering seçeneklerinin uygun değerini belirterek görüntü düzenlemesini sıklık ve uzamsal sıralama arasında değiştirebilirsiniz.
- BitmapTransform kodlayıcı seçeneğinde belirtilen değer temelinde kardinal döndürme ve/veya yatay/dikey çevirme işlemi gerçekleştirilebilir.
- görüntü, WriteSource kodlayıcı yönteminin WICRect parametresi kullanılarak istenen bölge belirtilerek kırpılabilir.
- Görüntü ve/veya alfa verileri, ImageDataDiscard ve/veya AlphaDataDiscard seçeneklerinde uygun değerler belirtilerek atılabilir, kodlanmış dosya boyutu azaltılabilir ve yeni görüntünün çözünürlüğü etkili bir şekilde azaltılabilir.
Varsayılan değer TRUE ve uzamsal sırayı kullanmak için belirli performans veya uygulama nedenleriniz olmadığı sürece uygulamaların ve cihazların her zaman sıklık sırasını kullanmasını öneririz.
ImageDataDiscard seçeneği
Bu parametre yalnızca CompressedDomainTranscode seçeneği TRUEolduğunda geçerlidir; aksi takdirde göz ardı edilir. ImageDataDiscard, sıkıştırılmış alan içindeki bir kod dönüştürme işlemi sırasında atılacak görüntü verilerinin miktarını belirtir. Görüntüde birbirine katlanmış bir alfa kanalı varsa bu veri atma, bu bölümün ilerleyen bölümlerinde açıklandığı gibi özel durumlar dışında alfa kanalı için de geçerlidir.
Aşağıdaki değerlere izin verilir.
Değer | Açıklama |
---|---|
0 | Görüntü sıklığı verileri atılmaz. |
1 | FlexBit'ler atılarak, görüntünün etkili çözünürlüğü değiştirilmeden dönüştürülen görüntünün kalitesinde rastgele bir azalma sağlanır. Dosya boyutunun tam olarak küçültülmesi veya kalitenin belirli bir şekilde azaltılması çok sayıda faktöre bağlıdır ve belirtilemez veya tahmin edilemez. İç içe geçmiş bir alfa kanalı için belirtmeniz durumunda bu değer bir hata döndürür. |
2 | HighPass frekans veri bandı (FlexBits'i de içeren) atılır ve bu, dönüştürülen görüntünün çözünürlüğünü her iki boyutta da 4 kat azaltır. Kodlanmış görüntünün gerçek boyutları aynı kalır, ancak her 4x4 piksel bloğundaki tüm ayrıntıları kaybeder. Bu nedenle, her kodunu çözdüğünüzde, kodlanmış görüntüyü uygun şekilde aşağı örnekleme yapmanız gerekir. |
3 | HighPass ve LowPass frekans veri bantları (FlexBit'leri de içerir) atılır, bu da kodlamadan geçirilen görüntünün çözünürlüğünü her iki boyutta da etkili bir şekilde 16 kat azaltır. Kodlanmış görüntünün gerçek boyutları aynı kalır, ancak her 16x16 piksel makro bloğundaki tüm ayrıntıları kaybeder. Bu nedenle, her kod çözme işlemi sırasında dönüştürülmüş görüntüyü uygun şekilde aşağı örneklemeniz gerekir. |
Varsayılan değer 0'dır.
AlphaDataDiscard seçeneği
Bu seçenek yalnızca CompressedDomainTranscode özelliği TRUE olduğunda ve görüntü ya bir planar ya da ara alfa kanalı içerdiğinde geçerlidir; aksi takdirde yoksayılır. Sıkıştırılmış alanda bir dönüştürme işlemi sırasında atılacak alfa frekansı verilerinin miktarını belirtir. Planar alfa kanalı için aşağıdaki değerlere izin verilir.
Değer | Açıklama |
---|---|
0 | Görüntü sıklığı verileri atılmaz. |
1 | FlexBit'ler atıldığında, etkili çözünürlük değiştirilmeden, dönüştürülen görüntünün düzlemsel alfa kanalında rastgele bir kalite azalması gerçekleşir. Dosya boyutunun tam olarak küçültülmesi veya kalitenin belirli bir şekilde azaltılması çok sayıda faktöre bağlıdır ve belirtilemez veya tahmin edilemez. |
2 | HighPass frekanslı veri bandı (FlexBit'leri de içeren) atılır, bu da her iki boyutta da dönüştürülmüş görüntü düzlemsel alfa kanalının çözünürlüğünü etkili bir şekilde 4 kat azaltır. Kodlanmış görüntünün gerçek boyutları aynı kalır, ancak görüntü her 4x4 piksel bloğundaki tüm planar alfa kanalı ayrıntılarını kaybeder. Bu nedenle, transkodlanan görüntü her çözüldüğünde uygun şekilde düşük örnekleme uygulanması gerekir. Genellikle, bu değeri yalnızca ImageDataDiscard özelliğini aynı değere ayarladığınızda ayarlamanız gerekir. |
3 | HighPass ve LowPass frekans veri bantları (bu da FlexBit'leri içerir) atılır, böylece her iki boyutta da dönüştürülmüş görüntünün çözünürlüğü 16 kat azaltılır. Kodlanmış görüntünün gerçek boyutları aynı kalır, ancak görüntü piksellerin her 16x16 makro bloğundaki tüm ayrıntıları kaybeder. Bu nedenle, transkodlanmış görüntünün her çözüldüğünde uygun şekilde düşük örnekleme yapılması gerekir. Genellikle, bu değeri yalnızca ImageDataDiscard özelliğini aynı değere ayarladığınızda ayarlamanız gerekir. |
4 | Alfa kanalı tamamen atılır. Kodlanmış görüntünün piksel biçimi, alfa kanalının kaldırılmasını yansıtacak şekilde değiştirilir. |
Ara sıra alfa kanalları içeren görüntülerde, bu özellik 4 olarak ayarlanmadığı sürece, görüntü verileriyle aynı şekilde, ImageDataDiscard özelliğinin değerine göre alfa kanalı işlenir. Bu özellik 4 olarak ayarlanırsa, araya kaydedilen alfa kanalı tamamen atılır ve dönüştürülen görüntünün piksel biçimi buna göre değiştirilir.
Varsayılan değer yok.
IgnoreOverlap seçeneği
Bu seçenek yalnızca CompressedDomainTranscode özelliği TRUE ve en az bir veya daha fazla kutucuk alt bölge dönüştürmesi isteniyorsa geçerlidir. Bölge transkodlaması (veya çözümleme) için varsayılan işlem, istenen bölgeyi, bölge kenarlarının örtüşmeli çözümlemesi için gereken çevresindeki pikselleri içerecek şekilde genişletmektir. Bu parametre DOĞRUolarak ayarlandığında, çevresindeki pikseller göz ardı edilir ve yalnızca seçili kutucuk veya kutucuklar ayıklanır. Bu da istenen bölgenin bir veya daha fazla kutucukla tam olarak eşleşmesini gerektirir. Kaynak görüntü kutucuklu değilse veya istenen bölge kısmi kutucuklar belirtiyorsa, bu parametre yoksayılır.
Varsayılan değer FALSE.
Kod çözme
WIC kod çözme API'si codec'den bağımsız olacak şekilde tasarlanmıştır ve WIC özellikli codec bileşenleri için görüntü kod çözme temelde aynıdır. Görüntü kod çözme hakkında daha fazla bilgi için bkz. Kod Çözmeye Genel Bakış. Kodu çözülen görüntü verilerini kullanma hakkında daha fazla bilgi için bkz. Bit Eşlem Kaynaklarına Genel Bakış.
IWICBitmapSourceTransform desteği
WIC özellikli bir codec bileşeni olması için gereken arabirimlere ek olarak, yerel HD Photo kod çözücü de IWICBitmapSourceTransformdestekler. IWICBitmapSourceTransform arabirimi, görüntü bit akışının kodunu çözmek için gelişmiş bir seçenek sağlar. IWICBitmapFrameDecodekullanarak tam bir görüntü döndürmek yerine IWICBitmapSourceTransform arabirimi aşağıdaki kod çözücü seçeneklerini etkinleştirir.
- Görüntünün dikdörtgen alt bölgesinin kodunu çözme.
- Kodu daha düşük bir çözünürlüğe çözme
- Farklı bir piksel formatına dönüştürme
- Kod çözme sırasında dönüştürme (döndürme/çevirme) gerçekleştirme
Yerel HD Photo codec bileşeni, IWICBitmapSourceTransform arabirimi için aşağıdaki düzeyde destek sağlar.
DoesSupportTransform
Yerel uygulama tüm WICBitmapTransformOptions dönüşümlerini destekler.
En Yakın Boyutu Al
Her iki boyuttaki kaynak görüntünün boyutu 1/2'den küçük istekler için HD Photo, iki faktör tarafından eşit olarak bölünebilen sonraki en büyük tamsayı görüntü boyutunu döndürür. İstenen diğer tüm boyutlar için HD Photo, özgün görüntü boyutlarını döndürür.
En Yakın Piksel Formatını Al
HD Fotoğraf, kodlanmış görüntünün piksel biçimini döndürür.
Pixelleri Kopyala
HD Photo, WICRect parametresi tarafından belirtilen istenen tüm bölgeyi kabul eder ve görüntünün bu bölümünü döndürür.
uiWidth ve uiHeight parametreleri, GetClosestSize işlevi tarafından döndürülen boyutları belirtmelidir. Diğer tüm değerler hata döndürür.
pguidDstFormat parametresi, GetClosestPixelFormat işlevi tarafından döndürülen piksel biçimini belirtmelidir. Diğer tüm değerler hata döndürür.
HD Photo, dstTransform parametresi için izin verilebilen tüm değerleri kabul eder. Bu parametre için WIC tarafından izin verilen değerlerin, DÖNÜŞTÜRME meta veri etiketi için HD Photo tarafından kullanılan değerlerden farklı olduğunu unutmayın.