goto done;
}
- hr = swap_chain->GetBuffer (0, IID_ID3D11Texture2D, (void **) &backbuffer);
+ hr = swap_chain->GetBuffer (0, IID_PPV_ARGS (&backbuffer));
if (!gst_d3d11_result (hr, window->device)) {
GST_ERROR_OBJECT (window,
"Cannot get backbuffer from swapchain, hr: 0x%x", (guint) hr);
"New client area %dx%d, render rect x: %d, y: %d, %dx%d",
desc.Width, desc.Height, rst_rect.x, rst_rect.y, rst_rect.w, rst_rect.h);
- hr = device_handle->CreateRenderTargetView ((ID3D11Resource *) backbuffer,
- NULL, &window->rtv);
+ hr = device_handle->CreateRenderTargetView (backbuffer, NULL, &window->rtv);
if (!gst_d3d11_result (hr, window->device)) {
GST_ERROR_OBJECT (window, "Cannot create render target view, hr: 0x%x",
(guint) hr);
pov_desc.Texture2D.MipSlice = 0;
if (!gst_d3d11_video_processor_create_output_view (window->processor,
- &pov_desc, (ID3D11Resource *) backbuffer, &window->pov))
+ &pov_desc, backbuffer, &window->pov))
goto done;
}
if (gst_video_mastering_display_info_from_caps (&minfo, caps) &&
gst_video_content_light_level_from_caps (&cll, caps)) {
- IDXGISwapChain4 *swapchain4 = NULL;
+ ComPtr < IDXGISwapChain4 > swapchain4;
HRESULT hr;
- hr = window->swap_chain->QueryInterface (IID_IDXGISwapChain4,
- (void **) &swapchain4);
+ hr = window->swap_chain->QueryInterface (IID_PPV_ARGS (&swapchain4));
if (gst_d3d11_result (hr, window->device)) {
GST_DEBUG_OBJECT (window, "Have HDR metadata, set to DXGI swapchain");
} else {
have_hdr10 = TRUE;
}
-
- swapchain4->Release ();
}
}
}
#if (GST_D3D11_DXGI_HEADER_VERSION >= 4)
{
- IDXGISwapChain3 *swapchain3 = NULL;
+ ComPtr < IDXGISwapChain3 > swapchain3;
HRESULT hr;
- hr = window->swap_chain->QueryInterface (IID_IDXGISwapChain3,
- (void **) &swapchain3);
+ hr = window->swap_chain->QueryInterface (IID_PPV_ARGS (&swapchain3));
if (gst_d3d11_result (hr, window->device)) {
chosen_colorspace =
gst_d3d11_find_swap_chain_color_space (&window->render_info,
- swapchain3, have_hdr10);
+ swapchain3.Get (), have_hdr10);
if (chosen_colorspace) {
native_colorspace_type =
(DXGI_COLOR_SPACE_TYPE) chosen_colorspace->dxgi_color_space_type;
window->render_info.colorimetry.matrix = chosen_colorspace->matrix;
}
}
-
- swapchain3->Release ();
}
}
#endif
IDXGISwapChain1 *swap_chain = NULL;
ID3D11Device *device_handle = gst_d3d11_device_get_device_handle (device);
IDXGIFactory1 *factory = gst_d3d11_device_get_dxgi_factory_handle (device);
- IDXGIFactory2 *factory2 = NULL;
+ ComPtr < IDXGIFactory2 > factory2;
hr = factory->QueryInterface (IID_PPV_ARGS (&factory2));
if (!gst_d3d11_result (hr, device)) {
}
gst_d3d11_device_lock (device);
- hr = factory2->CreateSwapChainForCoreWindow ((IUnknown *) device_handle,
+ hr = factory2->CreateSwapChainForCoreWindow (device_handle,
(IUnknown *) core_window, desc, output, &swap_chain);
gst_d3d11_device_unlock (device);
swap_chain = NULL;
}
- factory2->Release ();
-
return swap_chain;
}
pov_desc.Texture2D.MipSlice = 0;
if (!gst_d3d11_video_processor_create_output_view (window->processor,
- &pov_desc, (ID3D11Resource *) self->fallback_texture,
- &self->fallback_pov)) {
+ &pov_desc, self->fallback_texture, &self->fallback_pov)) {
GST_ERROR_OBJECT (window,
"ID3D11VideoProcessorOutputView is unavailable");
gst_d3d11_window_dummy_clear_resources (self);
pov_desc.Texture2D.MipSlice = 0;
if (!gst_d3d11_video_processor_create_output_view (window->processor,
- &pov_desc, (ID3D11Resource *) texture, &pov)) {
+ &pov_desc, texture, &pov)) {
GST_WARNING_OBJECT (window,
"ID3D11VideoProcessorOutputView is unavailable");
}
IDXGISwapChain1 *swap_chain = NULL;
ID3D11Device *device_handle = gst_d3d11_device_get_device_handle (device);
IDXGIFactory1 *factory = gst_d3d11_device_get_dxgi_factory_handle (device);
- IDXGIFactory2 *factory2 = NULL;
+ ComPtr < IDXGIFactory2 > factory2;
hr = factory->QueryInterface (IID_PPV_ARGS (&factory2));
if (!gst_d3d11_result (hr, device)) {
}
gst_d3d11_device_lock (device);
- hr = factory2->CreateSwapChainForComposition ((IUnknown *) device_handle,
+ hr = factory2->CreateSwapChainForComposition (device_handle,
desc, output, &swap_chain);
gst_d3d11_device_unlock (device);
swap_chain = NULL;
}
- factory2->Release ();
-
return swap_chain;
}
#endif
#include "gstd3d11window_win32.h"
+#include <wrl.h>
/* *INDENT-OFF* */
+using namespace Microsoft::WRL;
+
G_BEGIN_DECLS
GST_DEBUG_CATEGORY_EXTERN (gst_d3d11_window_debug);
ShowWindow (hwnd, SW_NORMAL);
} else {
- IDXGIOutput *output;
+ ComPtr < IDXGIOutput > output;
DXGI_OUTPUT_DESC output_desc;
IDXGISwapChain *swap_chain = window->swap_chain;
swap_chain->GetContainingOutput (&output);
output->GetDesc (&output_desc);
- output->Release ();
SetWindowPos (hwnd, HWND_TOPMOST,
output_desc.DesktopCoordinates.left,
gst_d3d11_window_win32_disable_alt_enter (GstD3D11WindowWin32 * self,
GstD3D11Device * device, IDXGISwapChain * swap_chain, HWND hwnd)
{
- IDXGIFactory1 *factory = NULL;
+ ComPtr < IDXGIFactory1 > factory;
HRESULT hr;
- hr = swap_chain->GetParent (IID_IDXGIFactory1, (void **) &factory);
+ hr = swap_chain->GetParent (IID_PPV_ARGS (&factory));
if (!gst_d3d11_result (hr, device) || !factory) {
GST_WARNING_OBJECT (self,
"Cannot get parent dxgi factory for swapchain %p, hr: 0x%x",
GST_WARNING_OBJECT (self,
"MakeWindowAssociation failure, hr: 0x%x", (guint) hr);
}
-
- factory->Release ();
}
static IDXGISwapChain *
IDXGIFactory1 *factory = gst_d3d11_device_get_dxgi_factory_handle (device);
gst_d3d11_device_lock (device);
- hr = factory->CreateSwapChain ((IUnknown *) device_handle, desc, &swap_chain);
+ hr = factory->CreateSwapChain (device_handle, desc, &swap_chain);
gst_d3d11_device_unlock (device);
if (!gst_d3d11_result (hr, device)) {
IDXGISwapChain1 *swap_chain = NULL;
ID3D11Device *device_handle = gst_d3d11_device_get_device_handle (device);
IDXGIFactory1 *factory = gst_d3d11_device_get_dxgi_factory_handle (device);
- IDXGIFactory2 *factory2 = NULL;
+ ComPtr < IDXGIFactory2 > factory2;
hr = factory->QueryInterface (IID_PPV_ARGS (&factory2));
if (!gst_d3d11_result (hr, device)) {
}
gst_d3d11_device_lock (device);
- hr = factory2->CreateSwapChainForHwnd (
- (IUnknown *) device_handle, hwnd, desc, fullscreen_desc,
- output, &swap_chain);
+ hr = factory2->CreateSwapChainForHwnd (device_handle, hwnd, desc,
+ fullscreen_desc, output, &swap_chain);
gst_d3d11_device_unlock (device);
if (!gst_d3d11_result (hr, device)) {
swap_chain = NULL;
}
- factory2->Release ();
-
return swap_chain;
}
#endif
desc1.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED;
desc1.Flags = swapchain_flags;
- new_swapchain = (IDXGISwapChain *)
- create_swap_chain_for_hwnd (self, device,
+ new_swapchain = create_swap_chain_for_hwnd (self, device,
self->internal_hwnd, &desc1, NULL, NULL);
if (!new_swapchain) {