I read data from IMFMediaSource,Then use H.264 Encoder to encode IMFSample,But some problem happened:
hr=m_pVideoEncoder->ProcessInput(pSample);
BREAK_ON_FAIL(hr);
CComPtr<IMFSample> pSampleOut=NULL;
hr = m_pVideoEncoder->ProcessOutput(pSampleOut);
BREAK_ON_FAIL(hr);
if(pSampleOut){
LONGLONG duration=0;
CComPtr<IMFMediaBuffer> pTestBuffer = NULL;
DWORD wdBufferCount=0;
hr=pSampleOut->GetSampleDuration(&duration);
hr=pSampleOut->GetBufferCount(&wdBufferCount);
hr=pSampleOut->GetBufferByIndex(0,&pTestBuffer);
BYTE *pbBuffer=NULL;
DWORD dwMaxLength=0;
DWORD dwCurrentLength=0;
hr=pTestBuffer->Lock(&pbBuffer,&dwMaxLength,&dwCurrentLength); //pbBuffer's content is '\0',but dwMaxLength is 48000,and dwCurrentLength is 16000
if(pbBuffer){
hr=pTestBuffer->Unlock();
}
I cannot solve this problem, some one can help me,thanks!