diff options
Diffstat (limited to 'libhb')
-rw-r--r-- | libhb/common.h | 9 | ||||
-rw-r--r-- | libhb/hb.c | 16 |
2 files changed, 12 insertions, 13 deletions
diff --git a/libhb/common.h b/libhb/common.h index 2882bdf37..ef10fff41 100644 --- a/libhb/common.h +++ b/libhb/common.h @@ -63,11 +63,10 @@ #define HB_DEBUG_ASSERT(x, y) { if ((x)) { hb_error("ASSERT: %s", y); exit(1); } } #endif -#define EVEN( a ) ( (a) + ( (a) & 1 ) ) -#define MULTIPLE_16( a ) ( 16 * ( ( (a) + 8 ) / 16 ) ) -#define MULTIPLE_MOD( a, b ) ((b==1)?a:( b * ( ( (a) + (b / 2) - 1) / b ) )) -#define MULTIPLE_MOD_UP( a, b ) ((b==1)?a:( b * ( ( (a) + (b) - 1) / b ) )) -#define MULTIPLE_MOD_DOWN( a, b ) ((b==1)?a:( b * ( (a) / b ) )) +#define EVEN( a ) ((a) + ((a) & 1)) +#define MULTIPLE_MOD(a, b) (((b) * (int)(((a) + ((b) / 2)) / (b)))) +#define MULTIPLE_MOD_UP(a, b) (((b) * (int)(((a) + ((b) - 1)) / (b)))) +#define MULTIPLE_MOD_DOWN(a, b) (((b) * (int)((a) / (b)))) #define HB_DVD_READ_BUFFER_SIZE 2048 diff --git a/libhb/hb.c b/libhb/hb.c index e7c9c22bf..1ba78d774 100644 --- a/libhb/hb.c +++ b/libhb/hb.c @@ -1079,12 +1079,12 @@ void hb_set_anamorphic_size2(hb_geometry_t *src_geo, if (!keep_height) { width = MULTIPLE_MOD_UP(ui_geo->width, mod); - height = MULTIPLE_MOD((int)(width / dar), mod); + height = MULTIPLE_MOD(width / dar, mod); } else { height = MULTIPLE_MOD_UP(ui_geo->height, mod); - width = MULTIPLE_MOD((int)(height * dar), mod); + width = MULTIPLE_MOD(height * dar, mod); } } else @@ -1095,12 +1095,12 @@ void hb_set_anamorphic_size2(hb_geometry_t *src_geo, if (maxWidth && (width > maxWidth)) { width = maxWidth; - height = MULTIPLE_MOD((int)(width / dar), mod); + height = MULTIPLE_MOD(width / dar, mod); } if (maxHeight && (height > maxHeight)) { height = maxHeight; - width = MULTIPLE_MOD((int)(height * dar), mod); + width = MULTIPLE_MOD(height * dar, mod); } dst_par_num = dst_par_den = 1; } break; @@ -1141,24 +1141,24 @@ void hb_set_anamorphic_size2(hb_geometry_t *src_geo, if (!keep_height) { width = MULTIPLE_MOD_UP(ui_geo->width, mod); - height = MULTIPLE_MOD_UP((int)(width / storage_aspect + 0.5), mod); + height = MULTIPLE_MOD_UP(width / storage_aspect + 0.5, mod); } else { height = MULTIPLE_MOD_UP(ui_geo->height, mod); - width = MULTIPLE_MOD_UP((int)(height * storage_aspect + 0.5), mod); + width = MULTIPLE_MOD_UP(height * storage_aspect + 0.5, mod); } if (maxWidth && (maxWidth < width)) { width = maxWidth; - height = MULTIPLE_MOD((int)(width / storage_aspect + 0.5), mod); + height = MULTIPLE_MOD(width / storage_aspect + 0.5, mod); } if (maxHeight && (maxHeight < height)) { height = maxHeight; - width = MULTIPLE_MOD((int)(height * storage_aspect + 0.5), mod); + width = MULTIPLE_MOD(height * storage_aspect + 0.5, mod); } /* Adjust the output PAR for new width/height |