diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2013-01-24 17:09:15 -0500 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2013-04-22 16:30:54 -0400 |
commit | ed1654eb11fbed9db48ea04fe19b08cad61e4087 (patch) | |
tree | 750ee12e75d4ae6ef8a7300bc649346d6e2bf43e /server | |
parent | 0df94503996664212e927e2c5dea7c33f65eae12 (diff) | |
download | spice-ed1654eb11fbed9db48ea04fe19b08cad61e4087.tar.gz spice-ed1654eb11fbed9db48ea04fe19b08cad61e4087.tar.xz spice-ed1654eb11fbed9db48ea04fe19b08cad61e4087.zip |
red_worker: notify mjpeg_encoder on server frame drops
Diffstat (limited to 'server')
-rw-r--r-- | server/red_worker.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/server/red_worker.c b/server/red_worker.c index 27e5380a..2fe9a3ac 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -3169,13 +3169,19 @@ static inline void pre_stream_item_swap(RedWorker *worker, Stream *stream) index = get_stream_id(worker, stream); DRAWABLE_FOREACH_DPI(stream->current, ring_item, dpi) { dcc = dpi->dcc; - if (!display_channel_client_is_low_bandwidth(dcc)) { + agent = &dcc->stream_agents[index]; + + if (!dcc->use_mjpeg_encoder_rate_control && + !display_channel_client_is_low_bandwidth(dcc)) { continue; } - agent = &dcc->stream_agents[index]; if (pipe_item_is_linked(&dpi->dpi_pipe_item)) { - ++agent->drops; + if (dcc->use_mjpeg_encoder_rate_control) { + mjpeg_encoder_notify_server_frame_drop(agent->mjpeg_encoder); + } else { + ++agent->drops; + } } } @@ -3184,11 +3190,14 @@ static inline void pre_stream_item_swap(RedWorker *worker, Stream *stream) double drop_factor; agent = &dcc->stream_agents[index]; + + if (dcc->use_mjpeg_encoder_rate_control) { + continue; + } if (agent->frames / agent->fps < FPS_TEST_INTERVAL) { agent->frames++; continue; } - drop_factor = ((double)agent->frames - (double)agent->drops) / (double)agent->frames; spice_debug("stream %d: #frames %u #drops %u", index, agent->frames, agent->drops); |