Remove Direct2D module
authorJean-Baptiste Kempf <jb@videolan.org>
Tue, 22 Nov 2016 20:50:01 +0000 (21:50 +0100)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 22 Nov 2016 21:14:08 +0000 (22:14 +0100)
NEWS
configure.ac
modules/MODULES_LIST
modules/video_output/Makefile.am
modules/video_output/win32/common.c
modules/video_output/win32/common.h
modules/video_output/win32/direct2d.c [deleted file]
po/POTFILES.in

diff --git a/NEWS b/NEWS
index 969c621..5d3e95f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -263,6 +263,7 @@ Removed modules
  * iOS Dialog Provider (use MobileVLCKit / TVVLCKit instead)
  * QuickTime decoder module (use native codecs)
  * BD access module (use libbluray)
+ * Direct2D module (use Direct3D11)
 
 
 Changes between 2.2.0 and 2.2.1:
index c61bed5..643ef36 100644 (file)
@@ -518,7 +518,7 @@ dnl Check for broken versions of mingw-runtime compatability library
 #include <_mingw.h>
 #if defined(__MINGW64_VERSION_MAJOR)
 # if __MINGW64_VERSION_MAJOR < 3
-#  error Attempting to use mingw-runtime with broken vsnprintf and direct2d support
+#  error Attempting to use mingw-runtime with broken vsnprintf support
 # endif
 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
 # error Attempting to use mingw-runtime with broken vsnprintf support
@@ -3337,10 +3337,6 @@ AS_IF([test "${enable_directx}" != "no"], [
     VLC_ADD_PLUGIN([direct3d9])
   ])
 
-  dnl Direct2D
-  AC_CHECK_HEADERS(d2d1.h, [
-    VLC_ADD_PLUGIN([direct2d])
-  ])
 ])
 
 dnl
index e7685a3..a73da55 100644 (file)
@@ -106,7 +106,6 @@ $Id$
  * demux_stl: EBU STL subtitles demuxer
  * demuxdump: Pseudo-demuxer that dumps the stream
  * diracsys: BBC Dirac demuxer
- * direct2d: video output module using the Direct2D API
  * direct3d11: video output module using the Direct3D11 API
  * direct3d9: video output module using the Direct3D9 API
  * directdraw: video output module using the DirectDraw API
index 6f9b183..ccf439e 100644 (file)
@@ -160,19 +160,6 @@ endif
 
 
 ### Win32 ###
-libdirect2d_plugin_la_SOURCES = video_output/win32/direct2d.c \
-       video_output/win32/common.c video_output/win32/common.h \
-       video_output/win32/events.c video_output/win32/events.h \
-       video_output/win32/win32touch.c video_output/win32/win32touch.h
-libdirect2d_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) \
-       -DMODULE_NAME_IS_direct2d
-libdirect2d_plugin_la_LIBADD = -lgdi32 $(LIBCOM) -luuid
-libdirect2d_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)'
-if HAVE_WIN32_DESKTOP
-vout_LTLIBRARIES += $(LTLIBdirect2d)
-EXTRA_LTLIBRARIES += libdirect2d_plugin.la
-endif
-
 libdirect3d9_plugin_la_SOURCES = video_output/win32/direct3d9.c \
        video_output/win32/common.c video_output/win32/common.h \
        video_output/win32/events.c video_output/win32/events.h \
index e822e40..e45f8b6 100644 (file)
@@ -219,7 +219,7 @@ void UpdateRects(vout_display_t *vd,
 #endif
 
     /* Destination image position and dimensions */
-#if (defined(MODULE_NAME_IS_direct3d9) || defined(MODULE_NAME_IS_direct3d11) || defined(MODULE_NAME_IS_direct2d)) && !VLC_WINSTORE_APP
+#if (defined(MODULE_NAME_IS_direct3d9) || defined(MODULE_NAME_IS_direct3d11)) && !VLC_WINSTORE_APP
     rect_dest.left = 0;
     rect_dest.right = place.width;
     rect_dest.top = 0;
@@ -298,7 +298,7 @@ void UpdateRects(vout_display_t *vd,
     /* Apply overlay hardware constraints */
     if (sys->use_overlay)
         AlignRect(&rect_src_clipped, sys->i_align_src_boundary, sys->i_align_src_size);
-#elif defined(MODULE_NAME_IS_direct3d9) || defined(MODULE_NAME_IS_direct3d11) || defined(MODULE_NAME_IS_direct2d)
+#elif defined(MODULE_NAME_IS_direct3d9) || defined(MODULE_NAME_IS_direct3d11)
     /* Needed at least with YUV content */
     rect_src_clipped.left &= ~1;
     rect_src_clipped.right &= ~1;
index a8ce067..bfa59bd 100644 (file)
@@ -38,9 +38,6 @@
 #if defined(MODULE_NAME_IS_glwin32) || defined(MODULE_NAME_IS_wgl)
 # include "../opengl.h"
 #endif
-#ifdef MODULE_NAME_IS_direct2d
-# include <d2d1.h>
-#endif
 #if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H)
 # include <dxgidebug.h>
 #endif
@@ -173,13 +170,6 @@ struct vout_display_sys_t
     HDC                   affinityHDC; // DC for the selected GPU
 #endif
 
-#ifdef MODULE_NAME_IS_direct2d
-    HINSTANCE              d2_dll;            /* handle of the opened d2d1 dll */
-    ID2D1Factory           *d2_factory;                         /* D2D factory */
-    ID2D1HwndRenderTarget  *d2_render_target;          /* D2D rendering target */
-    ID2D1Bitmap            *d2_bitmap;                            /* D2 bitmap */
-#endif
-
 #ifdef MODULE_NAME_IS_direct3d11
 #if !VLC_WINSTORE_APP
     HINSTANCE                hdxgi_dll;        /* handle of the opened dxgi dll */
diff --git a/modules/video_output/win32/direct2d.c b/modules/video_output/win32/direct2d.c
deleted file mode 100644 (file)
index 0e489b8..0000000
+++ /dev/null
@@ -1,419 +0,0 @@
-/*****************************************************************************
- * direct2d.c : Direct2D video output plugin for vlc (Win7/Vista SP2 PF Update)
- *****************************************************************************
- * Copyright (C) 2010 VideoLAN and AUTHORS
- * $Id$
- *
- * Author: David Kaplan <david@2of1.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include <assert.h>
-
-#include <vlc_common.h>
-#include <vlc_plugin.h>
-#include <vlc_vout_display.h>
-
-#include <windows.h>
-#include <commctrl.h>
-#include <initguid.h>
-#include <d2d1.h>
-
-#include "common.h"
-
-
-/*****************************************************************************
- * Module descriptor
- *****************************************************************************/
-static int  Open (vlc_object_t *);
-static void Close(vlc_object_t *);
-
-#define D2D_HELP N_("Video output for Windows 7/Windows Vista with Platform update")
-
-vlc_module_begin ()
-    set_category(CAT_VIDEO)
-    set_subcategory(SUBCAT_VIDEO_VOUT)
-    set_help(D2D_HELP)
-    set_shortname("Direct2D")
-    set_description(N_("Direct2D video output"))
-    set_capability("vout display", 180)
-    add_shortcut("direct2d")
-    set_callbacks(Open, Close)
-vlc_module_end ()
-
-
-/*****************************************************************************
- * Local prototypes
- *****************************************************************************/
-static picture_pool_t *Pool  (vout_display_t *, unsigned);
-static void           Prepare(vout_display_t *, picture_t *, subpicture_t *);
-static void           Display(vout_display_t *, picture_t *, subpicture_t *);
-static int            Control(vout_display_t *, int, va_list);
-static void           Manage (vout_display_t *);
-
-static int      D2D_CreateRenderTarget(vout_display_t *vd);
-static void     D2D_ResizeRenderTarget(vout_display_t *vd);
-static void     D2D_DestroyRenderTarget(vout_display_t *vd);
-
-/**
- * Initialises Direct2D vout module
- */
-static int Open(vlc_object_t *object)
-{
-    vout_display_t *vd = (vout_display_t *)object;
-    vout_display_sys_t *sys;
-
-    vd->sys = sys = calloc(1, sizeof(*sys));
-    if (!sys)
-        return VLC_ENOMEM;
-
-    sys->d2_render_target = NULL;
-
-    sys->d2_dll = LoadLibrary(TEXT("D2D1.DLL"));
-    if (!sys->d2_dll) {
-        if (object->obj.force)
-            msg_Err(vd, "Cannot load D2D1.DLL, aborting");
-        goto error;
-    }
-
-    D2D1_FACTORY_OPTIONS fo = {
-        D2D1_DEBUG_LEVEL_NONE
-    };
-
-    HRESULT (WINAPI *D2D1CreateFactory)(D2D1_FACTORY_TYPE, REFIID,
-                                        const D2D1_FACTORY_OPTIONS *,
-                                        void **);
-
-    D2D1CreateFactory = (void *)GetProcAddress(sys->d2_dll,
-                                               "D2D1CreateFactory");
-    if (!D2D1CreateFactory) {
-        msg_Err(vd,
-                "Cannot locate reference to a D2D1CreateFactory ABI in D2D1.DLL");
-        goto error;
-    }
-
-#ifndef NDEBUG
-    msg_Dbg(vd, "D2D1.DLL loaded");
-#endif
-
-    HRESULT hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED,
-                                   (REFIID)&IID_ID2D1Factory,
-                                   &fo,
-                                   (void **)&sys->d2_factory);
-    if (hr != S_OK) {
-        msg_Err(vd, "Cannot create Direct2D factory (hr = 0x%x)!",
-                (unsigned)hr);
-        goto error;
-    }
-
-    if (CommonInit(vd))
-        goto error;
-
-    if (D2D_CreateRenderTarget(vd) != VLC_SUCCESS)
-        goto error;
-
-    vout_display_info_t info = vd->info;
-    info.is_slow              = false;
-    info.has_double_click     = true;
-    info.has_hide_mouse       = false;
-    info.has_pictures_invalid = false;
-    vd->info = info;
-
-    vd->fmt.i_chroma = VLC_CODEC_RGB32; /* masks change this to BGR32 for ID2D1Bitmap */
-    vd->fmt.i_rmask  = 0x0000ff00;
-    vd->fmt.i_gmask  = 0x00ff0000;
-    vd->fmt.i_bmask  = 0xff000000;
-
-    vd->pool    = Pool;
-    vd->prepare = Prepare;
-    vd->display = Display;
-    vd->manage  = Manage;
-    vd->control = Control;
-
-    EventThreadUpdateTitle(sys->event, VOUT_TITLE " (Direct2D output)");
-
-#ifndef NDEBUG
-    msg_Dbg(vd, "Ready");
-#endif
-
-    return VLC_SUCCESS;
-
-error:
-    Close(VLC_OBJECT(vd));
-    return VLC_EGENERIC;
-}
-
-/**
- * Close Direct2D vout
- */
-static void Close(vlc_object_t *object)
-{
-    vout_display_t *vd = (vout_display_t *)object;
-
-    D2D_DestroyRenderTarget(vd);
-
-    if (vd->sys->pool)
-        picture_pool_Release(vd->sys->pool);
-
-    CommonClean(vd);
-
-    if (vd->sys->d2_factory)
-        ID2D1Factory_Release(vd->sys->d2_factory);
-    if (vd->sys->d2_dll)
-        FreeLibrary(vd->sys->d2_dll);
-
-    free(vd->sys);
-}
-
-/**
- * Handles pool allocations for bitmaps
- */
-static picture_pool_t *Pool(vout_display_t *vd, unsigned count)
-{
-    vout_display_sys_t *sys = vd->sys;
-
-    if (!sys->pool) {
-        sys->pool = picture_pool_NewFromFormat(&vd->fmt, count);
-#ifndef NDEBUG
-        msg_Dbg(vd, "New picture pool created");
-#endif
-    }
-
-    return sys->pool;
-}
-
-/**
- * Performs set up of ID2D1Bitmap memory ready for blitting
- */
-static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpicture)
-{
-    vout_display_sys_t *sys = vd->sys;
-
-    if (sys->d2_render_target && sys->d2_bitmap) {
-
-        HRESULT hr = ID2D1Bitmap_CopyFromMemory(sys->d2_bitmap,
-                                                NULL /*&r_src*/,
-                                                picture->p[0].p_pixels,
-                                                picture->p[0].i_pitch);
-        if (hr != S_OK)
-            msg_Err(vd, "Failed to copy bitmap memory (hr = 0x%x)!",
-                    (unsigned)hr);
-
-#ifndef NDEBUG
-        /*msg_Dbg(vd, "Bitmap dbg: target = %p, pitch = %d, bitmap = %p",
-                (void *)sys->d2_render_target, pitch, (void *)sys->d2_bitmap);*/
-#endif
-    }
-    VLC_UNUSED(subpicture);
-}
-
-/**
- * Blits a scaled picture_t to the render target
- */
-static void Display(vout_display_t *vd, picture_t *picture, subpicture_t *subpicture)
-{
-    vout_display_sys_t *sys = vd->sys;
-
-    D2D1_RECT_F r_dest = {
-        sys->rect_dest.left,
-        sys->rect_dest.top,
-        sys->rect_dest.right,
-        sys->rect_dest.bottom
-    };
-
-    if (sys->d2_render_target && sys->d2_bitmap) {
-        ID2D1HwndRenderTarget_BeginDraw(sys->d2_render_target);
-
-        ID2D1HwndRenderTarget_DrawBitmap(sys->d2_render_target,
-                                         sys->d2_bitmap,
-                                         &r_dest,
-                                         1.0f,
-                                         D2D1_BITMAP_INTERPOLATION_MODE_LINEAR,
-                                         NULL);
-
-        HRESULT hr = ID2D1HwndRenderTarget_EndDraw(sys->d2_render_target,
-                                                   NULL,
-                                                   NULL);
-        if (hr == D2DERR_RECREATE_TARGET) {
-            D2D_DestroyRenderTarget(vd);
-            D2D_CreateRenderTarget(vd);
-        }
-    }
-
-    picture_Release(picture);
-    VLC_UNUSED(subpicture);
-
-    CommonDisplay(vd);
-}
-
- /**
-  * Control event handler
-  */
-static int Control(vout_display_t *vd, int query, va_list args)
-{
-    return CommonControl(vd, query, args);
-}
-
-/**
- * Handles surface management
- * ID2D1RenderTargets cannot be resized and must be recreated
- */
-static void Manage(vout_display_t *vd)
-{
-    vout_display_sys_t *sys = vd->sys;
-
-    CommonManage(vd);
-
-    if (sys->changes & DX_POSITION_CHANGE) {
-        D2D_ResizeRenderTarget(vd);
-        sys->changes &= ~DX_POSITION_CHANGE;
-    }
-}
-
-/**
- * Creates a ID2D1HwndRenderTarget and associated ID2D1Bitmap
- */
-static int D2D_CreateRenderTarget(vout_display_t *vd)
-{
-    vout_display_sys_t *sys = vd->sys;
-
-    sys->d2_render_target = NULL;
-
-    D2D1_PIXEL_FORMAT pf = {
-        DXGI_FORMAT_B8G8R8A8_UNORM,
-        D2D1_ALPHA_MODE_IGNORE
-    };
-
-    D2D1_RENDER_TARGET_PROPERTIES rtp = {
-        D2D1_RENDER_TARGET_TYPE_DEFAULT,
-        pf,
-        0,
-        0,
-        D2D1_RENDER_TARGET_USAGE_NONE,
-        D2D1_FEATURE_LEVEL_DEFAULT
-    };
-
-    D2D1_SIZE_U size = {
-        sys->rect_dest.right - sys->rect_dest.left,
-        sys->rect_dest.bottom - sys->rect_dest.top
-    };
-
-    D2D1_HWND_RENDER_TARGET_PROPERTIES hrtp = {
-        sys->hvideownd,
-        size,
-        D2D1_PRESENT_OPTIONS_IMMEDIATELY /* this might need fiddling */
-    };
-
-    HRESULT hr  = ID2D1Factory_CreateHwndRenderTarget(sys->d2_factory,
-                                                      &rtp,
-                                                      &hrtp,
-                                                      &sys->d2_render_target);
-    if (hr != S_OK) {
-        msg_Err(vd, "Cannot create render target (hvideownd = 0x%x, width = %d, height = %d, pf.format = %d, hr = 0x%x)!",
-                (unsigned)hrtp.hwnd, hrtp.pixelSize.width,
-                hrtp.pixelSize.height, pf.format, (unsigned)hr);
-
-        sys->d2_render_target = NULL;
-
-        return VLC_EGENERIC;
-    }
-
-    FLOAT dpi_x, dpi_y;
-
-    ID2D1Factory_GetDesktopDpi(sys->d2_factory,
-                               &dpi_x,
-                               &dpi_y);
-
-    D2D1_BITMAP_PROPERTIES bp = {
-        pf,
-        dpi_x,
-        dpi_y
-    };
-
-    D2D1_SIZE_U bitmap_size = {
-        vd->fmt.i_visible_width,
-        vd->fmt.i_visible_height
-    };
-
-    hr = ID2D1HwndRenderTarget_CreateBitmap(sys->d2_render_target,
-                                            bitmap_size,
-                                            NULL,
-                                            0,
-                                            &bp,
-                                            &sys->d2_bitmap);
-    if (hr != S_OK) {
-        msg_Err(vd, "Failed to create bitmap (hr = 0x%x)!", (unsigned)hr);
-
-        sys->d2_bitmap = NULL;
-        D2D_DestroyRenderTarget(vd);
-
-        return VLC_EGENERIC;
-    }
-
-#ifndef NDEBUG
-    msg_Dbg(vd, "Render trgt dbg: dpi = %f, render_target = %p, bitmap = %p",
-            dpi_x, (void *)sys->d2_render_target, (void *)sys->d2_bitmap);
-#endif
-
-    return VLC_SUCCESS;
-}
-
-/**
- * Resizes a ID2D1HWndRenderTarget
- */
-static void D2D_ResizeRenderTarget(vout_display_t *vd)
-{
-    vout_display_sys_t *sys = vd->sys;
-
-    D2D1_SIZE_U size = {
-        sys->rect_dest.right - sys->rect_dest.left,
-        sys->rect_dest.bottom - sys->rect_dest.top
-    };
-
-    HRESULT hr  = ID2D1HwndRenderTarget_Resize(sys->d2_render_target, &size);
-    if (hr != S_OK)
-        msg_Err(vd, "Cannot resize render target (width = %d, height = %d, hr = 0x%x)!",
-                size.width, size.height, (unsigned)hr);
-}
-
-/**
- * Cleans up ID2D1HwndRenderTarget and ID2D1Bitmap
- */
-static void D2D_DestroyRenderTarget(vout_display_t *vd)
-{
-    vout_display_sys_t *sys = vd->sys;
-
-    if (sys->d2_render_target) {
-        ID2D1HwndRenderTarget_Release(sys->d2_render_target);
-        sys->d2_render_target = NULL;
-    }
-
-    if (sys->d2_bitmap) {
-        ID2D1Bitmap_Release(sys->d2_bitmap);
-        sys->d2_bitmap = NULL;
-    }
-
-#ifndef NDEBUG
-    msg_Dbg(vd, "Destroyed");
-#endif
-}
index cfcc12c..2c42699 100644 (file)
@@ -1162,7 +1162,6 @@ modules/video_output/glx.c
 modules/video_output/ios2.m
 modules/video_output/kva.c
 modules/video_output/macosx.m
-modules/video_output/win32/direct2d.c
 modules/video_output/win32/direct3d9.c
 modules/video_output/win32/direct3d11.c
 modules/video_output/win32/directdraw.c