Windows медиа фундамент 2D Buffer - PullRequest
1 голос
/ 17 марта 2020

У меня проблемы с пониманием того, какой экземпляр IMF2DBuffer доступен для использования. Использование QueryInterface на IMFMediaBuffer приводит к No such interface supported. (Я использую Windows 10.)

Я нашел эту формулировку, но она очень расплывчатая:

Этот интерфейс разработан специально для данных изображения. Чтобы получить указатель на этот интерфейс, вызовите QueryInterface в медиа-буфере. Не все объекты медиа-буфера предоставляют этот интерфейс. Но если медиа-буфер предоставляет интерфейс IMF2DBuffer, вы должны использовать этот интерфейс для доступа к данным, если это возможно, вместо использования IMFMediaBuffer. Вы все еще можете использовать интерфейс IMFMediaBuffer, но он может быть менее эффективным.

Я не могу найти никакой информации о том, в каких случаях он это делает или не раскрывает. Это полагается на СМИ? Формат вывода? Код c? Версия ОС? Это действительно не говорит.

1 Ответ

0 голосов
/ 18 марта 2020

Язык цитаты подсказывает, как вам следует подходить к использованию этого интерфейса. Вы не должны полагаться на носитель, формат вывода, код c или версию ОС.

Идея состоит в том, что «иногда» вы можете использовать этот интерфейс для более эффективного доступа к данным. Поэтому, если вы хотите точно настроить обработку, у вас может быть один кодовый путь, который делает IMF2DBuffer, и резервный код c путь для generi c IMFMediaBuffer.

Это сообщение с документацией, которое имеет разумный смысл.

Наличие IMF2DBuffer зависит от реализации c. Там нет прямого упоминания, когда он доступен, потому что это обещание: если оно задокументировано, то есть обещание следовать этому, нет никаких причин принимать такое ограничение.

Документация для самого интерфейса объясняет, что этот интерфейс помогает, когда данные эффективно хранятся нестандартным способом. IMFMediaBuffer доступ должен изменить порядок данных, что может быть не столь эффективным с точки зрения производительности. Методы IMF2DBuffer, в свою очередь, помогают выполнять определенные задачи / доступ к данным без «дорогой» перегруппировки данных.

...