#include <windows.h>
-// Include thread.h before redefining _WIN32_WINNT, to get
-// the right implementation for AVOnce
-#include "thread.h"
-
-#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-#endif
#define COBJMACROS
#include <initguid.h>
#include "imgutils.h"
#include "pixdesc.h"
#include "pixfmt.h"
+#include "thread.h"
+#include "compat/w32dlfcn.h"
typedef HRESULT(WINAPI *PFN_CREATE_DXGI_FACTORY)(REFIID riid, void **ppFactory);
// from too many LoadLibrary calls.
HANDLE d3dlib, dxgilib;
- d3dlib = LoadLibrary("d3d11.dll");
- dxgilib = LoadLibrary("dxgi.dll");
+ d3dlib = dlopen("d3d11.dll", 0);
+ dxgilib = dlopen("dxgi.dll", 0);
if (!d3dlib || !dxgilib)
return;
return wrap_texture_buf(tex, 0);
}
-static AVBufferRef *d3d11va_pool_alloc(void *opaque, int size)
+static AVBufferRef *d3d11va_pool_alloc(void *opaque, size_t size)
{
AVHWFramesContext *ctx = (AVHWFramesContext*)opaque;
D3D11VAFramesContext *s = ctx->internal->priv;
fill_texture_ptrs(map_data, map_linesize, ctx, &desc, &map);
- av_image_copy(dst->data, dst->linesize, map_data, map_linesize,
+ av_image_copy(dst->data, dst->linesize, (const uint8_t **)map_data, map_linesize,
ctx->sw_format, w, h);
ID3D11DeviceContext_Unmap(device_hwctx->device_context, staging, 0);
fill_texture_ptrs(map_data, map_linesize, ctx, &desc, &map);
- av_image_copy(map_data, map_linesize, src->data, src->linesize,
+ av_image_copy(map_data, map_linesize, (const uint8_t **)src->data, src->linesize,
ctx->sw_format, w, h);
ID3D11DeviceContext_Unmap(device_hwctx->device_context, staging, 0);
}
}
- hr = mD3D11CreateDevice(pAdapter, pAdapter ? D3D_DRIVER_TYPE_UNKNOWN : D3D_DRIVER_TYPE_HARDWARE, NULL, creationFlags, NULL, 0,
- D3D11_SDK_VERSION, &device_hwctx->device, NULL, NULL);
if (pAdapter) {
- DXGI_ADAPTER_DESC2 desc;
+ DXGI_ADAPTER_DESC desc;
hr = IDXGIAdapter2_GetDesc(pAdapter, &desc);
if (!FAILED(hr)) {
av_log(ctx, AV_LOG_INFO, "Using device %04x:%04x (%ls).\n",
desc.VendorId, desc.DeviceId, desc.Description);
}
- IDXGIAdapter_Release(pAdapter);
}
+
+ hr = mD3D11CreateDevice(pAdapter, pAdapter ? D3D_DRIVER_TYPE_UNKNOWN : D3D_DRIVER_TYPE_HARDWARE, NULL, creationFlags, NULL, 0,
+ D3D11_SDK_VERSION, &device_hwctx->device, NULL, NULL);
+ if (pAdapter)
+ IDXGIAdapter_Release(pAdapter);
if (FAILED(hr)) {
av_log(ctx, AV_LOG_ERROR, "Failed to create Direct3D device (%lx)\n", (long)hr);
return AVERROR_UNKNOWN;