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