저는 C# 배경에서 왔으며 어떤 수준에서는 메서드에 대한 참조를 전달할 수 있다고 생각했습니다. 이것은 대수롭지 않은 것 같습니다. 대신 호출 할 메소드를 정의하는 인터페이스를 구현하는 클래스를 작성해야합니다. 그런 다음 클래스의 인스턴스를 SetCallback 메서드의 필터에 전달합니다. 물론 긴 대리자 또는 람다 식 여기
에 비해 숨이 찬 보인다는
class SampleGrabberCallback : public ISampleGrabberCB
{
public:
// Fake referance counting.
STDMETHODIMP_(ULONG) AddRef() { return 1; }
STDMETHODIMP_(ULONG) Release() { return 2; }
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject)
{
if (NULL == ppvObject) return E_POINTER;
if (riid == __uuidof(IUnknown))
{
*ppvObject = static_cast<IUnknown*>(this);
return S_OK;
}
if (riid == __uuidof(ISampleGrabberCB))
{
*ppvObject = static_cast<ISampleGrabberCB*>(this);
return S_OK;
}
return E_NOTIMPL;
}
STDMETHODIMP SampleCB(double Time, IMediaSample *pSample)
{
return E_NOTIMPL;
}
STDMETHODIMP BufferCB(double Time, BYTE *pBuffer, long BufferLen)
{
return E_NOTIMPL;
}
};
안녕하세요, 정확한 문제는 그래서 당신은 샘플을 잡는의 전체 코드를 공유하시기 바랍니다 수있는 클래스 구현 ISampleGrabberCB의 예입니다 ? 고마워요, – Basel
그래, 만약 그 코드가 작동한다면, 제발 그걸 나누시겠습니까? – mbaros