Merge branch 'master' of git://github.com/FreeRDP/xrdp
This commit is contained in:
commit
fd2d098f68
@ -86,6 +86,7 @@ struct xrdp_client_info
|
||||
int jpeg_prop_len;
|
||||
char jpeg_prop[64];
|
||||
int v3_codec_id;
|
||||
int use_bulk_comp;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -103,6 +103,15 @@ xrdp_rdp_read_config(struct xrdp_client_info *client_info)
|
||||
client_info->use_bitmap_comp = 1;
|
||||
}
|
||||
}
|
||||
else if (g_strcasecmp(item, "bulk_compression") == 0)
|
||||
{
|
||||
if (g_strcasecmp(value, "yes") == 0 ||
|
||||
g_strcasecmp(value, "true") == 0 ||
|
||||
g_strcasecmp(value, "1") == 0)
|
||||
{
|
||||
client_info->use_bulk_comp = 1;
|
||||
}
|
||||
}
|
||||
else if (g_strcasecmp(item, "crypt_level") == 0)
|
||||
{
|
||||
if (g_strcasecmp(value, "low") == 0)
|
||||
|
@ -385,8 +385,16 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
|
||||
|
||||
if (flags & RDP_COMPRESSION)
|
||||
{
|
||||
self->rdp_layer->client_info.rdp_compression = 1;
|
||||
DEBUG(("flag RDP_COMPRESSION found"));
|
||||
if (self->rdp_layer->client_info.use_bulk_comp)
|
||||
{
|
||||
DEBUG(("flag RDP_COMPRESSION set"));
|
||||
self->rdp_layer->client_info.rdp_compression = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG(("flag RDP_COMPRESSION not set"));
|
||||
}
|
||||
}
|
||||
|
||||
in_uint16_le(s, len_domain);
|
||||
|
@ -175,15 +175,21 @@ void MainWindow::openMediaFile()
|
||||
|
||||
void MainWindow::getVdoGeometry(QRect *rect)
|
||||
{
|
||||
int x = geometry().x() + lblVideo->geometry().x();
|
||||
|
||||
int y = pos().y() + lblVideo->geometry().y() +
|
||||
ui->mainToolBar->geometry().height() * 4 + 10;
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
QPoint pt;
|
||||
|
||||
pt = lblVideo->mapToGlobal(QPoint(0, 0));
|
||||
x = pt.x();
|
||||
y = pt.y();
|
||||
width = lblVideo->width();
|
||||
height = lblVideo->height();
|
||||
rect->setX(x);
|
||||
rect->setY(y);
|
||||
rect->setWidth(lblVideo->geometry().width());
|
||||
rect->setHeight(lblVideo->geometry().height());
|
||||
rect->setWidth(width);
|
||||
rect->setHeight(height);
|
||||
}
|
||||
|
||||
void MainWindow::clearDisplay()
|
||||
|
@ -23,8 +23,9 @@ tcp_keepalive=yes
|
||||
#red=ff0000
|
||||
#green=00ff00
|
||||
#background=626c72
|
||||
#autorun=xrdp7
|
||||
#autorun=xrdp1
|
||||
#hidelogwindow=yes
|
||||
#bulk_compression=yes
|
||||
|
||||
[Logging]
|
||||
LogFile=/opt/xrdp/var/log/xrdp.log
|
||||
@ -55,4 +56,3 @@ channel.drdynvc=true
|
||||
channel.cliprdr=true
|
||||
channel.rail=true
|
||||
channel.xrdpvr=true
|
||||
|
||||
|
@ -95,7 +95,8 @@ xrdpvr_deinit_player(void *channel, int stream_id)
|
||||
av_free(g_psi.frame);
|
||||
avcodec_close(g_psi.p_audio_codec_ctx);
|
||||
avcodec_close(g_psi.p_video_codec_ctx);
|
||||
avformat_close_input(&g_psi.p_format_ctx);
|
||||
//avformat_close_input(&g_psi.p_format_ctx);
|
||||
av_close_input_file(g_psi.p_format_ctx);
|
||||
|
||||
/* do remote cleanup */
|
||||
|
||||
@ -141,14 +142,16 @@ xrdpvr_play_media(void *channel, int stream_id, char *filename)
|
||||
av_register_all();
|
||||
|
||||
/* open media file - this will read just the header */
|
||||
if (avformat_open_input(&g_psi.p_format_ctx, filename, NULL, NULL))
|
||||
//if (avformat_open_input(&g_psi.p_format_ctx, filename, NULL, NULL))
|
||||
if (av_open_input_file(&g_psi.p_format_ctx, filename, NULL, 0, NULL))
|
||||
{
|
||||
printf("ERROR opening %s\n", filename);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* now get the real stream info */
|
||||
if (avformat_find_stream_info(g_psi.p_format_ctx, NULL) < 0)
|
||||
//if (avformat_find_stream_info(g_psi.p_format_ctx, NULL) < 0)
|
||||
if (av_find_stream_info(g_psi.p_format_ctx) < 0)
|
||||
{
|
||||
printf("ERRRO reading stream info\n");
|
||||
return -1;
|
||||
@ -162,13 +165,13 @@ xrdpvr_play_media(void *channel, int stream_id, char *filename)
|
||||
/* find first audio / video stream */
|
||||
for (i = 0; i < g_psi.p_format_ctx->nb_streams; i++)
|
||||
{
|
||||
if (g_psi.p_format_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO &&
|
||||
if (g_psi.p_format_ctx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO &&
|
||||
g_video_index < 0)
|
||||
{
|
||||
g_video_index = i;
|
||||
}
|
||||
|
||||
if (g_psi.p_format_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO &&
|
||||
if (g_psi.p_format_ctx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO &&
|
||||
g_audio_index < 0)
|
||||
{
|
||||
g_audio_index = i;
|
||||
@ -179,7 +182,8 @@ xrdpvr_play_media(void *channel, int stream_id, char *filename)
|
||||
{
|
||||
/* close file and return with error */
|
||||
printf("ERROR: no audio/video stream found in %s\n", filename);
|
||||
avformat_close_input(&g_psi.p_format_ctx);
|
||||
//avformat_close_input(&g_psi.p_format_ctx);
|
||||
av_close_input_file(g_psi.p_format_ctx);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -207,16 +211,18 @@ xrdpvr_play_media(void *channel, int stream_id, char *filename)
|
||||
}
|
||||
|
||||
/* open decoder for audio stream */
|
||||
if (avcodec_open2(g_psi.p_audio_codec_ctx, g_psi.p_audio_codec,
|
||||
NULL) < 0)
|
||||
//if (avcodec_open2(g_psi.p_audio_codec_ctx, g_psi.p_audio_codec,
|
||||
// NULL) < 0)
|
||||
if (avcodec_open(g_psi.p_audio_codec_ctx, g_psi.p_audio_codec) < 0)
|
||||
{
|
||||
printf("ERROR: could not open audio decoder\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* open decoder for video stream */
|
||||
if (avcodec_open2(g_psi.p_video_codec_ctx, g_psi.p_video_codec,
|
||||
NULL) < 0)
|
||||
//if (avcodec_open2(g_psi.p_video_codec_ctx, g_psi.p_video_codec,
|
||||
// NULL) < 0)
|
||||
if (avcodec_open(g_psi.p_video_codec_ctx, g_psi.p_video_codec) < 0)
|
||||
{
|
||||
printf("ERROR: could not open video decoder\n");
|
||||
return -1;
|
||||
@ -342,7 +348,7 @@ int xrdpvr_play_frame(void *channel, int stream_id, int *videoTimeout, int *audi
|
||||
*audioTimeout = (int) ((dts - g_psi.audioTimeout) * 1000000);
|
||||
*videoTimeout = -1;
|
||||
|
||||
if (g_psi.audioTimeout > dts)
|
||||
if (g_psi.audioTimeout > dts)
|
||||
{
|
||||
g_psi.audioTimeout = dts;
|
||||
delay_in_us = 1000 * 40;
|
||||
@ -728,4 +734,3 @@ xrdpvr_write_to_client(void *channel, STREAM *s)
|
||||
usleep(1000 * 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,8 +26,30 @@
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
#include <fcntl.h>
|
||||
#include <libavcodec/avcodec.h>
|
||||
#include <libavformat/avformat.h>
|
||||
|
||||
#if LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR == 20
|
||||
#define DISTRO_DEBIAN6
|
||||
#endif
|
||||
|
||||
#if LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR == 72
|
||||
#define DISTRO_UBUNTU1104
|
||||
#endif
|
||||
|
||||
#if LIBAVCODEC_VERSION_MAJOR == 53 && LIBAVCODEC_VERSION_MINOR == 35
|
||||
#define DISTRO_UBUNTU1204
|
||||
#endif
|
||||
|
||||
#if !defined(DISTRO_DEBIAN6) && !defined(DISTRO_UBUNTU1104) && !defined(DISTRO_UBUNTU1204)
|
||||
#warning unsupported distro
|
||||
#endif
|
||||
|
||||
#ifdef DISTRO_UBUNTU1204
|
||||
#define CODEC_TYPE_VIDEO AVMEDIA_TYPE_VIDEO
|
||||
#define CODEC_TYPE_AUDIO AVMEDIA_TYPE_AUDIO
|
||||
#endif
|
||||
|
||||
#define MAX_BUFSIZE (1024 * 1024 * 8)
|
||||
|
||||
#define CMD_SET_VIDEO_FORMAT 1
|
||||
|
Loading…
Reference in New Issue
Block a user