Branch: ulab-next-nosound

2a02ed63 2019-03-17 05:34:02 Jay Sorg
X11rdp: xrandr change for multimon
M xorg/X11R7.6/rdp/rdprandr.c

xorg/X11R7.6/rdp/rdprandr.c

diff --git a/xorg/X11R7.6/rdp/rdprandr.c b/xorg/X11R7.6/rdp/rdprandr.c
index 46c4908..2a040a9 100644
--- a/xorg/X11R7.6/rdp/rdprandr.c
+++ b/xorg/X11R7.6/rdp/rdprandr.c
@@ -439,11 +439,13 @@
         }
     }
 
+#if 0
     for (index = 0; index < pRRScrPriv->numOutputs; index++)
     {
         RROutputSetCrtcs(pRRScrPriv->outputs[index], pRRScrPriv->crtcs,
                          pRRScrPriv->numCrtcs);
     }
+#endif
 
     return 0;
 }
627efbca 2019-03-17 05:34:02 Jay Sorg
chansrv: added mp3 compression from Speidy
M configure.ac
M sesman/chansrv/Makefile.am
M sesman/chansrv/sound.c
M sesman/chansrv/wave-format-server.txt

configure.ac

diff --git a/configure.ac b/configure.ac
index 50eff68..ac1d0ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -107,6 +107,10 @@
               [Build opus(audio codec) (default: no)]),
               [], [enable_opus=no])
 AM_CONDITIONAL(XRDP_OPUS, [test x$enable_opus = xyes])
+AC_ARG_ENABLE(mp3lame, AS_HELP_STRING([--enable-mp3lame],
+              [Build lame mp3(audio codec) (default: no)]),
+              [], [enable_mp3lame=no])
+AM_CONDITIONAL(XRDP_MP3LAME, [test x$enable_mp3lame = xyes])
 
 # checking for openssl
 AC_CHECK_HEADER([openssl/rc4.h], [],
@@ -179,6 +183,13 @@
     [AC_MSG_ERROR([please install libopus-dev or opus-devel])])
 fi
 
+# checking for lame mp3
+if test "x$enable_mp3lame" = "xyes"
+then
+  AC_CHECK_HEADER([lame/lame.h], [],
+    [AC_MSG_ERROR([please install libmp3lame-dev or lamemp3-devel])])
+fi
+
 # checking for TurboJPEG
 if test "x$enable_tjpeg" = "xyes"
 then

sesman/chansrv/Makefile.am

diff --git a/sesman/chansrv/Makefile.am b/sesman/chansrv/Makefile.am
index 45597e1..c4cd1a3 100644
--- a/sesman/chansrv/Makefile.am
+++ b/sesman/chansrv/Makefile.am
@@ -13,6 +13,11 @@
 EXTRA_LIBS += -lopus
 endif
 
+if XRDP_MP3LAME
+EXTRA_DEFINES += -DXRDP_MP3LAME
+EXTRA_LIBS += -lmp3lame
+endif
+
 AM_CPPFLAGS = \
   -DXRDP_CFG_PATH=\"${sysconfdir}/xrdp\" \
   -DXRDP_SBIN_PATH=\"${sbindir}\" \

sesman/chansrv/sound.c

diff --git a/sesman/chansrv/sound.c b/sesman/chansrv/sound.c
index 6610865..e2b6f53 100644
--- a/sesman/chansrv/sound.c
+++ b/sesman/chansrv/sound.c
@@ -35,6 +35,11 @@
 static OpusEncoder *g_opus_encoder = 0;
 #endif
 
+#if defined(XRDP_MP3LAME)
+#include <lame/lame.h>
+static lame_global_flags *g_lame_encoder = 0;
+#endif
+
 extern int g_rdpsnd_chan_id;    /* in chansrv.c */
 extern int g_display_num;       /* in chansrv.c */
 
@@ -72,12 +77,12 @@
     int nBlockAlign;
     int wBitsPerSample;
     int cbSize;
-    char *data;
+    tui8 *data;
 };
 
 /* output formats */
 
-static char g_pcm_22050_data[] = { 0 };
+static tui8 g_pcm_22050_data[] = { 0 };
 static struct xr_wave_format_ex g_pcm_22050 =
 {
     1,               /* wFormatTag - WAVE_FORMAT_PCM */
@@ -90,7 +95,7 @@
     g_pcm_22050_data /* data */
 };
 
-static char g_pcm_44100_data[] = { 0 };
+static tui8 g_pcm_44100_data[] = { 0 };
 static struct xr_wave_format_ex g_pcm_44100 =
 {
     1,               /* wFormatTag - WAVE_FORMAT_PCM */
@@ -104,7 +109,7 @@
 };
 
 #if defined(XRDP_OPUS)
-static char g_opus_44100_data[] = { 0 };
+static tui8 g_opus_44100_data[] = { 0 };
 static struct xr_wave_format_ex g_opus_44100 =
 {
     0x0069,           /* wFormatTag - WAVE_FORMAT_OPUS */
@@ -118,26 +123,39 @@
 };
 #endif
 
-
-#if defined(XRDP_OPUS)
-#define SND_NUM_OUTP_FORMATS 3
-static struct xr_wave_format_ex *g_wave_outp_formats[SND_NUM_OUTP_FORMATS] =
+#if defined(XRDP_MP3LAME)
+static tui8 g_mp3lame_44100_data[] = { 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x71, 0x05 };
+static struct xr_wave_format_ex g_mp3lame_44100 =
 {
-    &g_pcm_44100,
-    &g_pcm_22050,
-    &g_opus_44100
-};
-#else
-#define SND_NUM_OUTP_FORMATS 2
-static struct xr_wave_format_ex *g_wave_outp_formats[SND_NUM_OUTP_FORMATS] =
-{
-    &g_pcm_44100,
-    &g_pcm_22050
+    0x0055,              /* wFormatTag - WAVE_FORMAT_MPEGLAYER3 */
+    2,                   /* num of channels */
+    44100,               /* samples per sec */
+    176400,              /* avg bytes per sec */
+    4,                   /* block align */
+    0,                   /* bits per sample */
+    12,                  /* data size */
+    g_mp3lame_44100_data /* data */
 };
 #endif
 
+static struct xr_wave_format_ex *g_wave_outp_formats[] =
+{
+    &g_pcm_44100,
+    &g_pcm_22050,
+#if defined(XRDP_OPUS)
+    &g_opus_44100,
+#endif
+#if defined(XRDP_MP3LAME)
+    &g_mp3lame_44100,
+#endif
+    0
+};
+
 static int g_client_does_opus = 0;
 static int g_client_opus_index = 0;
+
+static int g_client_does_mp3lame = 0;
+static int g_client_mp3lame_index = 0;
 
 /* index into list from client */
 static int g_current_client_format_index = 0;
@@ -147,7 +165,7 @@
 
 /* input formats */
 
-static char g_pcm_inp_22050_data[] = { 0 };
+static tui8 g_pcm_inp_22050_data[] = { 0 };
 static struct xr_wave_format_ex g_pcm_inp_22050 =
 {
     1,               /* wFormatTag - WAVE_FORMAT_PCM */
@@ -160,7 +178,7 @@
     g_pcm_inp_22050_data /* data */
 };
 
-static char g_pcm_inp_44100_data[] = { 0 };
+static tui8 g_pcm_inp_44100_data[] = { 0 };
 static struct xr_wave_format_ex g_pcm_inp_44100 =
 {
     1,               /* wFormatTag - WAVE_FORMAT_PCM */
@@ -173,11 +191,11 @@
     g_pcm_inp_44100_data /* data */
 };
 
-#define SND_NUM_INP_FORMATS 2
-static struct xr_wave_format_ex *g_wave_inp_formats[SND_NUM_INP_FORMATS] =
+static struct xr_wave_format_ex *g_wave_inp_formats[] =
 {
     &g_pcm_inp_44100,
-    &g_pcm_inp_22050
+    &g_pcm_inp_22050,
+    0
 };
 
 static int g_client_input_format_index = 0;
@@ -204,7 +222,12 @@
     struct stream *s;
     int bytes;
     int index;
+    int num_formats;
     char *size_ptr;
+
+    num_formats = sizeof(g_wave_outp_formats) /
+                  sizeof(g_wave_outp_formats[0]) - 1;
+    LOG(10, ("sound_send_server_output_formats: num_formats %d", num_formats));
 
     make_stream(s);
     init_stream(s, 8182);
@@ -215,9 +238,9 @@
     out_uint32_le(s, 0);                    /* dwVolume */
     out_uint32_le(s, 0);                    /* dwPitch */
     out_uint16_le(s, 0);                    /* wDGramPort */
-    out_uint16_le(s, SND_NUM_OUTP_FORMATS); /* wNumberOfFormats */
+    out_uint16_le(s, num_formats);          /* wNumberOfFormats */
     out_uint8(s, g_cBlockNo);               /* cLastBlockConfirmed */
-    out_uint16_le(s, 2);                    /* wVersion */
+    out_uint16_le(s, 5);                    /* wVersion */
     out_uint8(s, 0);                        /* bPad */
 
     /* sndFormats */
@@ -239,7 +262,7 @@
         00 00
     */
 
-    for (index = 0; index < SND_NUM_OUTP_FORMATS; index++)
+    for (index = 0; index < num_formats; index++)
     {
         out_uint16_le(s, g_wave_outp_formats[index]->wFormatTag);
         out_uint16_le(s, g_wave_outp_formats[index]->nChannels);
@@ -341,8 +364,16 @@
 
     if (wFormatTag == 0x0069)
     {
+        LOG(0, ("wFormatTag, opus"));
         g_client_does_opus = 1;
         g_client_opus_index = aindex;
+        g_bbuf_size = 11520;
+    }
+    else if (wFormatTag == 0x0055)
+    {
+        LOG(0, ("wFormatTag, mp3"));
+        g_client_does_mp3lame = 1;
+        g_client_mp3lame_index = aindex;
         g_bbuf_size = 11520;
     }
 
** Diff limit reached (max: 250 lines) **
99b1e41b 2019-03-17 05:34:02 Kentaro Hayashi
chansrv: avoid chansrv SEGV when xinode is NULL

When xfuse_create_file_in_xrdp_fs is failed, it returns NULL.

Without this fix, xinode->size causes SEGV, so implementation is changed
to return -1 and check the return value in caller.
M sesman/chansrv/chansrv_fuse.c
M sesman/chansrv/clipboard_file.c
** Diff limit reached (max: 250 lines) **
68b3aec9 2019-03-17 05:34:02 Timothy Pearson
Put Raptor fork back under GPL
M COPYING
** Diff limit reached (max: 250 lines) **
17bd5500 2019-03-17 05:34:02 Timothy Pearson
Minor modifications for Debian
A debian_configure
M sesman/startwm.sh
** Diff limit reached (max: 250 lines) **
c09eaf54 2019-03-17 05:34:02 Timothy Pearson
Fix xrdp script on Debian
M instfiles/xrdp.sh
** Diff limit reached (max: 250 lines) **
ffeda4fd 2019-03-17 05:34:02 Timothy Pearson
Add preliminary Raptor session management
A raptorsmiface/Makefile.am
A raptorsmiface/libraptorsmiface.c
A raptorsmiface/libraptorsmiface.h
M Makefile.am
M configure.ac
M sesman/Makefile.am
M sesman/chansrv/Makefile.am
M sesman/chansrv/chansrv.c
M sesman/sesman.ini
M sesman/session.c
M xrdp/Makefile.am
M xrdp/xrdp.ini
M xrdp/xrdp_mm.c
M xrdp/xrdp_types.h
** Diff limit reached (max: 250 lines) **
46a8e637 2019-03-17 05:34:02 Timothy Pearson
Fix a number of problems
System is now mostly stabilized
M common/defines.h
M common/trans.c
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M sesman/chansrv/chansrv.c
M sesman/scp_v0.c
M sesman/scp_v1.c
M sesman/session.c
M xrdp/xrdp_mm.c
M xup/xup.c
** Diff limit reached (max: 250 lines) **
d385c08f 2019-03-17 05:34:02 Timothy Pearson
Add server/group mapping
M raptorsmiface/libraptorsmiface.c
M xrdp/xrdp_mm.c
** Diff limit reached (max: 250 lines) **
36c7edbf 2019-03-17 05:34:02 Timothy Pearson
Partially fix immediate exit after login
M xup/xup.c
** Diff limit reached (max: 250 lines) **
195230be 2019-03-17 05:34:02 Timothy Pearson
Add hack to support blank cursors for now
M xorg/X11R7.6/rdp/rdpinput.c
M xup/xup.c
** Diff limit reached (max: 250 lines) **
9f6da51a 2019-03-17 05:34:02 Timothy Pearson
Update branding
M xrdp/ad24b.bmp
M xrdp/ad256.bmp
M xrdp/xrdp.ini
M xrdp/xrdp24b.bmp
M xrdp/xrdp256.bmp
M xrdp/xrdp_login_wnd.c
M xrdp/xrdp_logo.bmp
** Diff limit reached (max: 250 lines) **
3abfd232 2019-03-17 05:34:02 Timothy Pearson
Use a black login background
M xrdp/xrdp.ini
M xrdp/xrdp24b.bmp
M xrdp/xrdp256.bmp
** Diff limit reached (max: 250 lines) **
ce82d1f1 2019-03-17 05:34:02 Timothy Pearson
Add ability to recover somewhat from a dead master node
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
1731a713 2019-03-17 05:34:02 Timothy Pearson
Add master node session recovery support
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M sesman/scp_v0.c
M sesman/scp_v1.c
M sesman/session.c
** Diff limit reached (max: 250 lines) **
0607f42f 2019-03-17 05:34:02 Timothy Pearson
Add additional debug statement
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
a3c2cb3b 2019-03-17 05:34:02 Timothy Pearson
Fix merge
M sesman/scp_v0.c
M sesman/session.c
** Diff limit reached (max: 250 lines) **
a2d4f91e 2019-03-17 05:34:02 Timothy Pearson
Add rudimentary sound support
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M sesman/chansrv/chansrv.c
M sesman/chansrv/clipboard.c
M sesman/chansrv/sound.c
** Diff limit reached (max: 250 lines) **
c12cbea6 2019-03-17 05:34:03 Timothy Pearson
Add statistics reporting
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M xrdp/xrdp_types.h
** Diff limit reached (max: 250 lines) **
d9d774c2 2019-03-17 05:34:03 Timothy Pearson
Add additional statistics reporting
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M xrdp/xrdp.c
** Diff limit reached (max: 250 lines) **
18efbc17 2019-03-17 05:34:03 Timothy Pearson
Add MySQL database skeleton file
A database/mysql/remotelab_sm_database.sql
** Diff limit reached (max: 250 lines) **
1978692f 2019-03-17 05:34:03 Timothy Pearson
Add database configuration options to main config file
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
** Diff limit reached (max: 250 lines) **
ffcc4ab3 2019-03-17 05:34:03 Timothy Pearson
Fix non-root-user display server startup failure
Transfer and clean up Kerberos ticket on login and logout
Remove spurious debugging messages
M instfiles/pam.d/xrdp-sesman.common
M raptorsmiface/libraptorsmiface.c
M sesman/env.c
M xrdp/xrdp_login_wnd.c
** Diff limit reached (max: 250 lines) **
4744512e 2019-03-17 05:34:03 Timothy Pearson
Fix sporadic xrdp-sesman crash on session initiation
Fix a number of memory leaks
Fix access to freed memory
Fix invalid function return values
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
** Diff limit reached (max: 250 lines) **
643da9e1 2019-03-17 05:34:03 Timothy Pearson
Download installation files from correct locations
Keep track of arbiter(s) in use per connection
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
** Diff limit reached (max: 250 lines) **
1117f8b3 2019-03-17 05:34:03 Timothy Pearson
Second part of prior commit
M database/mysql/remotelab_sm_database.sql
** Diff limit reached (max: 250 lines) **
8fca4e41 2019-03-17 05:34:03 Timothy Pearson
Update for OpenSSL 1.1
M common/ssl_calls.c
** Diff limit reached (max: 250 lines) **
b46473e2 2019-03-17 05:34:03 Timothy Pearson
Update sources to build on ppc64el
A xorg/X11R7.6/libdrm-2.4.26.patch
M xorg/X11R7.6/buildx.sh
** Diff limit reached (max: 250 lines) **
7d0cd0c4 2019-03-17 05:34:03 Timothy Pearson
Fix endianness checks on ppc64
M common/arch.h
** Diff limit reached (max: 250 lines) **
0aa28343 2019-03-17 05:34:03 Timothy Pearson
Don't try connecting to remote node if preliminary node allocation has failed for any reason
M sesman/session.c
** Diff limit reached (max: 250 lines) **
0e149048 2019-03-17 05:34:03 Timothy Pearson
Add debug warning when maximum session limit is hit for a specified user group
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
31a76fc0 2019-03-17 05:34:03 Timothy Pearson
Fix a few situations where process output was corrupted with existing uncleard buffer data
This fixes session termination not being marked in the database
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
763641b2 2019-03-17 05:34:03 Timothy Pearson
Fix a couple of additional ppc64 endianness / alignment issues
A xorg/X11R7.6/xorg-server-1.9.3.patch
M common/arch.h
M xorg/X11R7.6/rdp/rdp.h
** Diff limit reached (max: 250 lines) **
7e78d6c7 2019-03-17 05:34:03 Timothy Pearson
Update management network range
M raptorsmiface/libraptorsmiface.h
** Diff limit reached (max: 250 lines) **
5eadc4e7 2019-03-17 05:34:03 Timothy Pearson
Always show log during connection
M xrdp/xrdp_wm.c
** Diff limit reached (max: 250 lines) **
e284e1c0 2019-03-17 05:34:03 Timothy Pearson
Disable SHM access between XUP and Xorg as they are not running on the same machine
M sesman/session.c
M xorg/X11R7.6/rdp/rdpup.c
** Diff limit reached (max: 250 lines) **
4cddff12 2019-03-17 05:34:03 Timothy Pearson
Enhance debug logging of SHM related functions
M common/os_calls.c
M xup/xup.c
** Diff limit reached (max: 250 lines) **