[Spice-devel] [PATCH 1/2] server: Encapsulate the get_source_fps() video encoder callback
Victor Toso
lists at victortoso.com
Tue Nov 24 03:08:14 PST 2015
Hi,
On Mon, Nov 23, 2015 at 04:36:17PM +0100, Francois Gouget wrote:
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
> ---
> server/mjpeg_encoder.c | 19 ++++++++++++-------
> 1 file changed, 12 insertions(+), 7 deletions(-)
>
Acked-by: Victor Toso <victortoso at redhat.com>
I'll push this if no one complains.
Cheers,
-toso
> diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
> index 7d17517..946ce8b 100644
> --- a/server/mjpeg_encoder.c
> +++ b/server/mjpeg_encoder.c
> @@ -328,6 +328,11 @@ spice_jpeg_mem_dest(j_compress_ptr cinfo,
> }
> /* end of code from libjpeg */
>
> +static inline uint32_t mjpeg_encoder_get_source_fps(MJpegEncoder *encoder)
> +{
> + return encoder->cbs.get_source_fps(encoder->cbs_opaque);
> +}
> +
> static inline uint32_t mjpeg_encoder_get_latency(MJpegEncoder *encoder)
> {
> return encoder->cbs.get_roundtrip_ms ?
> @@ -427,7 +432,7 @@ static inline void mjpeg_encoder_eval_quality(MJpegEncoder *encoder)
> return;
> }
>
> - src_fps = encoder->cbs.get_source_fps(encoder->cbs_opaque);
> + src_fps = mjpeg_encoder_get_source_fps(encoder);
>
> fps = get_max_fps(enc_size, rate_control->byte_rate);
> spice_debug("mjpeg %p: jpeg %d: %.2f (KB) fps %d src-fps %u",
> @@ -618,7 +623,7 @@ static void mjpeg_encoder_adjust_params_to_bit_rate(MJpegEncoder *encoder)
> ((double)new_avg_enc_size) / rate_control->base_enc_size :
> 1);
>
> - src_fps = encoder->cbs.get_source_fps(encoder->cbs_opaque);
> + src_fps = mjpeg_encoder_get_source_fps(encoder);
>
> /*
> * The ratio between the new_fps and the current fps reflects the changes
> @@ -677,7 +682,7 @@ static void mjpeg_encoder_adjust_fps(MJpegEncoder *encoder, uint64_t now)
> spice_debug("defined=%u old-adjusted=%.2f", rate_control->fps, rate_control->adjusted_fps);
> fps_ratio = avg_fps / rate_control->fps;
> if (avg_fps + 0.5 < rate_control->fps &&
> - encoder->cbs.get_source_fps(encoder->cbs_opaque) > avg_fps) {
> + mjpeg_encoder_get_source_fps(encoder) > avg_fps) {
> double new_adjusted_fps = avg_fps ?
> (rate_control->adjusted_fps/fps_ratio) :
> rate_control->adjusted_fps * 2;
> @@ -1135,7 +1140,7 @@ static void mjpeg_encoder_handle_positive_client_stream_report(MJpegEncoder *enc
> }
>
> if ((rate_control->fps > MJPEG_IMPROVE_QUALITY_FPS_STRICT_TH ||
> - rate_control->fps >= encoder->cbs.get_source_fps(encoder->cbs_opaque)) &&
> + rate_control->fps >= mjpeg_encoder_get_source_fps(encoder)) &&
> rate_control->quality_id > MJPEG_QUALITY_SAMPLE_NUM / 2) {
> timeout = MJPEG_CLIENT_POSITIVE_REPORT_STRICT_TIMEOUT;
> } else {
> @@ -1219,7 +1224,7 @@ void mjpeg_encoder_client_stream_report(MJpegEncoder *encoder,
> spice_debug("min-delay %u client-delay %d", min_playback_delay, end_frame_delay);
>
> if (min_playback_delay > end_frame_delay) {
> - uint32_t src_fps = encoder->cbs.get_source_fps(encoder->cbs_opaque);
> + uint32_t src_fps = mjpeg_encoder_get_source_fps(encoder);
> /*
> * if the stream is at its highest rate, we can't estimate the "real"
> * network bit rate and the min_playback_delay
> @@ -1303,7 +1308,7 @@ static void mjpeg_encoder_process_server_drops(MJpegEncoder *encoder)
> double drop_factor;
> uint32_t fps;
>
> - fps = MIN(encoder->rate_control.fps, encoder->cbs.get_source_fps(encoder->cbs_opaque));
> + fps = MIN(encoder->rate_control.fps, mjpeg_encoder_get_source_fps(encoder));
> if (server_state->num_frames_encoded < fps * MJPEG_SERVER_STATUS_EVAL_FPS_INTERVAL) {
> return;
> }
> @@ -1315,7 +1320,7 @@ static void mjpeg_encoder_process_server_drops(MJpegEncoder *encoder)
> server_state->num_frames_dropped,
> num_frames_total,
> encoder->rate_control.fps,
> - encoder->cbs.get_source_fps(encoder->cbs_opaque));
> + mjpeg_encoder_get_source_fps(encoder));
>
> if (drop_factor > MJPEG_SERVER_STATUS_DOWNGRADE_DROP_FACTOR_TH) {
> mjpeg_encoder_decrease_bit_rate(encoder);
> --
> 2.6.2
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list