DirectShow: set timestamp on media player frames.

Change-Id: Ie3d395c7ac4a9c1f52c3dedfd5bc3993744aa503
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
This commit is contained in:
Yoann Lopes
2015-10-31 16:31:47 +01:00
parent 1ed707deea
commit 4c189b18c3

View File

@@ -606,10 +606,24 @@ void VideoSurfaceFilter::sampleReady()
IMediaSample *sample = m_sampleScheduler.takeSample(&eos);
if (sample) {
m_surface->present(QVideoFrame(
new MediaSampleVideoBuffer(sample, m_bytesPerLine),
m_surfaceFormat.frameSize(),
m_surfaceFormat.pixelFormat()));
QVideoFrame frame(new MediaSampleVideoBuffer(sample, m_bytesPerLine),
m_surfaceFormat.frameSize(),
m_surfaceFormat.pixelFormat());
if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG position = 0;
seeking->GetCurrentPosition(&position);
seeking->Release();
frame.setStartTime(position * 0.1);
REFERENCE_TIME startTime = -1;
REFERENCE_TIME endTime = -1;
if (sample->GetTime(&startTime, &endTime) == S_OK)
frame.setEndTime(frame.startTime() + (endTime - startTime) * 0.1);
}
m_surface->present(frame);
sample->Release();