Как измерить задержку конвейера? - PullRequest
0 голосов
/ 06 октября 2018

Я хочу измерить, сколько времени требуется MF для обработки сэмплов моего видео.

Я пытался использовать время сэмплирования в качестве уникального идентификатора сэмпла, обнаружил, что конвейер корректирует это значение, так что оно смещается (небыстро, 0-1 100 наносекунд на кадр, но даже смещения на 1 достаточно, чтобы значение было бесполезным в качестве уникального идентификатора.)

Я пытался поместить пользовательское значение в атрибуты, работаетOK на Win10 с кодировщиком nVidia, происходит сбой на Win7 с кодировщиком MS: выходной кадр не содержит моего значения, по-видимому, кодировщик отбросил все атрибуты из выборок.Пробовал встроенный атрибут MFSampleExtension_DeviceTimestamp, тот же результат, значение теряется в конвейерах.

Есть ли другой способ сопоставить входные выборки с выходными выборками?Порядковые номера подсчитаны слишком хрупко IMO, каркас является многопоточным.

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете написать кодировщик-обертку MFT, который упаковывает MS-декодер в Win7, и записать время выборки / дополнительные атрибуты в очередь в IMFTransform :: ProcessInput, обработать его в IMFTransform :: ProcessOutput и получить атрибут в соответствии свремя выборки и установите соответствующие атрибуты для выходных выборок, это нормально?

...