|
@@ -307,12 +307,14 @@ libmegapixels_format_cfa_pattern(int format)
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
uint32_t
|
|
|
libmegapixels_mode_width_to_bytes(int index, uint32_t width)
|
|
|
{
|
|
|
uint32_t bits_per_pixel = mode_lut[index].bpp;
|
|
|
+
|
|
|
+ if (bits_per_pixel % 8 != 0 && !libmegapixels_mode_is_packed(index))
|
|
|
+ bits_per_pixel = bits_per_pixel + 8 - (bits_per_pixel % 8);
|
|
|
uint64_t bits_per_width = width * (uint64_t) bits_per_pixel;
|
|
|
uint64_t remainder = bits_per_width % 8;
|
|
|
if (remainder == 0)
|
|
@@ -321,17 +323,18 @@ libmegapixels_mode_width_to_bytes(int index, uint32_t width)
|
|
|
return (bits_per_width + 8 - remainder) / 8;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
uint32_t
|
|
|
libmegapixels_mode_width_to_padding(int index, uint32_t width)
|
|
|
{
|
|
|
- int remainder = mode_lut[index].bpp % 8;
|
|
|
- if (remainder == 0 || libmegapixels_mode_is_packed(index))
|
|
|
+ if (mode_lut[index].bpp == 8) {
|
|
|
return 0;
|
|
|
+ }
|
|
|
+ uint64_t bytes_per_width = libmegapixels_mode_width_to_bytes(index, width);
|
|
|
+ uint64_t remainder = bytes_per_width % 8;
|
|
|
+ if (remainder == 0)
|
|
|
+ return remainder;
|
|
|
|
|
|
- uint32_t padding = ((uint64_t) (8 - remainder) * width) / 8;
|
|
|
-
|
|
|
- return padding;
|
|
|
+ return 8 - remainder;
|
|
|
}
|
|
|
|
|
|
uint32_t
|