am7xxx: round scaled_height and scaled_width
[libam7xxx.git] / src / am7xxx.c
index a840589..1035e23 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdarg.h>
 #include <errno.h>
 #include <libusb.h>
 #include <stdarg.h>
 #include <errno.h>
 #include <libusb.h>
+#include <math.h>
 
 #include "am7xxx.h"
 #include "serialize.h"
 
 #include "am7xxx.h"
 #include "serialize.h"
@@ -69,7 +70,7 @@ static struct am7xxx_usb_device_descriptor supported_devices[] = {
 };
 
 /* The header size on the wire is known to be always 24 bytes, regardless of
 };
 
 /* The header size on the wire is known to be always 24 bytes, regardless of
- * the memory configuration enforced by different architechtures or compilers
+ * the memory configuration enforced by different architectures or compilers
  * for struct am7xxx_header
  */
 #define AM7XXX_HEADER_WIRE_SIZE 24
  * for struct am7xxx_header
  */
 #define AM7XXX_HEADER_WIRE_SIZE 24
@@ -244,6 +245,7 @@ static void debug_dump_header(am7xxx_context *ctx, struct am7xxx_header *h)
        (void)ctx;
        (void)h;
 }
        (void)ctx;
        (void)h;
 }
+
 static void trace_dump_buffer(am7xxx_context *ctx, const char *message,
                              uint8_t *buffer, unsigned int len)
 {
 static void trace_dump_buffer(am7xxx_context *ctx, const char *message,
                              uint8_t *buffer, unsigned int len)
 {
@@ -729,18 +731,18 @@ int am7xxx_calc_scaled_image_dimensions(am7xxx_device *dev,
        if (width_ratio > height_ratio) {
                /*
                 * The input is proportionally "wider" than the device viewport
        if (width_ratio > height_ratio) {
                /*
                 * The input is proportionally "wider" than the device viewport
-                * so it's height needs to be adjusted
+                * so its height needs to be adjusted
                 */
                debug(dev->ctx, "CASE 1, original image wider, adjust the scaled height\n");
                *scaled_width = device_info.native_width;
                 */
                debug(dev->ctx, "CASE 1, original image wider, adjust the scaled height\n");
                *scaled_width = device_info.native_width;
-               *scaled_height = (unsigned int)(original_height / width_ratio);
+               *scaled_height = (unsigned int)lroundf(original_height / width_ratio);
        } else if (width_ratio < height_ratio) {
                /*
                 * The input is proportionally "taller" than the device viewport
                 * so its width needs to be adjusted
                 */
                debug(dev->ctx, "CASE 2 original image taller, adjust the scaled width\n");
        } else if (width_ratio < height_ratio) {
                /*
                 * The input is proportionally "taller" than the device viewport
                 * so its width needs to be adjusted
                 */
                debug(dev->ctx, "CASE 2 original image taller, adjust the scaled width\n");
-               *scaled_width = (unsigned int)(original_width / height_ratio);
+               *scaled_width = (unsigned int)lroundf(original_width / height_ratio);
                *scaled_height = device_info.native_height;
        } else {
                debug(dev->ctx, "CASE 3, just rescale, same aspect ratio already\n");
                *scaled_height = device_info.native_height;
        } else {
                debug(dev->ctx, "CASE 3, just rescale, same aspect ratio already\n");