Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu başlığında, medya kaynaklarının ve kod çözücülerin ara video içeriğini nasıl işlemesi gerektiği açıklanmaktadır.
Araya alınan videonun kodunu çözmek ve işlemek için aşağıdaki bilgiler gereklidir:
Aşamalı veya geçişli. Video akışı aşamalı çerçeveler, ara çerçeveler veya her ikisinin bir karışımını içerebilir.
Alan hakimiyeti. Alan hakimiyeti, ilk olarak hangi alanın görüneceğini, üst alanı veya alt alanı açıklar.
İlk alanı yineleyin. Bu bayrak, 3:2 çekme sırasında, çerçeve aşamalı olduğunda ancak akış aralandığında kullanılır. Bu bağlamda, ilk alan üst veya alt alan olabilir.
Araya kaydedilen alanlar veya tek alan. Örnek, tek bir alanı veya iki araya katılmış alanı barındırabilir. Bir örnek tek bir alan içeriyorsa örnek, çerçevenin tarama çizgilerinin yalnızca yarısını içerdiğinden, örnek yüksekliği çerçeve yüksekliğinin yarısıdır. Kaynak içeriğin özellikleri aksini belirtmediği sürece, araya eklenen alanlar önerilir.
Bu özelliklerden herhangi biri bir örnekten diğerine değişebilir. Ancak, video bileşenlerinin akış başlamadan önce genel içerik hakkında bir şeyler bilmesi gerekir. Örneğin, video araya alınmışsa, gelişmiş video işleyicisinin (EVR) ayrıştırma için video belleği ayırması gerekir. Video tamamen aşamalı çerçeveler ise EVR, işleme işlem hattını iyileştirebilir. İşlem hattına bir ayrıştırma adımı eklemek işleme gecikmesini artırır.
Araya alma ile ilgili bilgiler iki yerde depolanır:
Bir akıştaki araya alma hakkında genel bilgiler medya türüne yerleştirilir. Medya türleri hakkında daha fazla bilgi için bkz. Medya Türleri.
Her örnekle değişebilen bilgiler, örneğe öznitelik olarak yerleştirilir. Örnekler hakkında daha fazla bilgi için bkz. Medya Örnekleri.
Medya Türündeki Interlace Bilgileri
Medya türündeki MF_MT_INTERLACE_MODE özniteliği, bir bütün olarak akışın nasıl geçişli olduğunu açıklar. Bu özniteliğin değeri, MFVideoInterlaceMode numaralandırmasının bir üyesidir. Video medya türü her zaman bu özniteliğe sahip olmalıdır.
- Akışta yalnızca aşamalı çerçeveler varsa ve aralanmış çerçeveler yoksa MFVideoInterlace_Progressive kullanın.
- Akışta yalnızca ara çerçeveler varsa ve her örnek iki aralanmış alan içeriyorsa MFVideoInterlace_FieldInterleavedUpperFirst veya MFVideoInterlace_FieldInterleavedLowerFirst kullanın.
- Akışta yalnızca ara çerçeveler varsa ve her örnek tek bir alan içeriyorsa, MFVideoInterlace_FieldSingleUpper veya MFVideoInterlace_FieldSingleLower kullanın. Alanlar üst ve alt arasında geçiş yapıyorsa, bu iki değerden hangisinin kullanıldığı önemli değildir. Biçim yalnızca üst alanlar veya yalnızca alt alanlar içeriyorsa, içeriğe karşılık gelen değeri ayarlayın.
- Akış, ara ve aşamalı çerçevelerin bir karışımını içeriyorsa veya alan hakimiyeti değişiyorsa, medya türünü MFVideoInterlace_MixedInterlaceOrProgressive olarak ayarlayın. Her çerçeveyi açıklamak için örnek öznitelikleri kullanın.
Aşağıdaki tabloda bu öznitelik özetlemektedir.
| MF_MT_INTERLACE_MODE | Titreşimli? | Örnekleri | İlk alan |
|---|---|---|---|
| MFVideoInterlace_Progressive | Hayır | Aşamalı çerçeve | Uygulanamaz |
| MFVideoInterlace_FieldInterleavedUpperFirst | Evet | Araya kaydedilen alanlar | Önce üst |
| MFVideoInterlace_FieldInterleavedLowerFirst | Evet | Araya kaydedilen alanlar | Önce daha düşük |
| MFVideoInterlace_FieldSingleUpper | Evet | Tek alan | Önce üst |
| MFVideoInterlace_FieldSingleLower | Evet | Tek alan | Önce daha düşük |
| MFVideoInterlace_MixedInterlaceOrProgressive | Değişiklik gösterebilir | Araya kaydedilen alanlar veya aşamalı çerçeveler | Değişiklik gösterebilir |
Ara alanlar ve tek alanlar karıştırılamaz. Birinden diğerine geçiş yapmak için medya türü değişikliği gerekir.
Örneklerde Interlace Bayrakları
Bir örnekten diğerine değişebilen bilgiler örnek öznitelikler kullanılarak belirtilir. Bu öznitelikleri almak veya ayarlamak için IMFSample arabirimini kullanın.
Bu bölümde listelenen tüm ara özniteliklerin Boole değerleri vardır. Bu özniteliklerin her birinin üç değeri olabilir: TRUE, FALSEveya ayarlanmaz. Bir öznitelik ayarlanmadıysa, değer medya türünden alınır. Bir öznitelik ayarlanırsa, değer medya türünü geçersiz kılar. Bayrak ve medya türlerinin bazı bileşimleri geçerli değildir.
| Öznitelik | Açıklama |
|---|---|
| MFSampleExtension_Interlaced | TRUE çerçevenin arasını alır. FALSE çerçeve aşamalıdır. Medya türü MFVideoInterlace_MixedInterlaceOrProgressive her örnekte bu özniteliği ayarlayın. |
| MFSampleExtension_BottomFieldFirst | Bu bayrağın anlamı, örneklerin birbirine eklenmiş alanlar mı yoksa tek alanlar mı içerdiğine bağlıdır.
|
| MFSampleExtension_RepeatFirstField | TRUE ilk alan yinelenir. FALSE veya ayarlanmadıysa, ilk alan yinelenmez. |
| MFSampleExtension_SingleField | TRUE örnek tek bir alan içerir. FALSE örnekte aralanmış alanlar bulunur. |
Aşağıdaki tabloda, medya türüne göre hangi bayrakların gerekli, isteğe bağlı veya yasak olduğu gösterilmektedir.
| Medya Türü | Daraltılmış Bayrak | BottomFieldFirst Bayrağı | RepeatFirstField Bayrağı | TekAlan bayrağı |
|---|---|---|---|---|
| İlerici | Opsiyonel; ayarlanırsa FALSE olmalıdır. | Ayarlamayın. | Ayarlamayın. | Ayarlamayın. |
| Araya kaydedilen alanlar | Opsiyonel; ayarlanırsa TRUE olmalıdır. | Opsiyonel; ayarlanırsa, medya türüyle eşleşmelidir. | Ayarlamayın. | Opsiyonel; ayarlanırsa FALSE olmalıdır. |
| Tek alanlar | Opsiyonel; ayarlanırsa TRUE olmalıdır. | Gerekli. | Ayarlamayın. | TRUE olarak ayarlayın. |
| Karışık | Gerekli. | Gerekli. | Gerekli. | Opsiyonel; ayarlanırsa FALSE olmalıdır. |
Özniteliğin isteğe bağlı olduğu durumlarda, medya türü bilgileri zaten tanımlar. Özniteliği eşleşecek şekilde ayarlamak geçerlidir, ancak gerekli değildir.
Örneğin, medya türü MFVideoInterlace_Progressive ise, akıştaki tüm çerçevelerin aşamalı olduğu anlamına gelir. Bu nedenle, MFSampleExtension_Interlaced özniteliğini FALSE olarak ayarlayabilir veya özniteliğini ayarsız bırakabilirsiniz.
Öneri
Bu bölüm, çeşitli içerik türlerine yönelik öneriler içerir.
- Videonun tümü aşamalı kareler.
Medya türünü MFVideoInterlace_Progressive olarak ayarlayın.
MFSampleExtension_Interlaced özniteliğini ayarlamayın veya her karede FALSE olarak ayarlayın.
MFSampleExtension_BottomFieldFirst, MFSampleExtension_RepeatFirstFieldveya MFSampleExtension_SingleField özniteliklerini ayarlamayın.
- Video, aynı alan hakimiyetine sahip tüm ara alanlardır. Örnekler, araya kaydedilen alanlar içeriyor.
Medya türünü MFVideoInterlace_FieldInterleavedUpperFirst veya MFVideoInterlace_FieldInterleavedLowerFirst olarak ayarlayın.
MFSampleExtension_Interlaced özniteliğini ayarlamayın veya her karede TRUE olarak ayarlamayın.
MFSampleExtension_BottomFieldFirst özniteliğini ayarlamayın veya her karedeki değeri medya türüyle eşleşecek şekilde ayarlamayın.
MFSampleExtension_RepeatFirstField özniteliğini ayarlamayın veya her karede FALSE olarak ayarlayın.
MFSampleExtension_SingleField özniteliğini ayarlamayın veya her karede FALSE olarak ayarlayın.
- Video, yinelenen alanlar ve değişen alan hakimiyeti (örneğin, DVD videosu) ile birlikte ara ve aşamalı çerçevelerin bir karışımını içerir.
Medya türünü MFVideoInterlace_MixedInterlaceOrProgressive olarak ayarlayın.
Her çerçevede MFSampleExtension_Interlaced, MFSampleExtension_BottomFieldFirstve MFSampleExtension_RepeatFirstField özniteliklerini ayarlayın.
MFSampleExtension_SingleField özniteliğini ayarlamayın veya her karede FALSE olarak ayarlayın.
- Videonun araları oluşturulmuş ve örnekler tek alanlar içeriyor.
Medya türünü MFVideoInterlace_FieldSingleUpper veya MFVideoInterlace_FieldSingleLower olarak ayarlayın.
Her karede MFSampleExtension_BottomFieldFirst özniteliğini ayarlayın.
MFSampleExtension_Interlaced özniteliğini ayarlamayın veya her karede TRUE olarak ayarlamayın.
MFSampleExtension_RepeatFirstField özniteliğini ayarlamayın veya her karede FALSE olarak ayarlayın.
MFSampleExtension_SingleField özniteliğini ayarlamayın veya her karede TRUE olarak ayarlayın.
Video içeriğinin çoğu bu kategorilerden birinde yer alır.
MPEG-2 Eşlemeleri
MPEG-2 içeriği için aşağıdaki eşlemeleri kullanarak MPEG-2 bayraklarını Media Foundation örnek özniteliklerine dönüştürün.
picture_structure
| Değer | Örnek Öznitelik |
|---|---|
| çerçeve | MFSAMPLEEXTENSION_SINGLEFIELD = FALSE |
| top_field | trueMFSampleExtension_SingleField = MFSAMPLEEXTENSION_BOTTOMFIELDFIRST = FALSE |
| bottom_field | trueMFSampleExtension_SingleField = TRUEMFSampleExtension_BottomFieldFirst = |
progressive_frame
| Değer | Örnek Öznitelik |
|---|---|
| 0 | TRUEMFSampleExtension_Interlaced = |
| 1 | MFSAMPLEEXTENSION_INTERLACED = FALSE |
top_field_first
| Değer | Örnek Öznitelik |
|---|---|
| 0 | TRUEMFSampleExtension_BottomFieldFirst = |
| 1 | MFSAMPLEEXTENSION_BOTTOMFIELDFIRST = FALSE |
repeat_first_field
| Değer | Örnek Öznitelik |
|---|---|
| 0 | MFSAMPLEEXTENSION_REPEATFIRSTFIELD = FALSE |
| 1 | TRUEMFSampleExtension_RepeatFirstField = |
Single-Field Örnekleri
Medya türü MFVideoInterlace_FieldSingleUpper veya MFVideoInterlace_FieldSingleLower ise, her örneğin tek bir alan içerdiği anlamına gelir. Ancak, medya türü çerçevenin tamamını açıklar. Bu nedenle, her arabellek, medya türünde verilen alan satırlarının yalnızca yarısını içerir. Örneğin, medya türü videoyu 720 × 480 olarak tanımlıyorsa, her alan 240 tarama satırı içerir ve bu nedenle her arabellek yalnızca 240 satır piksel içerir. Tek alanlı örneklerle medya türlerini kabul eden bir bileşen yazarsanız, arabellekteki verilere erişirken bu gerçeği dikkate almanız gerekir.
Aynı kural geometrik diyafram (MF_MT_GEOMETRIC_APERTURE özniteliği) ve en düşük görüntü açıklığı (MF_MT_MINIMUM_DISPLAY_APERTURE özniteliği) için de geçerlidir. Bu bölgeler tek tek alanlar için değil, çerçevenin tamamıyla belirtilir.
DirectShow Eşlemeleri
DirectShow'da örnek başına geçiş bilgileri, _SAMPLE2_PROPERTIES yapısının dwTypeSpecificFlags üyesinde yer alır. Aşağıdaki tabloda Media Foundation için eşdeğer öznitelikler gösterilmektedir.
| DirectShow örnek bayrağı | Media Foundation örnek özniteliği |
|---|---|
| AM_VIDEO_FLAG_INTERLEAVED_FRAME | FALSEMFSampleExtension_SingleField = . |
| AM_VIDEO_FLAG_FIELD1 | TRUEMFSampleExtension_Interlaced = . TRUEMFSampleExtension_SingleField = . FALSEMFSampleExtension_BottomFieldFirst = . |
| AM_VIDEO_FLAG_FIELD2 | TRUEMFSampleExtension_Interlaced = . TRUEMFSampleExtension_SingleField = . TRUEMFSampleExtension_BottomFieldFirst = . |
| AM_VIDEO_FLAG_WEAVE | FALSEMFSampleExtension_Interlaced = . (Bu bayrak, sürücünün iki alanın kodunu kaldırmaması gerektiğini gösterir.) |
| AM_VIDEO_FLAG_FIELD1FIRST | FALSEMFSampleExtension_BottomFieldFirst = . İçerik araya eklenmişse ve_VIDEO_FLAG_FIELD1FIRST bayrağı yoksa, bu özniteliği TRUE olarak ayarlayın. |
| AM_VIDEO_FLAG_REPEAT_FIELD | TRUEMFSampleExtension_RepeatFirstField = . _VIDEO_FLAG_REPEAT_FIELD bayrağı yoksa, bu özniteliği FALSE olarak ayarlayın. |
DirectShow örneği örnek bayraklar içermiyorsa, VIDEOINFOHEADER2 yapısından dwInterlaceFlags değerini kullanın:
| DirectShow interlace bayrağı | Media Foundation örnek özniteliği |
|---|---|
| AMINTERLACE_IsInterlaced | TRUEMFSampleExtension_Interlaced = . |
| AMINTERLACE_1FieldPerSample | TRUEMFSampleExtension_SingleField = . |
| AMINTERLACE_Field1First | FALSEMFSampleExtension_BottomFieldFirst = . |
İlgili konular