Medya Türleri Hakkında (Microsoft Media Foundation)

medya türü bir medya akışının biçimini açıklar. Microsoft Media Foundation'da medya türleri, IMFMediaType arabirimiyle temsil edilir. Bu arabirim, IMFAttributes arabirimini devralır. Bir medya türünün ayrıntıları öznitelik olarak belirtilir.

Yeni bir medya türü oluşturmak için MFCreateMediaType işlevini çağırın. Bu işlev, IMFMediaType arabirimine bir işaretçi döndürür. Medya türünün başlangıçta özniteliği yoktur. Biçimin ayrıntılarını ayarlamak için ilgili öznitelikleri ayarlayın.

Medya türü özniteliklerinin listesi için bkz. Medya Türü Öznitelikleri.

Ana Türler ve Alt Türler

Herhangi bir medya türü için iki önemli bilgi parçası, ana tür ve alt türlerdir.

  • ana tür, medya akışındaki verilerin genel kategorisini tanımlayan bir GUID'dir. Ana türler video ve sestir. Ana türü belirtmek için MF_MT_MAJOR_TYPE özniteliğini ayarlayın. IMFMediaType::GetMajorType yöntemi bu özniteliğin değerini döndürür.
  • alt türü biçimi daha ayrıntılı olarak tanımlar. Örneğin, video ana türü içinde RGB-24, RGB-32, YUY2 vb. için alt türleri vardır. Ses türleri arasında PCM sesi, IEEE kayan nokta sesi ve diğerleri bulunur. Alt tür, ana türden daha fazla bilgi sağlar, ancak biçimle ilgili her şeyi tanımlamaz. Örneğin, video alt türleri görüntü boyutunu veya kare hızını tanımlamaz. Alt türü belirtmek için MF_MT_SUBTYPE özniteliğini ayarlayın.

Tüm medya türlerinin ana tür GUID'leri ve alt tür GUID'leri olmalıdır. Ana tür ve alt tür GUID'lerinin listesi için bkz. Medya Türü GUID'leri.

Neden Öznitelikler?

Öznitelikler, DirectShow ve Windows Media Format SDK'sı gibi önceki teknolojilerde kullanılan biçim yapılarına göre çeşitli avantajlara sahiptir.

  • "Bilmiyorum" veya "umurumda değil" değerlerini göstermek daha kolaydır. Örneğin, bir video dönüşümü yazıyorsanız, video kaynağından alınana kadar dönüşümün hangi RGB ve YUV biçimlerini desteklediğini önceden biliyor olabilirsiniz, ancak video çerçevesinin boyutlarını bilmiyor olabilirsiniz. Benzer şekilde, video ana ayarları gibi bazı ayrıntıları da önemsemeyebilirsiniz. Her üyenin ile bir değerle doldurulması gereken bir biçim yapısı vardır. Sonuç olarak, bilinmeyen veya varsayılan bir değeri belirtmek için sıfır kullanmak yaygın hale gelmiştir. Bu uygulama, başka bir bileşen sıfırı meşru bir değer olarak değerlendirirse hatalara neden olabilir. Özniteliklerle, yalnızca bilinmeyen veya bileşeninizle ilgili olmayan öznitelikleri atlarsınız.

  • Gereksinimler zaman içinde değiştiğinden, yapı sonuna ek veriler eklenerek biçim yapıları genişletildi. Örneğin WAVEFORMATEXTENSIBLEWAVEFORMATEX yapısını genişletir. Bileşenlerin yapı işaretçilerini diğer yapı türlerine ataması gerektiğinden bu uygulama hataya açıktır. Öznitelikler güvenli bir şekilde genişletilebilir.

  • Karşılıklı olarak uyumsuz biçim yapıları tanımlanmıştır. Örneğin, DirectShow VIDEOINFOHEADER ve VIDEOINFOHEADER2 yapılarını tanımlar. Öznitelikler birbirinden bağımsız olarak ayarlanır, bu nedenle bu sorun ortaya çıkmaz.

Medya Türü Öznitelikleri

Medya Türleri