[Spice-devel] [spice v15 02/21] streaming: Remove the width/height encode_frame() parameters
Francois Gouget
fgouget at codeweavers.com
Thu May 26 15:15:56 UTC 2016
encode_frame() needs the QXL_DRAW_COPY operation's SpiceCopy.src_area
field anyway, so the width and height parameters were redundant.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
server/dcc-send.c | 26 ++++++++------------------
server/mjpeg-encoder.c | 1 -
server/video-encoder.h | 2 +-
3 files changed, 9 insertions(+), 20 deletions(-)
diff --git a/server/dcc-send.c b/server/dcc-send.c
index 5171f9a..9ece37e 100644
--- a/server/dcc-send.c
+++ b/server/dcc-send.c
@@ -1660,7 +1660,6 @@ static int red_marshall_stream_data(RedChannelClient *rcc,
SpiceImage *image;
uint32_t frame_mm_time;
uint32_t n;
- int width, height;
int ret;
if (!stream) {
@@ -1675,21 +1674,13 @@ static int red_marshall_stream_data(RedChannelClient *rcc,
return FALSE;
}
- if (drawable->sized_stream) {
- if (red_channel_client_test_remote_cap(rcc, SPICE_DISPLAY_CAP_SIZED_STREAM)) {
- SpiceRect *src_rect = &drawable->red_drawable->u.copy.src_area;
-
- width = src_rect->right - src_rect->left;
- height = src_rect->bottom - src_rect->top;
- } else {
- return FALSE;
- }
- } else {
- width = stream->width;
- height = stream->height;
+ if (drawable->sized_stream &&
+ !red_channel_client_test_remote_cap(rcc, SPICE_DISPLAY_CAP_SIZED_STREAM)) {
+ return FALSE;
}
StreamAgent *agent = &dcc->stream_agents[get_stream_id(display, stream)];
+ const SpiceRect *src_area = &drawable->red_drawable->u.copy.src_area;
uint64_t time_now = spice_get_monotonic_time_ns();
size_t outbuf_size;
@@ -1710,9 +1701,8 @@ static int red_marshall_stream_data(RedChannelClient *rcc,
outbuf_size = dcc->send_data.stream_outbuf_size;
ret = agent->video_encoder->encode_frame(agent->video_encoder,
frame_mm_time,
- &image->u.bitmap, width, height,
- &drawable->red_drawable->u.copy.src_area,
- stream->top_down,
+ &image->u.bitmap,
+ src_area, stream->top_down,
&dcc->send_data.stream_outbuf,
&outbuf_size, &n);
switch (ret) {
@@ -1750,8 +1740,8 @@ static int red_marshall_stream_data(RedChannelClient *rcc,
stream_data.base.id = get_stream_id(display, stream);
stream_data.base.multi_media_time = frame_mm_time;
stream_data.data_size = n;
- stream_data.width = width;
- stream_data.height = height;
+ stream_data.width = src_area->right - src_area->left;
+ stream_data.height = src_area->bottom - src_area->top;
stream_data.dest = drawable->red_drawable->bbox;
spice_debug("stream %d: sized frame: dest ==> ", stream_data.base.id);
diff --git a/server/mjpeg-encoder.c b/server/mjpeg-encoder.c
index 7dcea50..57708cd 100644
--- a/server/mjpeg-encoder.c
+++ b/server/mjpeg-encoder.c
@@ -927,7 +927,6 @@ static int encode_frame(MJpegEncoder *encoder, const SpiceRect *src,
static int mjpeg_encoder_encode_frame(VideoEncoder *video_encoder,
uint32_t frame_mm_time,
const SpiceBitmap *bitmap,
- int width, int height,
const SpiceRect *src, int top_down,
uint8_t **outbuf, size_t *outbuf_size,
uint32_t *data_size)
diff --git a/server/video-encoder.h b/server/video-encoder.h
index 8aa7783..7e06a13 100644
--- a/server/video-encoder.h
+++ b/server/video-encoder.h
@@ -60,7 +60,7 @@ struct VideoEncoder {
* only happen if rate control is active.
*/
int (*encode_frame)(VideoEncoder *encoder, uint32_t frame_mm_time,
- const SpiceBitmap *bitmap, int width, int height,
+ const SpiceBitmap *bitmap,
const SpiceRect *src, int top_down,
uint8_t **outbuf, size_t *outbuf_size,
uint32_t *data_size);
--
2.8.1
More information about the Spice-devel
mailing list