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

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

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

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

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

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

Чтобы вставить кадры в схему, вызовите KsPinSubmitFrame или KsPinSubmitFrameMdl.

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

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