summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2015-11-10 11:57:38 +0000
committerFrediano Ziglio <fziglio@redhat.com>2015-11-10 16:09:28 +0000
commit885557f117b77b4fb2e8cd92d90a90b961081af8 (patch)
tree75e5e3b1dced4d888175244c67d12c3af89c5675
parent1e4abdc15d83c605b020682979abc03dc4848f31 (diff)
downloadspice-885557f117b77b4fb2e8cd92d90a90b961081af8.zip
spice-885557f117b77b4fb2e8cd92d90a90b961081af8.tar.gz
spice-885557f117b77b4fb2e8cd92d90a90b961081af8.tar.xz
worker: move stream functions to a new stream.c file
Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com> Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com> Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
-rw-r--r--server/Makefile.am1
-rw-r--r--server/red_worker.c52
-rw-r--r--server/stream.c70
-rw-r--r--server/stream.h5
4 files changed, 78 insertions, 50 deletions
diff --git a/server/Makefile.am b/server/Makefile.am
index 8ccf614..52703c9 100644
--- a/server/Makefile.am
+++ b/server/Makefile.am
@@ -136,6 +136,7 @@ libspice_server_la_SOURCES = \
spice-bitmap-utils.h \
spice-bitmap-utils.c \
utils.h \
+ stream.c \
stream.h \
$(NULL)
diff --git a/server/red_worker.c b/server/red_worker.c
index b7428f1..1d52551 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -1540,21 +1540,9 @@ static inline void red_detach_stream(RedWorker *worker, Stream *stream, int deta
stream->current = NULL;
}
-static StreamClipItem *__new_stream_clip(DisplayChannelClient* dcc, StreamAgent *agent)
-{
- StreamClipItem *item = spice_new(StreamClipItem, 1);
- red_channel_pipe_item_init(RED_CHANNEL_CLIENT(dcc)->channel,
- (PipeItem *)item, PIPE_ITEM_TYPE_STREAM_CLIP);
-
- item->stream_agent = agent;
- agent->stream->refs++;
- item->refs = 1;
- return item;
-}
-
static void push_stream_clip(DisplayChannelClient* dcc, StreamAgent *agent)
{
- StreamClipItem *item = __new_stream_clip(dcc, agent);
+ StreamClipItem *item = stream_clip_item_new(dcc, agent);
int n_rects;
if (!item) {
@@ -1628,42 +1616,6 @@ static void red_attach_stream(RedWorker *worker, Drawable *drawable, Stream *str
}
}
-static void red_print_stream_stats(DisplayChannelClient *dcc, StreamAgent *agent)
-{
-#ifdef STREAM_STATS
- StreamStats *stats = &agent->stats;
- double passed_mm_time = (stats->end - stats->start) / 1000.0;
- MJpegEncoderStats encoder_stats = {0};
-
- if (agent->mjpeg_encoder) {
- mjpeg_encoder_get_stats(agent->mjpeg_encoder, &encoder_stats);
- }
-
- spice_debug("stream=%"PRIdPTR" dim=(%dx%d) #in-frames=%"PRIu64" #in-avg-fps=%.2f #out-frames=%"PRIu64" "
- "out/in=%.2f #drops=%"PRIu64" (#pipe=%"PRIu64" #fps=%"PRIu64") out-avg-fps=%.2f "
- "passed-mm-time(sec)=%.2f size-total(MB)=%.2f size-per-sec(Mbps)=%.2f "
- "size-per-frame(KBpf)=%.2f avg-quality=%.2f "
- "start-bit-rate(Mbps)=%.2f end-bit-rate(Mbps)=%.2f",
- agent - dcc->stream_agents, agent->stream->width, agent->stream->height,
- stats->num_input_frames,
- stats->num_input_frames / passed_mm_time,
- stats->num_frames_sent,
- (stats->num_frames_sent + 0.0) / stats->num_input_frames,
- stats->num_drops_pipe +
- stats->num_drops_fps,
- stats->num_drops_pipe,
- stats->num_drops_fps,
- stats->num_frames_sent / passed_mm_time,
- passed_mm_time,
- stats->size_sent / 1024.0 / 1024.0,
- ((stats->size_sent * 8.0) / (1024.0 * 1024)) / passed_mm_time,
- stats->size_sent / 1000.0 / stats->num_frames_sent,
- encoder_stats.avg_quality,
- encoder_stats.starting_bit_rate / (1024.0 * 1024),
- encoder_stats.cur_bit_rate / (1024.0 * 1024));
-#endif
-}
-
static void red_stop_stream(RedWorker *worker, Stream *stream)
{
DisplayChannelClient *dcc;
@@ -1691,7 +1643,7 @@ static void red_stop_stream(RedWorker *worker, Stream *stream)
}
stream->refs++;
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &stream_agent->destroy_item);
- red_print_stream_stats(dcc, stream_agent);
+ stream_agent_stats_print(stream_agent);
}
worker->streams_size_total -= stream->width * stream->height;
ring_remove(&stream->link);
diff --git a/server/stream.c b/server/stream.c
new file mode 100644
index 0000000..4545963
--- /dev/null
+++ b/server/stream.c
@@ -0,0 +1,70 @@
+/*
+ Copyright (C) 2009-2015 Red Hat, Inc.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, see <http://www.gnu.org/licenses/>.
+*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "stream.h"
+#include "display-channel.h"
+
+void stream_agent_stats_print(StreamAgent *agent)
+{
+#ifdef STREAM_STATS
+ StreamStats *stats = &agent->stats;
+ double passed_mm_time = (stats->end - stats->start) / 1000.0;
+ MJpegEncoderStats encoder_stats = {0};
+
+ if (agent->mjpeg_encoder) {
+ mjpeg_encoder_get_stats(agent->mjpeg_encoder, &encoder_stats);
+ }
+
+ spice_debug("stream=%p dim=(%dx%d) #in-frames=%"PRIu64" #in-avg-fps=%.2f #out-frames=%"PRIu64" "
+ "out/in=%.2f #drops=%"PRIu64" (#pipe=%"PRIu64" #fps=%"PRIu64") out-avg-fps=%.2f "
+ "passed-mm-time(sec)=%.2f size-total(MB)=%.2f size-per-sec(Mbps)=%.2f "
+ "size-per-frame(KBpf)=%.2f avg-quality=%.2f "
+ "start-bit-rate(Mbps)=%.2f end-bit-rate(Mbps)=%.2f",
+ agent, agent->stream->width, agent->stream->height,
+ stats->num_input_frames,
+ stats->num_input_frames / passed_mm_time,
+ stats->num_frames_sent,
+ (stats->num_frames_sent + 0.0) / stats->num_input_frames,
+ stats->num_drops_pipe +
+ stats->num_drops_fps,
+ stats->num_drops_pipe,
+ stats->num_drops_fps,
+ stats->num_frames_sent / passed_mm_time,
+ passed_mm_time,
+ stats->size_sent / 1024.0 / 1024.0,
+ ((stats->size_sent * 8.0) / (1024.0 * 1024)) / passed_mm_time,
+ stats->size_sent / 1000.0 / stats->num_frames_sent,
+ encoder_stats.avg_quality,
+ encoder_stats.starting_bit_rate / (1024.0 * 1024),
+ encoder_stats.cur_bit_rate / (1024.0 * 1024));
+#endif
+}
+
+StreamClipItem *stream_clip_item_new(DisplayChannelClient* dcc, StreamAgent *agent)
+{
+ StreamClipItem *item = spice_new(StreamClipItem, 1);
+ red_channel_pipe_item_init(RED_CHANNEL_CLIENT(dcc)->channel,
+ (PipeItem *)item, PIPE_ITEM_TYPE_STREAM_CLIP);
+
+ item->stream_agent = agent;
+ agent->stream->refs++;
+ item->refs = 1;
+ return item;
+}
diff --git a/server/stream.h b/server/stream.h
index 1587d4e..30b8624 100644
--- a/server/stream.h
+++ b/server/stream.h
@@ -103,6 +103,9 @@ typedef struct StreamClipItem {
SpiceClipRects *rects;
} StreamClipItem;
+StreamClipItem *stream_clip_item_new(DisplayChannelClient* dcc,
+ StreamAgent *agent);
+
struct Stream {
uint8_t refs;
Drawable *current;
@@ -119,4 +122,6 @@ struct Stream {
uint32_t input_fps;
};
+void stream_agent_stats_print(StreamAgent *agent);
+
#endif /* STREAM_H */