EVR Medya Türü Anlaşması
[Gelişmiş Video oluşturucu bu sayfada açıklanan bileşen eski bir özelliktir. MediaPlayer ve IMFMediaEngine bileşenleri aracılığıyla kullanıma sunulan Basit Video Oluşturucu (SVR) tarafından değiştirildi. Video içeriğini oynatmak için bu bileşenlerden birine veri göndermeniz ve yeni video işleyicinin örneğini oluşturmalarına izin vermelisiniz. Bu bileşenler Windows 10 ve Windows 11 için iyileştirilmiştir. Microsoft, mümkün olduğunda yeni kodun EVR yerine Windows'ta video medyası yürütmek için MediaPlayer veya alt düzey IMFMediaEngine API'lerini kullanmasını kesinlikle önerir. Microsoft, mümkünse yeni API'leri kullanmak için eski API'leri kullanan mevcut kodun yeniden yazılmasını önerir.]
Bu konu başlığında, gelişmiş video işleyicisinin (EVR) medya türlerini nasıl doğrulandığı açıklanmaktadır.
DirectShow EVR filtresi için, filtrenin pinleri bağlandığında tür anlaşması gerçekleşir.
EVR ortam havuzu için medya türleri, akış havuzlarında IMFMediaTypeHandler arabirimi aracılığıyla ayarlanır. Genellikle topoloji yükleyicisi medya türlerini belirler, ancak uygulama medya türlerini doğrudan da ayarlayabilir.
EVR, tercih edilen medya türlerini raporlamaz. İstemci, kabul edilebilir bir tür bulana kadar medya türlerini test etmelidir. Türlerin alt akışlardan herhangi birinde ayarlanabilmesi için önce başvuru akışının medya türü ayarlanmalıdır.
Başvuru akışı için EVR karıştırıcısı, uyumlu DirectX Video Hızlandırma (DXVA) işleme hedef biçimlerinin listesini alır. EVR sunucusu, Direct3D takas zincirinin biçimini seçmek için bu listeyi kullanır. Uyumlu bir işleme hedef biçimi bulunamazsa, EVR medya türünü reddeder.
Alt akışlar için EVR karıştırıcısı, DXVA cihazının bu alt akış biçimini başvuru akışı için seçilen işleme hedef biçimiyle birlikte destekleyip desteklemediğini sorgular. Sonuç olarak, kullanılabilir alt akış biçimleri başvuru akışına bağlı olarak değişebilir.
İşlem daha ayrıntılı olarak aşağıdadır. Bu ayrıntılar çoğu uygulama için önemli değildir, ancak özel bir mikser veya sunucu yazıyorsanız yararlı olabilir.
Başvuru akışı için anlaşma aşağıdaki gibi gerçekleşir:
EVR, karıştırıcıda IMFTransform::SetInputType çağırır.
Karıştırıcı, DXVA2_VideoDesc yapısını kullanarak medya türünü DXVA 2.0 açıklamasına dönüştürür.
Karıştırıcı, video işlemci GUID'lerinin listesini almak için IDirectXVideoProcessorService::GetVideoProcessorDeviceGuidsçağırır.
Her video işlemcisi GUID'sinde, mixer desteklenen işleme hedef biçimlerini almak için IDirectXVideoProcessorService::GetVideoProcessorRenderTargetsçağırır.
EVR, sunucu üzerinde MFVP_MESSAGE_INVALIDATEMEDIATYPE iletisiyle IMFVideoPresenter::P rocessMessage çağırır. Bu ileti sunucunun yeni bir biçim seçmesine neden olur.
Sunucu, karıştırıcıdan kullanılabilir çıkış biçimlerinin listesini almak için IMFTransform::GetOutputAvailableType çağırır. Karıştırıcı, bu listeyi 4. adımda elde edilen biçimlerden oluşturur.
Sunucu bir biçim seçer ve karıştırıcıda IMFTransform::SetOutputTypeçağırır.
Alt akışlar için işlem daha basittir:
EVR, karıştırıcıda IMFTransform::SetInputType çağırır.
Karıştırıcı, kullanılabilir alt akış biçimlerinin listesini almak için IDirectXVideoProcessorService::GetVideoProcessorSubStreamFormatsçağırır.
Önerilen biçim bu listede yer alıyorsa, EVR giriş türünü kabul eder.
İlgili konular