xref: /OK3568_Linux_fs/buildroot/package/vlc/0007-Add-support-for-freerdp2.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 3780bbb20bf35aa8f21ac672da3f0c5f408468e9 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Bernd Kuhls <bernd.kuhls@t-online.de>
3*4882a593SmuzhiyunDate: Thu, 16 Aug 2018 12:27:40 +0200
4*4882a593SmuzhiyunSubject: [PATCH] Add support for freerdp2
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunDownloaded from
7*4882a593Smuzhiyunhttps://gitweb.gentoo.org/repo/gentoo.git/tree/media-video/vlc/files/vlc-2.2.8-freerdp-2.patch
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun configure.ac         |  2 +-
12*4882a593Smuzhiyun modules/access/rdp.c | 51 ++++++++++++++-------------------------------------
13*4882a593Smuzhiyun 2 files changed, 15 insertions(+), 38 deletions(-)
14*4882a593Smuzhiyun
15*4882a593Smuzhiyundiff --git a/configure.ac b/configure.ac
16*4882a593Smuzhiyunindex bfe43512a2..4808b8becf 100644
17*4882a593Smuzhiyun--- a/configure.ac
18*4882a593Smuzhiyun+++ b/configure.ac
19*4882a593Smuzhiyun@@ -1992,7 +1992,7 @@ PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client su
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun dnl  RDP/Remote Desktop access module
22*4882a593Smuzhiyun dnl
23*4882a593Smuzhiyun-PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
24*4882a593Smuzhiyun+PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp2 >= 1.0.1], (RDP/Remote Desktop client support) )
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun dnl
27*4882a593Smuzhiyun dnl  Real RTSP plugin
28*4882a593Smuzhiyundiff --git a/modules/access/rdp.c b/modules/access/rdp.c
29*4882a593Smuzhiyunindex 2992090219..49986f5da9 100644
30*4882a593Smuzhiyun--- a/modules/access/rdp.c
31*4882a593Smuzhiyun+++ b/modules/access/rdp.c
32*4882a593Smuzhiyun@@ -45,18 +45,6 @@
33*4882a593Smuzhiyun # include <freerdp/version.h>
34*4882a593Smuzhiyun #endif
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun-#if !defined(FREERDP_VERSION_MAJOR) || \
37*4882a593Smuzhiyun-    (defined(FREERDP_VERSION_MAJOR) && !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1)))
38*4882a593Smuzhiyun-# define SoftwareGdi sw_gdi
39*4882a593Smuzhiyun-# define Fullscreen fullscreen
40*4882a593Smuzhiyun-# define ServerHostname hostname
41*4882a593Smuzhiyun-# define Username username
42*4882a593Smuzhiyun-# define Password password
43*4882a593Smuzhiyun-# define ServerPort port
44*4882a593Smuzhiyun-# define EncryptionMethods encryption
45*4882a593Smuzhiyun-# define ContextSize context_size
46*4882a593Smuzhiyun-#endif
47*4882a593Smuzhiyun-
48*4882a593Smuzhiyun #include <errno.h>
49*4882a593Smuzhiyun #ifdef HAVE_POLL
50*4882a593Smuzhiyun # include <poll.h>
51*4882a593Smuzhiyun@@ -144,6 +132,7 @@ static void desktopResizeHandler( rdpContext *p_context )
52*4882a593Smuzhiyun     vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;
53*4882a593Smuzhiyun     demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
54*4882a593Smuzhiyun     rdpGdi *p_gdi = p_context->gdi;
55*4882a593Smuzhiyun+    unsigned bytesPerPixel;
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun     if ( p_sys->es )
58*4882a593Smuzhiyun     {
59*4882a593Smuzhiyun@@ -153,17 +142,21 @@ static void desktopResizeHandler( rdpContext *p_context )
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun     /* Now init and fill es format */
62*4882a593Smuzhiyun     vlc_fourcc_t i_chroma;
63*4882a593Smuzhiyun-    switch( p_gdi->bytesPerPixel )
64*4882a593Smuzhiyun+    switch( p_gdi->dstFormat )
65*4882a593Smuzhiyun     {
66*4882a593Smuzhiyun         default:
67*4882a593Smuzhiyun-        case 16:
68*4882a593Smuzhiyun+            msg_Dbg( p_vlccontext->p_demux, "unhandled dstFormat %x bpp", p_gdi->dstFormat);
69*4882a593Smuzhiyun+        case PIXEL_FORMAT_BGR16:
70*4882a593Smuzhiyun             i_chroma = VLC_CODEC_RGB16;
71*4882a593Smuzhiyun+            bytesPerPixel = 16;
72*4882a593Smuzhiyun             break;
73*4882a593Smuzhiyun-        case 24:
74*4882a593Smuzhiyun+        case PIXEL_FORMAT_BGR24:
75*4882a593Smuzhiyun             i_chroma = VLC_CODEC_RGB24;
76*4882a593Smuzhiyun+            bytesPerPixel = 24;
77*4882a593Smuzhiyun             break;
78*4882a593Smuzhiyun-        case 32:
79*4882a593Smuzhiyun+        case PIXEL_FORMAT_BGRA32:
80*4882a593Smuzhiyun             i_chroma = VLC_CODEC_RGB32;
81*4882a593Smuzhiyun+            bytesPerPixel = 32;
82*4882a593Smuzhiyun             break;
83*4882a593Smuzhiyun     }
84*4882a593Smuzhiyun     es_format_t fmt;
85*4882a593Smuzhiyun@@ -176,7 +169,7 @@ static void desktopResizeHandler( rdpContext *p_context )
86*4882a593Smuzhiyun     fmt.video.i_height = p_gdi->height;
87*4882a593Smuzhiyun     fmt.video.i_frame_rate_base = 1000;
88*4882a593Smuzhiyun     fmt.video.i_frame_rate = 1000 * p_sys->f_fps;
89*4882a593Smuzhiyun-    p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * p_gdi->bytesPerPixel;
90*4882a593Smuzhiyun+    p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * bytesPerPixel;
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun     if ( p_sys->p_block )
93*4882a593Smuzhiyun         p_sys->p_block = block_Realloc( p_sys->p_block, 0, p_sys->i_framebuffersize );
94*4882a593Smuzhiyun@@ -237,28 +230,19 @@ static bool postConnectHandler( freerdp *p_instance )
95*4882a593Smuzhiyun     vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun     msg_Dbg( p_vlccontext->p_demux, "connected to desktop %dx%d (%d bpp)",
98*4882a593Smuzhiyun-#if defined(FREERDP_VERSION_MAJOR) && (FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1))
99*4882a593Smuzhiyun              p_instance->settings->DesktopWidth,
100*4882a593Smuzhiyun              p_instance->settings->DesktopHeight,
101*4882a593Smuzhiyun              p_instance->settings->ColorDepth
102*4882a593Smuzhiyun-#else
103*4882a593Smuzhiyun-             p_instance->settings->width,
104*4882a593Smuzhiyun-             p_instance->settings->height,
105*4882a593Smuzhiyun-             p_instance->settings->color_depth
106*4882a593Smuzhiyun-#endif
107*4882a593Smuzhiyun              );
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun     p_instance->update->DesktopResize = desktopResizeHandler;
110*4882a593Smuzhiyun     p_instance->update->BeginPaint = beginPaintHandler;
111*4882a593Smuzhiyun     p_instance->update->EndPaint = endPaintHandler;
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun-    gdi_init( p_instance,
114*4882a593Smuzhiyun-                CLRBUF_16BPP |
115*4882a593Smuzhiyun-#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \
116*4882a593Smuzhiyun-    !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2))
117*4882a593Smuzhiyun-                CLRBUF_24BPP |
118*4882a593Smuzhiyun-#endif
119*4882a593Smuzhiyun-                CLRBUF_32BPP, NULL );
120*4882a593Smuzhiyun+    if ( p_instance->settings->ColorDepth > 16 )
121*4882a593Smuzhiyun+        gdi_init( p_instance, PIXEL_FORMAT_XRGB32);
122*4882a593Smuzhiyun+    else
123*4882a593Smuzhiyun+        gdi_init( p_instance, PIXEL_FORMAT_RGB16);
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun     desktopResizeHandler( p_instance->context );
126*4882a593Smuzhiyun     return true;
127*4882a593Smuzhiyun@@ -432,10 +416,6 @@ static int Open( vlc_object_t *p_this )
128*4882a593Smuzhiyun     if ( p_sys->f_fps <= 0 ) p_sys->f_fps = 1.0;
129*4882a593Smuzhiyun     p_sys->i_frame_interval = 1000000 / p_sys->f_fps;
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2
132*4882a593Smuzhiyun-    freerdp_channels_global_init();
133*4882a593Smuzhiyun-#endif
134*4882a593Smuzhiyun-
135*4882a593Smuzhiyun     p_sys->p_instance = freerdp_new();
136*4882a593Smuzhiyun     if ( !p_sys->p_instance )
137*4882a593Smuzhiyun     {
138*4882a593Smuzhiyun@@ -508,9 +488,6 @@ static void Close( vlc_object_t *p_this )
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun     freerdp_disconnect( p_sys->p_instance );
141*4882a593Smuzhiyun     freerdp_free( p_sys->p_instance );
142*4882a593Smuzhiyun-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2
143*4882a593Smuzhiyun-    freerdp_channels_global_uninit();
144*4882a593Smuzhiyun-#endif
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun     if ( p_sys->p_block )
147*4882a593Smuzhiyun         block_Release( p_sys->p_block );
148*4882a593Smuzhiyun--
149*4882a593Smuzhiyun2.14.4
150*4882a593Smuzhiyun
151