Является ли IMFSourceReader :: GetNativeMediaType эквивалентным IMFMediaTypeHandler :: GetMediaTypeByIndex? - PullRequest
1 голос
/ 03 июня 2019

Предполагается, что они из одного источника и т. Д.:

IMFMediaTypeHandler::GetMediaTypeByIndex(mediaTypeIndex, mediaType)

эквивалентно:

IMFSourceReader::GetNativeMediaType(streamIndex, mediaTypeIndex, mediaType)

Есть ли соответствие между параметрами mediaTypeIndex в обоих случаях? И что это означает в отношении использования MFCreateSourceReaderFromMediaSource () со следующим установленным атрибутом:

attributes->SetUINT32(MF_READWRITE_DISABLE_CONVERTERS, TRUE);

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Методы, вероятно, будут эквивалентны, даже если они не обязаны. Если вы используете Source Reader поверх медиаисточника, вы делегируете контроль над медиаисточником экземпляру reader и, вообще говоря, вы не должны обращаться к IMFMediaTypeHandler, потому что source reader работает в предположении, что он имеет исключительный контроль над вещь.

Маловероятно, что MF_READWRITE_DISABLE_CONVERTERS повлияет на перечисление на собственных типах мультимедиа, поскольку преобразователи подключаются, чтобы сопоставить запрошенный тип мультимедиа с одним из собственных типов мультимедиа.

1 голос
/ 04 июня 2019

Я бы сказал да:

IMFMediaTypeHandler :: GetMediaTypeByIndex

Извлекает тип мультимедиа из списка поддерживаемых типов мультимедиа объекта.

IMFSourceReader :: GetNativeMediaType

, но устройства захвата могут предлагать несколько форматов.

(я думаю) список поддерживаемых типов мультимедиа"==" может предлагать несколько форматов ", в примере захвата).

И поскольку оба реализуют GetCurrentMediaType.Но я должен признать, что это не гарантировано.

Для MF_READWRITE_DISABLE_CONVERTERS, он выполнит некоторое преобразование при вызове типа SetInput, если необходимо, и если FALSE.Так что, на мой взгляд, никаких отношений с GetMediaTypeByIndex / GetNativeMediaType, но только с GetCurrentMediaType.

...