[Spice-commits] server/gstreamer-encoder.c server/utils.h

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 3 13:25:19 UTC 2019


 server/gstreamer-encoder.c |    3 ++-
 server/utils.h             |    5 +++++
 2 files changed, 7 insertions(+), 1 deletion(-)

New commits:
commit 48ab22b7288dfb7182b0b3c1a3b4478e607ceb92
Author: Kevin Pouget <kpouget at redhat.com>
Date:   Wed Jul 3 14:27:50 2019 +0200

    gstreamer-encoder: fix compiler warning with Fedora 30
    
    Fedora 30 / gcc 9.1.1 20190503 (Red Hat 9.1.1-1) fails to build
    because of this error/warning:
    
    > gstreamer-encoder.c: In function 'set_video_bit_rate':
    > gstreamer-encoder.c:518:17: error: taking the absolute value of
    > unsigned type 'uint64_t' {aka 'long unsigned int'} has no effect
    > [-Werror=absolute-value]
    >  518 |     } else  if (abs(bit_rate - encoder->video_bit_rate) > encoder->video_bit_rate * SPICE_GST_VIDEO_BITRATE_MARGIN) {
    >      |                 ^~~
    > gstreamer-encoder.c:518:17: error: absolute value function 'abs'
    > given an argument of type 'uint64_t' {aka 'long unsigned int'}
    
    This patches solves these two warnings:
    
    1) cast the substraction to a signed type (int64_t instead of
    uint64_t) to preserve the operation meaning;
    
    2) use a custom version of abs() to avoid data truncation and/or
    platform-dependent type lengths (abs/labs/llabs)
    
    Acked-by: Frediano Ziglio <fziglio at redhat.com>

diff --git a/server/gstreamer-encoder.c b/server/gstreamer-encoder.c
index 6416b688..172745e5 100644
--- a/server/gstreamer-encoder.c
+++ b/server/gstreamer-encoder.c
@@ -515,7 +515,8 @@ static void set_video_bit_rate(SpiceGstEncoder *encoder, uint64_t bit_rate)
         encoder->video_bit_rate = bit_rate;
         set_gstenc_bitrate(encoder);
 
-    } else  if (abs(bit_rate - encoder->video_bit_rate) > encoder->video_bit_rate * SPICE_GST_VIDEO_BITRATE_MARGIN) {
+    } else if (i64abs((int64_t)(bit_rate - encoder->video_bit_rate)) >
+               encoder->video_bit_rate * SPICE_GST_VIDEO_BITRATE_MARGIN) {
         encoder->video_bit_rate = bit_rate;
         set_pipeline_changes(encoder, SPICE_GST_VIDEO_PIPELINE_BITRATE);
     }
diff --git a/server/utils.h b/server/utils.h
index 2cbd779c..f13c6839 100644
--- a/server/utils.h
+++ b/server/utils.h
@@ -75,4 +75,9 @@ int red_channel_name_to_type(const char *name);
 
 void red_dump_openssl_errors(void);
 
+static inline int64_t i64abs(int64_t value)
+{
+    return (value >= 0) ? value : -value;
+}
+
 #endif /* UTILS_H_ */


More information about the Spice-commits mailing list