Live DirectShow 필터를 개발 중입니다.DirectShow 라이브 소스 필터 디자인
SDK API를 통해 스트림을 가져올 수있는 H264 스트림 소스가 있습니다.
내 필터에는 스레드에서 들어오는 스트림을 대기열에 넣는 (푸시) 대기열이 있습니다. 내가 확인하는 경우 FillBuffer에서
.... 은 그 때 나는
그래서 내가 스레드 안전 대기열을 (큐에서, 팝업) 필터 FillBuffer 내부 이러한 스트림을 ... 소비 ... 그러나 이것은 몇 가지 문제가 발생 이 들어오는 패킷을하고있는 경우, 공정 논리는 다음과 같이이다 : ......
bool hasElement = SynchronizedQueue.pop(element);
if(!hasElement)
{
return S_OK
}
...
는 ...이 많은 CPU를 소모 부스트 LIB t을 사용하여
Howewer O 조건 변수 연인의 CPU가하지만 ... 큐에 데이터가없는 경우 언제,이 블록 FillBuffer 기능과 필터를 중지 할 수있다
...
SynchronizedQueue.waitAndPop(element) ;// which wait until we have some
..와 잠금기구.
원격 장치에서 입력 스트림을 받아 디코더로 전달하는 라이브 소스 필터의 대안은 무엇입니까? 아니면 내 디자인을 더 좋게 만들 수 있습니까? 더 낮은 CPU와 중단 될 수 있습니까?
필터가 중지되었음을 어떻게 감지합니까? 필터 안쪽에 ... – Novalis
글쎄, 그것은 당신의 객체에 대해 호출 된'IBaseFilter :: Stop'입니다. 여러분과 기본 클래스가 이미하고있는 것 이외에 확실히 처리 할 수 있습니다. –