mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-05 18:01:34 +00:00
evr/allocator: Use different buffer implementation for surface buffers.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
23a656a083
commit
959279413e
2 changed files with 18 additions and 21 deletions
|
@ -306,28 +306,29 @@ static HRESULT sample_allocator_create_samples(struct sample_allocator *allocato
|
|||
for (i = 0; i < sample_count; ++i)
|
||||
{
|
||||
struct queued_sample *queued_sample = heap_alloc(sizeof(*queued_sample));
|
||||
IMFMediaBuffer *buffer;
|
||||
|
||||
if (service)
|
||||
if (SUCCEEDED(hr = MFCreateVideoSampleFromSurface(NULL, &sample)))
|
||||
{
|
||||
if (SUCCEEDED(hr = IDirectXVideoProcessorService_CreateSurface(service, width, height, 0, format,
|
||||
D3DPOOL_DEFAULT, 0, DXVA2_VideoProcessorRenderTarget, &surface, NULL)))
|
||||
if (service)
|
||||
{
|
||||
hr = MFCreateVideoSampleFromSurface((IUnknown *)surface, &sample);
|
||||
IDirect3DSurface9_Release(surface);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IMFMediaBuffer *buffer;
|
||||
|
||||
if (SUCCEEDED(hr = MFCreateVideoSampleFromSurface(NULL, &sample)))
|
||||
{
|
||||
if (SUCCEEDED(hr = MFCreate2DMediaBuffer(width, height, format, FALSE, &buffer)))
|
||||
if (SUCCEEDED(hr = IDirectXVideoProcessorService_CreateSurface(service, width, height,
|
||||
0, format, D3DPOOL_DEFAULT, 0, DXVA2_VideoProcessorRenderTarget, &surface, NULL)))
|
||||
{
|
||||
hr = IMFSample_AddBuffer(sample, buffer);
|
||||
IMFMediaBuffer_Release(buffer);
|
||||
hr = MFCreateDXSurfaceBuffer(&IID_IDirect3DSurface9, (IUnknown *)surface, FALSE, &buffer);
|
||||
IDirect3DSurface9_Release(surface);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = MFCreate2DMediaBuffer(width, height, format, FALSE, &buffer);
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = IMFSample_AddBuffer(sample, buffer);
|
||||
IMFMediaBuffer_Release(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
if (FAILED(hr))
|
||||
|
|
|
@ -1468,17 +1468,13 @@ todo_wine
|
|||
IDirect3DSurface9_Release(surface);
|
||||
|
||||
hr = IMFMediaBuffer_QueryInterface(buffer, &IID_IMF2DBuffer, (void **)&unk);
|
||||
todo_wine
|
||||
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||
if (SUCCEEDED(hr))
|
||||
IUnknown_Release(unk);
|
||||
IUnknown_Release(unk);
|
||||
|
||||
hr = IMFMediaBuffer_Lock(buffer, &data, NULL, NULL);
|
||||
todo_wine
|
||||
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||
|
||||
hr = IMFMediaBuffer_Unlock(buffer);
|
||||
todo_wine
|
||||
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||
|
||||
IMFSample_Release(sample);
|
||||
|
|
Loading…
Reference in a new issue