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