[Spice-devel] server: Simplify the MJPEG encoder's maximum framerate estimation
Frediano Ziglio
fziglio at redhat.com
Thu Dec 3 08:04:59 PST 2015
>
> Also round it to the nearest integer instead of rounding down.
>
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
> ---
> server/mjpeg_encoder.c | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
> index 9b331c1..752dae8 100644
> --- a/server/mjpeg_encoder.c
> +++ b/server/mjpeg_encoder.c
> @@ -341,15 +341,7 @@ static inline uint32_t
> mjpeg_encoder_get_latency(MJpegEncoder *encoder)
>
> static uint32_t get_max_fps(uint64_t frame_size, uint64_t bytes_per_sec)
> {
> - double fps;
> - double send_time_ms;
> -
> - if (!bytes_per_sec) {
> - return 0;
> - }
> - send_time_ms = frame_size * 1000.0 / bytes_per_sec;
> - fps = send_time_ms ? 1000 / send_time_ms : MJPEG_MAX_FPS;
> - return fps;
> + return frame_size ? (bytes_per_sec + frame_size / 2) / frame_size :
> MJPEG_MAX_FPS;
> }
>
> static inline void mjpeg_encoder_reset_quality(MJpegEncoder *encoder,
I think the exact simplification is
if (!bytes_per_sec) {
return 0;
}
return frame_size ? bytes_per_sec / frame_size : MJPEG_MAX_FPS;
You already noted that you used rounding instead or truncation;
depending on the usage can be correct or not.
This change that if bytes_per_sec == 0 and frame_size == 0 previous
code returned 0 while now returns MJPEG_MAX_FPS. I think this
is not possible!
Frediano
More information about the Spice-devel
mailing list