AVStream에서 처리 다시 시작

다음 조건 중 어느 것이라도 충족되는 경우 AVStream은 처리를 중지합니다.

  • 핀 중심 환경에서는 현재 핀에서 사용할 수 있는 데이터가 없습니다.

  • 필터 중심 환경에서는 KSPIN_DESCRIPTOR_EX 구조체의 Flags 멤버가 KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 설정되지 않은 하나 이상의 핀에 처리 대기 중인 데이터가 없습니다. 기본적으로 이 플래그는 설정되지 않습니다.

  • 미니 드라이버의 처리 디스패치 콜백 루틴은 프레임 가용성에 관계없이 STATUS_PENDING 반환합니다. 미니 드라이버가 핀 중심 처리 또는 필터 중심 처리를 구현하는지 여부에 따라 처리 디스패치는 AVStrMiniFilterProcess 또는 AVStrMiniPinProcess일 수 있습니다.

AVStream은 새 데이터가 이전에 빈 큐에 도착하면 처리를 시작합니다. 따라서 연결된 큐가 가득 찼을 때 미니 드라이버의 처리 디스패치가 STATUS_PENDING 반환하는 경우 미니 드라이버는 처리를 다시 시작하도록 호출되지 않습니다. 미니 드라이버가 STATUS_PENDING 설정하면 미니 드라이버는 KsPinAttemptProcessing 또는 KsFilterAttemptProcessing을 호출하여 처리를 다시 시작해야 합니다.

미니 드라이버가 실제로 데이터를 처리하지 않는 경우 처리 디스패치에서 STATUS_SUCCESS 반환하지 마세요. 이로 인해 AVStream은 즉시 미니 드라이버를 다시 호출하므로 AVStream과 처리 디스패치 간에 무한 루프가 발생합니다.