300{
308 DWORD comp_flags = 0;
314
316
317 if (!meminput)
318 {
319 WARN(
"Source is not connected, returning VFW_E_NOT_CONNECTED.\n");
321 }
322
324 FIXME(
"Driver not loaded\n");
326 }
327
328 hres = IMediaSample_QueryInterface(pSample, &IID_IMediaSample2, (
void**)&sample2);
330 FIXME(
"Use IMediaSample2\n");
331 IMediaSample2_Release(sample2);
332 }
333
334 is_preroll = IMediaSample_IsPreroll(pSample) ==
S_OK;
335 sync_point = IMediaSample_IsSyncPoint(pSample) ==
S_OK;
336
337 hres = IMediaSample_GetTime(pSample, &
start, &stop);
339 WARN(
"Failed to get sample time, hr %#lx.\n",
hres);
341 }
342
343 hres = IMediaSample_GetMediaType(pSample, &mt);
346
347 hres = IMediaSample_GetPointer(pSample, &
ptr);
349 ERR(
"Failed to get input buffer pointer, hr %#lx.\n",
hres);
351 }
352
353 if (
FAILED(
hres = IMemAllocator_GetBuffer(
This->source.pAllocator, &out_sample, &
start, &stop, 0)))
354 {
355 ERR(
"Failed to get sample, hr %#lx.\n",
hres);
357 }
358
360 ERR(
"Failed to set time, hr %#lx.\n",
hres);
361
362 hres = IMediaSample_GetPointer(out_sample, &
buf);
365
367 FIXME(
"Unsupported temporal compression\n");
368
370 This->videoinfo->bmiHeader.biSizeImage =
This->max_frame_size;
374 ERR(
"Failed to compress frame, error %Id.\n",
res);
375 IMediaSample_Release(out_sample);
377 }
378
379 IMediaSample_SetActualDataLength(out_sample,
This->videoinfo->bmiHeader.biSizeImage);
380 IMediaSample_SetPreroll(out_sample, is_preroll);
381 IMediaSample_SetSyncPoint(out_sample, (comp_flags&
AVIIF_KEYFRAME) != 0);
382 IMediaSample_SetDiscontinuity(out_sample, (IMediaSample_IsDiscontinuity(pSample) ==
S_OK));
383
384 if (IMediaSample_GetMediaTime(pSample, &
start, &stop) ==
S_OK)
385 IMediaSample_SetMediaTime(out_sample, &
start, &stop);
386 else
387 IMediaSample_SetMediaTime(out_sample,
NULL,
NULL);
388
389 hres = IMemInputPin_Receive(meminput, out_sample);
391 WARN(
"Failed to deliver sample, hr %#lx.\n",
hres);
392
393 IMediaSample_Release(out_sample);
396}
static AVICompressor * impl_from_strmbase_pin(struct strmbase_pin *pin)
GLenum GLuint GLenum GLsizei const GLchar * buf
DWORD VFWAPIV ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev)
#define VIDCF_FASTTEMPORALC
#define ICCOMPRESS_KEYFRAME
#define VFW_E_NOT_CONNECTED