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")
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")
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()
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()
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})
set(OPTION_DEFAULT OFF)
-set(OPTION_CLIENT_DEFAULT ON)
+set(OPTION_CLIENT_DEFAULT OFF)
set(OPTION_SERVER_DEFAULT OFF)
if(WIN32)
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})
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
#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>
{
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);
{
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);
#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>
{
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);
{
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);
#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>
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
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})
#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"
{
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);
{
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);
#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>
#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"
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)
{
#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>
#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>
XSetWindowAttributes attribs;
BOOL complex_regions;
VIRTUAL_SCREEN vscreen;
+#if defined(CHANNEL_TSMF_CLIENT)
void* xv_context;
+#endif
Atom* supportedAtoms;
unsigned long supportedAtomCount;
Atom WM_DELETE_WINDOW;
/* Channels */
+#if defined(CHANNEL_TSMF_CLIENT)
TsmfClientContext* tsmf;
+#endif
+
xfClipboard* clipboard;
CliprdrClientContext* cliprdr;
xfVideoContext* xfVideo;
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
status = freerdp_client_add_dynamic_channel(settings, count, p);
free(p);
}
+#if defined(CHANNEL_TSMF_CLIENT)
CommandLineSwitchCase(arg, "multimedia")
{
char** p;
status = freerdp_client_add_dynamic_channel(settings, count, p);
free(p);
}
+#endif
CommandLineSwitchCase(arg, "heartbeat")
{
settings->SupportHeartbeatPdu = enable;
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 */
"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,
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);
}
freerdp_channels_addin_list_free(ppAddins);
+#endif
ppAddins = freerdp_channels_list_addins("unknown", NULL, NULL, dwFlags);
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})
#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
* 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
* 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
#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>