spice/server
Francois Gouget 49036e6aae streaming: Avoid copying the input frame in the GStreamer encoder
Note that we can only avoid copies for the first 1 Mpixels or so.
That's because Spice splits larger frames into more chunks than we can
fit GstMemory fragments in a GStreamer buffer. So if there are more
pixels we will avoid copies for the first 3840 KB and copy the rest.
Furthermore, while in practice the GStreamer encoder will only modify
the RedDrawable refcount during the encode_frame(), in theory the
refcount could be decremented from the GStreamer thread after
encode_frame() returns.

Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
2016-06-14 17:04:40 +02:00
..
tests replay: Add an option to change video codec 2016-06-14 17:04:40 +02:00
.gitignore Update the .gitignore files for the new manual, 2015-10-16 15:48:23 -05:00
agent-msg-filter.c AgentMsgFilter: use typedef 2016-05-24 17:46:05 +01:00
agent-msg-filter.h AgentMsgFilter: use typedef 2016-05-24 17:46:05 +01:00
cache-item.h Move RedCacheItem size field inside cache_data union 2016-05-25 09:53:57 +01:00
cache-item.tmpl.c Remove unused macro definitions 2016-05-25 09:54:03 +01:00
char-device.c char-device: fix mismatch of client tokens 2016-06-07 18:06:31 +01:00
char-device.h Remove obsolete comment 2016-06-01 16:21:07 +01:00
cursor-channel.c Move upcast conversion to a safer place 2016-05-27 09:41:01 +01:00
cursor-channel.h Add some comments to cursor-channel.h header 2016-05-27 09:32:58 +01:00
dcc-encoders.c Move image_encoders_compress_glz to dcc-encoders.c 2016-06-14 15:07:31 +01:00
dcc-encoders.h Move image_encoders_compress_glz to dcc-encoders.c 2016-06-14 15:07:31 +01:00
dcc-send.c streaming: Avoid copying the input frame in the GStreamer encoder 2016-06-14 17:04:40 +02:00
dcc.c streaming: Let the video encoder manage the compressed buffer 2016-06-14 17:04:40 +02:00
dcc.h streaming: Let the video encoder manage the compressed buffer 2016-06-14 17:04:40 +02:00
demarshallers.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00
dispatcher.c Get code more typesafe 2016-05-21 04:14:13 +01:00
dispatcher.h unify header include order 2016-05-12 11:02:54 +01:00
display-channel.c streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
display-channel.h streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
display-limits.h worker: start a DisplayChannelClient unit 2015-11-19 12:43:02 +00:00
event-loop.c revert new event-loop code for timers 2016-02-12 17:44:57 +00:00
glz-encode-match.tmpl.c server: rename _tmpl files 2015-11-26 13:33:36 +00:00
glz-encode.tmpl.c Removed unused GET_CODE definition 2016-05-25 14:32:42 +01:00
glz-encoder-dict.c remove glz_encoder_config.h 2015-12-04 11:57:18 +00:00
glz-encoder-dict.h remove glz_encoder_config.h 2015-12-04 11:57:18 +00:00
glz-encoder-priv.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00
glz-encoder.c server: rename files 2015-12-03 23:54:32 +00:00
glz-encoder.h unify header include order 2016-05-12 11:02:54 +01:00
gstreamer-encoder.c streaming: Avoid copying the input frame in the GStreamer encoder 2016-06-14 17:04:40 +02:00
image-cache.c Make some function static 2016-05-25 15:41:58 +01:00
image-cache.h Make some function static 2016-05-25 15:41:58 +01:00
inputs-channel-client.c Avoid getting channel from client 2016-05-27 18:02:29 +01:00
inputs-channel-client.h Move InputsChannelClient to a separate file 2016-05-24 14:56:41 -05:00
inputs-channel.c Avoid getting channel from client 2016-05-27 18:02:29 +01:00
inputs-channel.h Avoid getting channel from client 2016-05-27 18:02:29 +01:00
jpeg-encoder.c server: rename files 2015-12-03 23:54:32 +00:00
jpeg-encoder.h server: rename files 2015-12-03 23:54:32 +00:00
lz4-encoder.c server: rename files 2015-12-03 23:54:32 +00:00
lz4-encoder.h server: rename files 2015-12-03 23:54:32 +00:00
main-channel-client.c channel: Remove clients_num and use g_list_length 2016-06-01 16:56:16 +01:00
main-channel-client.h move all item creation in main-channel-client.c 2016-05-24 13:41:08 -05:00
main-channel.c channel: Remove clients_num and use g_list_length 2016-06-01 16:56:16 +01:00
main-channel.h Move MainChannelClient to separate file 2016-05-20 09:16:47 -05:00
main-dispatcher.c Convert Dispatcher and MainDispatcher to GObjects 2016-03-30 17:19:24 +01:00
main-dispatcher.h unify header include order 2016-05-12 11:02:54 +01:00
Makefile.am streaming: Add a GStreamer 1.0 MJPEG video encoder and use it by default 2016-06-14 17:04:40 +02:00
memslot.c memslot: do not crash if guest provide a wrong address 2016-02-18 10:36:26 +00:00
memslot.h unify header include order 2016-05-12 11:02:54 +01:00
migration-protocol.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00
mjpeg-encoder.c streaming: Avoid copying the input frame in the GStreamer encoder 2016-06-14 17:04:40 +02:00
pixmap-cache.c Introduce SPICE_UPCAST macro 2016-05-24 18:00:51 +01:00
pixmap-cache.h server: rename files 2015-12-03 23:54:32 +00:00
red-channel.c Replace RedClient::channels with GList 2016-05-31 16:29:04 +01:00
red-channel.h channel: Remove clients_num and use g_list_length 2016-06-01 16:56:16 +01:00
red-common.h Introduce SPICE_UPCAST macro 2016-05-24 18:00:51 +01:00
red-parse-qxl.c factor out red_validate_surface function to validate surface parameters 2016-06-08 09:59:31 +01:00
red-parse-qxl.h factor out red_validate_surface function to validate surface parameters 2016-06-08 09:59:31 +01:00
red-pipe-item.c make red_pipe_item_unref more typesafe 2016-05-21 04:11:12 +01:00
red-pipe-item.h make red_pipe_item_unref more typesafe 2016-05-21 04:11:12 +01:00
red-qxl.c streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
red-qxl.h streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
red-record-qxl.c record: Use proper type for timestamp 2016-06-08 15:27:48 +01:00
red-record-qxl.h record: Use proper type for timestamp 2016-06-08 15:27:48 +01:00
red-replay-qxl.c replay: Load cursor commands 2016-06-06 09:29:12 +01:00
red-replay-qxl.h unify header include order 2016-05-12 11:02:54 +01:00
red-worker.c streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
red-worker.h Replace RedChannel::clients with GList 2016-05-24 14:56:45 -05:00
reds-private.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00
reds-stream.c use #include<> style for spice-common header inclusions. 2016-05-09 12:45:27 +01:00
reds-stream.h unify header include order 2016-05-12 11:02:54 +01:00
reds.c streaming: Add VP8 support to the GStreamer video encoder 2016-06-14 17:04:40 +02:00
reds.h streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
smartcard.c smartcard: Avoid crash on remove_interface call 2016-06-01 16:24:27 +01:00
smartcard.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00
sound.c use #include<> style for spice-common header inclusions. 2016-05-09 12:45:27 +01:00
sound.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00
spice-audio.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-bitmap-utils.c do not compile dump_bitmap if not necessary 2016-03-24 13:11:46 +00:00
spice-bitmap-utils.h server: misc header cleanups 2015-12-09 22:17:51 +00:00
spice-bitmap-utils.tmpl.c server: rename _tmpl files 2015-11-26 13:33:36 +00:00
spice-char.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-core.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-experimental.h Add missing license headers 2015-10-19 14:25:36 +02:00
spice-input.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-migration.h spice-migration.h: un-deprecate set_seamless_migration() 2016-05-12 06:34:11 +01:00
spice-qxl.h Add new spice-gl stubs API 2016-02-09 14:01:12 +00:00
spice-server.h streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
spice-server.syms streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
spice-version.h.in build-sys: generate spice-version.h 2014-11-27 14:27:33 +01:00
spice.h Split spice.h 2014-11-27 14:27:18 +01:00
spicevmc.c LZ4 compression is now available at the Spicevmc channel 2016-06-13 23:12:59 +01:00
stat.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00
stream.c streaming: Avoid copying the input frame in the GStreamer encoder 2016-06-14 17:04:40 +02:00
stream.h streaming: Simplify is_next_stream_frame() 2016-06-14 17:04:40 +02:00
sw-canvas.c remove sw-canvas.h 2016-05-09 12:45:37 +01:00
tree.c Get code more typesafe 2016-05-21 04:14:13 +01:00
tree.h Introduce SPICE_UPCAST macro 2016-05-24 18:00:51 +01:00
utils.c worker: move dcc_add_surface_area_image 2015-11-23 13:50:44 +00:00
utils.h server: Add time constants to go with spice_get_monotonic_time_ms() 2015-12-14 11:24:47 +00:00
video-encoder.h streaming: Avoid copying the input frame in the GStreamer encoder 2016-06-14 17:04:40 +02:00
zlib-encoder.c server: rename files 2015-12-03 23:54:32 +00:00
zlib-encoder.h Make sure all headers are independent 2016-05-18 00:24:37 +01:00