Поделиться через


Внедрение кадра

По умолчанию в AVStream запрашивающий объект получает пустые кадры из распределителя и помещает их в очередь. Затем мини-driver заполняет кадры путем обработки, ориентированной на закрепление или фильтрацией. Кадры перемещаются по транспорту к следующему объекту в канале, в конечном итоге завершая канал и возвращаясь запросу. AvStream затем повторно использует кадры.

Мини-drivers могут переопределить это поведение по умолчанию с помощью режима внедрения. В режиме внедрения мини-driver отвечает за размещение кадров в канале. Кадры распространяются по каналу по умолчанию. Когда кадры возвращаются к объекту AVStream, на котором они запущены, AVStream вызывает подпрограмму AVStrMiniFrameReturn.

В этой подпрограмме мини-driver может, например, освободить кадр, завершить работу, ожидая возврата кадра, или повторно заполнить и повторно выполнить переопределение кадра.

Чтобы задать режим внедрения, мини-driver вызывает KsPinRegisterFrameReturnCallback и предоставляет указатель на его подпрограмму AVStrMiniFrameReturn .

Не вызывайте KsPinRegisterFrameReturnCallback, если фильтр не находится в состоянии остановки.

Чтобы внедрить кадры в канал, вызовите KsPinSubmitFrame или KsPinSubmitFrameMdl.

На схеме ниже показан набор фильтров AVStream, состоящий из исходного фильтра, неуместного фильтра преобразования и фильтра отрисовки с исходными кадрами внедрения.

схема, иллюстрирующая набор фильтров avstream.