Я использую IMFMediaEngine для воспроизведения потокового видео (Smooth Streaming, HLS) и, возможно, с PlayReady позже.IMFMediaEngine всегда работает в разрешении 640x480 с использованием DirectComposition
Он прекрасно работает с использованием TransferVideoFrame, чтобы нарисовать видео на текстуре. Но я понимаю, что это требование для видео PlayReady + DRM + 1080p, для использования DirectComposition. Поэтому я пытаюсь сделать это.
Также еще одно преимущество сделать это таким образом, рендеринг видеофрагмента не зависит от приложения, поэтому возможное заикание или отставание в пользовательском интерфейсе приложения не повлияет на воспроизведение видео.
Я могу заставить его работать, но, к сожалению IDCompositionVisual Я использую всегда в конечном итоге ограничивается 640х480. Таким образом, видео должно уменьшаться до него. Тогда, если я преобразую это, чтобы масштабировать его, я получаю уродливое растянутое изображение.
Я регистрация Визуальные так:
pMediaAttributes->SetUnknown(MF_MEDIA_ENGINE_PLAYBACK_VISUAL, m_pDcompVideoVisual);
Как указано здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/hh162850(v=vs.85).aspx
Попытки создать поверхность перед и SetContent на зрительном ничего не изменится. Это похоже на то, что видеопроигрыватель переопределяет его с собственной поверхностью, 640x480. Было бы неплохо прикрепить его к простому игроку и найти реальное решение этой проблемы и указать размер визуальной поверхности, когда я получил событие MF_MEDIA_ENGINE_EVENT_FORMATCHANGE.
Поскольку это опция в IMFMediaEngine для указания поверхности DirectComposition, должен быть способ сделать эту работу.
Спасибо. Я действительно получил поддержку Microsoft, и они сказали то же самое. По какой-то причине DirectComposition перестала работать с Windows10 XboxOne. Требование DRM не было техническим, но, очевидно, не было написано. Поэтому программист никогда не будет манипулировать фреймом напрямую. Мы поднимаем вопрос выше, чтобы убедиться, что это все еще так. Между тем, спасибо за ответ, что это правильный способ сделать это. –