Made CHANNEL_TSMF optional and deprecated.
authorArmin Novak <armin.novak@thincast.com>
Tue, 25 Feb 2020 14:21:16 +0000 (15:21 +0100)
committerArmin Novak <armin.novak@thincast.com>
Wed, 26 Feb 2020 12:56:43 +0000 (13:56 +0100)
20 files changed:
CMakeLists.txt
channels/tsmf/ChannelOptions.cmake
channels/tsmf/client/CMakeLists.txt
client/Sample/tf_channels.c
client/Sample/tf_freerdp.h
client/Wayland/wlf_channels.c
client/Wayland/wlf_channels.h
client/X11/CMakeLists.txt
client/X11/xf_channels.c
client/X11/xf_channels.h
client/X11/xf_client.c
client/X11/xfreerdp.h
client/common/cmdline.c
client/common/cmdline.h
client/common/test/TestClientChannels.c
cmake/ConfigOptions.cmake
config.h.in
include/freerdp/channels/tsmf.h
include/freerdp/client/tsmf.h
server/proxy/pf_channels.c

index 91f4906..51a104f 100644 (file)
@@ -730,14 +730,6 @@ set(VAAPI_FEATURE_TYPE "OPTIONAL")
 set(VAAPI_FEATURE_PURPOSE "multimedia")
 set(VAAPI_FEATURE_DESCRIPTION "VA-API hardware acceleration for video playback")
 
-set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL")
-set(GSTREAMER_0_10_FEATURE_PURPOSE "multimedia")
-set(GSTREAMER_0_10_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback, gstreamer 0.10 version")
-
-set(GSTREAMER_1_0_FEATURE_TYPE "RECOMMENDED")
-set(GSTREAMER_1_0_FEATURE_PURPOSE "multimedia")
-set(GSTREAMER_1_0_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback")
-
 set(IPP_FEATURE_TYPE "OPTIONAL")
 set(IPP_FEATURE_PURPOSE "performance")
 set(IPP_FEATURE_DESCRIPTION "Intel Integrated Performance Primitives library")
@@ -793,15 +785,12 @@ if(WIN32)
        set(PCSC_FEATURE_TYPE "DISABLED")
        set(FFMPEG_FEATURE_TYPE "DISABLED")
        set(VAAPI_FEATURE_TYPE "DISABLED")
-       set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED")
-       set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL")
        set(OPENSLES_FEATURE_TYPE "DISABLED")
 endif()
 
 if(APPLE)
        set(FFMPEG_FEATURE_TYPE "OPTIONAL")
        set(VAAPI_FEATURE_TYPE "DISABLED")
-       set(GSTREAMER_1_0_FEATURE_TYPE "OPTIONAL")
        set(X11_FEATURE_TYPE "OPTIONAL")
        set(WAYLAND_FEATURE_TYPE "DISABLED")
        set(OSS_FEATURE_TYPE "DISABLED")
@@ -811,8 +800,6 @@ if(APPLE)
                set(PULSE_FEATURE_TYPE "DISABLED")
                set(CUPS_FEATURE_TYPE "DISABLED")
                set(PCSC_FEATURE_TYPE "DISABLED")
-               set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED")
-               set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED")
        endif()
        set(OPENSLES_FEATURE_TYPE "DISABLED")
 endif()
@@ -842,8 +829,6 @@ if(ANDROID)
        set(PCSC_FEATURE_TYPE "DISABLED")
        set(FFMPEG_FEATURE_TYPE "DISABLED")
        set(VAAPI_FEATURE_TYPE "DISABLED")
-       set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED")
-       set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED")
        set(OPENSLES_FEATURE_TYPE "REQUIRED")
 endif()
 
@@ -864,9 +849,6 @@ find_feature(PCSC ${PCSC_FEATURE_TYPE} ${PCSC_FEATURE_PURPOSE} ${PCSC_FEATURE_DE
 
 find_feature(FFmpeg ${FFMPEG_FEATURE_TYPE} ${FFMPEG_FEATURE_PURPOSE} ${FFMPEG_FEATURE_DESCRIPTION})
 
-find_feature(GStreamer_0_10 ${GSTREAMER_0_10_FEATURE_TYPE} ${GSTREAMER_0_10_FEATURE_PURPOSE} ${GSTREAMER_0_10_FEATURE_DESCRIPTION})
-find_feature(GStreamer_1_0 ${GSTREAMER_1_0_FEATURE_TYPE} ${GSTREAMER_1_0_FEATURE_PURPOSE} ${GSTREAMER_1_0_FEATURE_DESCRIPTION})
-
 find_feature(JPEG ${JPEG_FEATURE_TYPE} ${JPEG_FEATURE_PURPOSE} ${JPEG_FEATURE_DESCRIPTION})
 find_feature(x264 ${X264_FEATURE_TYPE} ${X264_FEATURE_PURPOSE} ${X264_FEATURE_DESCRIPTION})
 find_feature(OpenH264 ${OPENH264_FEATURE_TYPE} ${OPENH264_FEATURE_PURPOSE} ${OPENH264_FEATURE_DESCRIPTION})
index b59578f..b5252ea 100644 (file)
@@ -1,6 +1,6 @@
 
 set(OPTION_DEFAULT OFF)
-set(OPTION_CLIENT_DEFAULT ON)
+set(OPTION_CLIENT_DEFAULT OFF)
 set(OPTION_SERVER_DEFAULT OFF)
 
 if(WIN32)
@@ -14,7 +14,7 @@ if(ANDROID)
 endif()
 
 define_channel_options(NAME "tsmf" TYPE "dynamic"
-       DESCRIPTION "Video Redirection Virtual Channel Extension"
+       DESCRIPTION "[DEPRECATED] Video Redirection Virtual Channel Extension"
        SPECIFICATIONS "[MS-RDPEV]"
        DEFAULT ${OPTION_DEFAULT})
 
index ee172fc..d7438de 100644 (file)
 
 define_channel_client("tsmf")
 
+message(DEPRECATION "TSMF channel is no longer maintained. Use [MS-RDPEVOR] (/video) instead.")
+
+set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL")
+set(GSTREAMER_0_10_FEATURE_PURPOSE "multimedia")
+set(GSTREAMER_0_10_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback, gstreamer 0.10 version")
+
+set(GSTREAMER_1_0_FEATURE_TYPE "RECOMMENDED")
+set(GSTREAMER_1_0_FEATURE_PURPOSE "multimedia")
+set(GSTREAMER_1_0_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback")
+
+if (WIN32)
+       set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED")
+       set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL")
+endif()
+if (APPLE)
+       set(GSTREAMER_1_0_FEATURE_TYPE "OPTIONAL")
+
+       if (IOS)
+               set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED")
+               set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED")
+       endif()
+endif()
+if (ANDROID)
+       set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED")
+       set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED")
+endif()
+
+find_feature(GStreamer_0_10 ${GSTREAMER_0_10_FEATURE_TYPE} ${GSTREAMER_0_10_FEATURE_PURPOSE} ${GSTREAMER_0_10_FEATURE_DESCRIPTION})
+find_feature(GStreamer_1_0 ${GSTREAMER_1_0_FEATURE_TYPE} ${GSTREAMER_1_0_FEATURE_PURPOSE} ${GSTREAMER_1_0_FEATURE_DESCRIPTION})
+
+if (WITH_GSTREAMER_0_10 AND GSTREAMER_0_10_FOUND)
+       add_definitions(-DWITH_GSTREAMER_0_10)
+endif()
+if (WITH_GSTREAMER_1_0 AND GSTREAMER_1_0_FOUND)
+       add_definitions(-DWITH_GSTREAMER_1_0)
+endif()
+
 set(${MODULE_PREFIX}_SRCS
        tsmf_audio.c
        tsmf_audio.h
index e26f29f..7119a1c 100644 (file)
@@ -25,7 +25,6 @@
 #include <freerdp/gdi/gfx.h>
 
 #include <freerdp/client/rdpei.h>
-#include <freerdp/client/tsmf.h>
 #include <freerdp/client/rail.h>
 #include <freerdp/client/cliprdr.h>
 #include <freerdp/client/rdpgfx.h>
@@ -75,9 +74,6 @@ void tf_OnChannelConnectedEventHandler(void* context, ChannelConnectedEventArgs*
        {
                tf->rdpei = (RdpeiClientContext*)e->pInterface;
        }
-       else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0)
-       {
-       }
        else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0)
        {
                gdi_graphics_pipeline_init(tf->context.gdi, (RdpgfxClientContext*)e->pInterface);
@@ -102,9 +98,6 @@ void tf_OnChannelDisconnectedEventHandler(void* context, ChannelDisconnectedEven
        {
                tf->rdpei = NULL;
        }
-       else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0)
-       {
-       }
        else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0)
        {
                gdi_graphics_pipeline_uninit(tf->context.gdi, (RdpgfxClientContext*)e->pInterface);
index de0580f..19e0cee 100644 (file)
@@ -23,7 +23,6 @@
 
 #include <freerdp/freerdp.h>
 #include <freerdp/client/rdpei.h>
-#include <freerdp/client/tsmf.h>
 #include <freerdp/client/rail.h>
 #include <freerdp/client/cliprdr.h>
 #include <freerdp/client/rdpgfx.h>
index ff84fc2..9c49584 100644 (file)
@@ -105,9 +105,6 @@ void wlf_OnChannelConnectedEventHandler(void* context, ChannelConnectedEventArgs
        {
                wlf->rdpei = (RdpeiClientContext*)e->pInterface;
        }
-       else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0)
-       {
-       }
        else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0)
        {
                gdi_graphics_pipeline_init(wlf->context.gdi, (RdpgfxClientContext*)e->pInterface);
@@ -137,9 +134,6 @@ void wlf_OnChannelDisconnectedEventHandler(void* context, ChannelDisconnectedEve
        {
                wlf->rdpei = NULL;
        }
-       else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0)
-       {
-       }
        else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0)
        {
                gdi_graphics_pipeline_uninit(wlf->context.gdi, (RdpgfxClientContext*)e->pInterface);
index d4469cb..c56be6a 100644 (file)
@@ -23,7 +23,6 @@
 #include <freerdp/freerdp.h>
 #include <freerdp/client/channels.h>
 #include <freerdp/client/rdpei.h>
-#include <freerdp/client/tsmf.h>
 #include <freerdp/client/rail.h>
 #include <freerdp/client/cliprdr.h>
 #include <freerdp/client/rdpgfx.h>
index 48e5af9..869652c 100644 (file)
@@ -29,9 +29,7 @@ set(${MODULE_PREFIX}_SRCS
        xf_gfx.c
        xf_gfx.h
        xf_rail.c
-       xf_rail.h
-       xf_tsmf.c
-       xf_tsmf.h
+       xf_rail.h       
        xf_input.c
        xf_input.h
        xf_event.c
@@ -59,6 +57,12 @@ set(${MODULE_PREFIX}_SRCS
        xf_client.c
        xf_client.h)
 
+if (CHANNEL_TSMF_CLIENT)
+       set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS}
+       xf_tsmf.c
+       xf_tsmf.h)
+endif()
+
 if(WITH_CLIENT_INTERFACE)
        if(CLIENT_INTERFACE_SHARED)
                add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
index 4241a1d..8090b9b 100644 (file)
@@ -28,7 +28,9 @@
 #include "xfreerdp.h"
 
 #include "xf_gfx.h"
+#if defined(CHANNEL_TSMF_CLIENT)
 #include "xf_tsmf.h"
+#endif
 #include "xf_rail.h"
 #include "xf_cliprdr.h"
 #include "xf_disp.h"
@@ -42,10 +44,12 @@ void xf_OnChannelConnectedEventHandler(void* context, ChannelConnectedEventArgs*
        {
                xfc->rdpei = (RdpeiClientContext*)e->pInterface;
        }
+#if defined(CHANNEL_TSMF_CLIENT)
        else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0)
        {
                xf_tsmf_init(xfc, (TsmfClientContext*)e->pInterface);
        }
+#endif
        else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0)
        {
                xf_graphics_pipeline_init(xfc, (RdpgfxClientContext*)e->pInterface);
@@ -93,10 +97,12 @@ void xf_OnChannelDisconnectedEventHandler(void* context, ChannelDisconnectedEven
        {
                xf_disp_uninit(xfc->xfDisp, (DispClientContext*)e->pInterface);
        }
+#if defined(CHANNEL_TSMF_CLIENT)
        else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0)
        {
                xf_tsmf_uninit(xfc, (TsmfClientContext*)e->pInterface);
        }
+#endif
        else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0)
        {
                xf_graphics_pipeline_uninit(xfc, (RdpgfxClientContext*)e->pInterface);
index 8a8c3b1..c12d823 100644 (file)
@@ -23,7 +23,6 @@
 #include <freerdp/freerdp.h>
 #include <freerdp/client/channels.h>
 #include <freerdp/client/rdpei.h>
-#include <freerdp/client/tsmf.h>
 #include <freerdp/client/rail.h>
 #include <freerdp/client/cliprdr.h>
 #include <freerdp/client/rdpgfx.h>
index 783cd7b..df0ad23 100644 (file)
@@ -89,7 +89,9 @@
 
 #include "xf_gdi.h"
 #include "xf_rail.h"
+#if defined(CHANNEL_TSMF_CLIENT)
 #include "xf_tsmf.h"
+#endif
 #include "xf_event.h"
 #include "xf_input.h"
 #include "xf_cliprdr.h"
@@ -664,11 +666,13 @@ static void xf_window_free(xfContext* xfc)
                xfc->hdc = NULL;
        }
 
+#if defined(CHANNEL_TSMF_CLIENT)
        if (xfc->xv_context)
        {
                xf_tsmf_uninit(xfc, NULL);
                xfc->xv_context = NULL;
        }
+#endif
 
        if (xfc->image)
        {
index 31bb8dc..97359e8 100644 (file)
 #ifndef FREERDP_CLIENT_X11_FREERDP_H
 #define FREERDP_CLIENT_X11_FREERDP_H
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 typedef struct xf_context xfContext;
 
 #include <freerdp/api.h>
@@ -30,6 +34,10 @@ typedef struct xf_context xfContext;
 #include "xf_monitor.h"
 #include "xf_channels.h"
 
+#if defined(CHANNEL_TSMF_CLIENT)
+#include <freerdp/client/tsmf.h>
+#endif
+
 #include <freerdp/gdi/gdi.h>
 #include <freerdp/codec/rfx.h>
 #include <freerdp/codec/nsc.h>
@@ -173,7 +181,9 @@ struct xf_context
        XSetWindowAttributes attribs;
        BOOL complex_regions;
        VIRTUAL_SCREEN vscreen;
+#if defined(CHANNEL_TSMF_CLIENT)
        void* xv_context;
+#endif
 
        Atom* supportedAtoms;
        unsigned long supportedAtomCount;
@@ -216,7 +226,10 @@ struct xf_context
        Atom WM_DELETE_WINDOW;
 
        /* Channels */
+#if defined(CHANNEL_TSMF_CLIENT)
        TsmfClientContext* tsmf;
+#endif
+
        xfClipboard* clipboard;
        CliprdrClientContext* cliprdr;
        xfVideoContext* xfVideo;
index c210587..4783e05 100644 (file)
@@ -430,8 +430,7 @@ BOOL freerdp_client_print_command_line_help_ex(int argc, char** argv,
        printf("Audio Input Redirection: /microphone:sys:oss,dev:1,format:1\n");
        printf("Audio Input Redirection: /microphone:sys:alsa\n");
        printf("\n");
-       printf("Multimedia Redirection: /multimedia:sys:oss,dev:/dev/dsp1,decoder:ffmpeg\n");
-       printf("Multimedia Redirection: /multimedia:sys:alsa\n");
+       printf("Multimedia Redirection: /video\n");
 #ifdef CHANNEL_URBDRC_CLIENT
        printf("USB Device Redirection: /usb:id,dev:054c:0268\n");
 #endif
@@ -935,6 +934,7 @@ static int freerdp_client_command_line_post_filter(void* context, COMMAND_LINE_A
                status = freerdp_client_add_dynamic_channel(settings, count, p);
                free(p);
        }
+#if defined(CHANNEL_TSMF_CLIENT)
        CommandLineSwitchCase(arg, "multimedia")
        {
                char** p;
@@ -943,6 +943,7 @@ static int freerdp_client_command_line_post_filter(void* context, COMMAND_LINE_A
                status = freerdp_client_add_dynamic_channel(settings, count, p);
                free(p);
        }
+#endif
        CommandLineSwitchCase(arg, "heartbeat")
        {
                settings->SupportHeartbeatPdu = enable;
@@ -3271,8 +3272,11 @@ BOOL freerdp_client_load_addins(rdpChannels* channels, rdpSettings* settings)
                        return FALSE;
        }
 
-       if ((freerdp_static_channel_collection_find(settings, "rdpsnd")) ||
-           (freerdp_dynamic_channel_collection_find(settings, "tsmf")))
+       if ((freerdp_static_channel_collection_find(settings, "rdpsnd"))
+#if defined(CHANNEL_TSMF_CLIENT)
+           || (freerdp_dynamic_channel_collection_find(settings, "tsmf"))
+#endif
+       )
        {
                settings->DeviceRedirection = TRUE; /* rdpsnd requires rdpdr to be registered */
                settings->AudioPlayback = TRUE;     /* Both rdpsnd and tsmf require this flag to be set */
index 7f11744..dc4eb73 100644 (file)
@@ -208,8 +208,10 @@ static const COMMAND_LINE_ARGUMENT_A args[] = {
          "Select monitors to use" },
        { "mouse-motion", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL,
          "Send mouse motion" },
+#if defined(CHANNEL_TSMF_CLIENT)
        { "multimedia", COMMAND_LINE_VALUE_OPTIONAL, "[sys:<sys>,][dev:<dev>,][decoder:<decoder>]",
-         NULL, NULL, -1, "mmr", "Redirect multimedia (video)" },
+         NULL, NULL, -1, "mmr", "[DEPRECATED] Redirect multimedia (video) use /video instead" },
+#endif
        { "multimon", COMMAND_LINE_VALUE_OPTIONAL, "force", NULL, NULL, -1, NULL,
          "Use multiple monitors" },
        { "multitouch", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL,
index d6a55d3..28e25be 100644 (file)
@@ -42,6 +42,7 @@ int TestClientChannels(int argc, char* argv[])
 
        freerdp_channels_addin_list_free(ppAddins);
 
+#if defined(CHANNEL_TSMF_CLIENT)
        printf("Enumerate tsmf video\n");
        ppAddins = freerdp_channels_list_addins("tsmf", NULL, "video", dwFlags);
 
@@ -54,6 +55,7 @@ int TestClientChannels(int argc, char* argv[])
        }
 
        freerdp_channels_addin_list_free(ppAddins);
+#endif
 
        ppAddins = freerdp_channels_list_addins("unknown", NULL, NULL, dwFlags);
 
index 23366a3..21db9ca 100644 (file)
@@ -109,7 +109,7 @@ option(WITH_DEBUG_CHANNELS "Print channel manager debug messages." ${DEFAULT_DEB
 option(WITH_DEBUG_CLIPRDR "Print clipboard redirection debug messages" ${DEFAULT_DEBUG_OPTION})
 option(WITH_DEBUG_RDPGFX "Print RDPGFX debug messages" ${DEFAULT_DEBUG_OPTION})
 option(WITH_DEBUG_DVC "Print dynamic virtual channel debug messages." ${DEFAULT_DEBUG_OPTION})
-option(WITH_DEBUG_TSMF "Print TSMF virtual channel debug messages." ${DEFAULT_DEBUG_OPTION})
+CMAKE_DEPENDENT_OPTION(WITH_DEBUG_TSMF "Print TSMF virtual channel debug messages." ${DEFAULT_DEBUG_OPTION} "CHANNEL_TSMF" OFF)
 option(WITH_DEBUG_KBD "Print keyboard related debug messages." ${DEFAULT_DEBUG_OPTION})
 option(WITH_DEBUG_LICENSE "Print license debug messages." ${DEFAULT_DEBUG_OPTION})
 option(WITH_DEBUG_NEGO "Print negotiation related debug messages." ${DEFAULT_DEBUG_OPTION})
index 62860e9..c2e20d3 100644 (file)
@@ -45,8 +45,6 @@
 #cmakedefine WITH_EVENTFD_READ_WRITE
 #cmakedefine HAVE_MATH_C99_LONG_DOUBLE
 
-#cmakedefine WITH_GSTREAMER_1_0
-#cmakedefine WITH_GSTREAMER_0_10
 #cmakedefine WITH_WINMM
 #cmakedefine WITH_MACAUDIO
 #cmakedefine WITH_OSS
index 83da56f..2e52509 100644 (file)
  * limitations under the License.
  */
 
+/* DEPRECATION WARNING:
+ *
+ * This channel is unmaintained and not used since windows 7.
+ * Only compile and use it if absolutely necessary, otherwise
+ * deactivate it or use the newer [MS-RDPEVOR] video redirection.
+ */
+
 #ifndef FREERDP_CHANNEL_TSMF_H
 #define FREERDP_CHANNEL_TSMF_H
 
index 0ca4d47..0d5e0d5 100644 (file)
  * limitations under the License.
  */
 
+/* DEPRECATION WARNING:
+ *
+ * This channel is unmaintained and not used since windows 7.
+ * Only compile and use it if absolutely necessary, otherwise
+ * deactivate it or use the newer [MS-RDPEVOR] video redirection.
+ */
+
 #ifndef FREERDP_CHANNEL_TSMF_CLIENT_TSMF_H
 #define FREERDP_CHANNEL_TSMF_CLIENT_TSMF_H
 
index 1c6620f..094f43f 100644 (file)
@@ -26,7 +26,6 @@
 #include <freerdp/gdi/gfx.h>
 
 #include <freerdp/client/rdpei.h>
-#include <freerdp/client/tsmf.h>
 #include <freerdp/client/rail.h>
 #include <freerdp/client/cliprdr.h>
 #include <freerdp/client/rdpgfx.h>