1
0

template.c: extract BITS_PER_BYTE

Additionally, do not cast values to `long double` to calculate for
`uintmax_t bit_depth_stretch`
This commit is contained in:
Intel A80486DX2-66 2024-07-13 22:35:33 +03:00
parent c1ea01869f
commit f1f5c2a859
Signed by: 80486DX2-66
GPG Key ID: 83631EF27054609B

View File

@ -31,7 +31,9 @@
#define CHANNELS `channels` #define CHANNELS `channels`
#define LENGTH `length` #define LENGTH `length`
#if BIT_DEPTH <= 8 #define BITS_PER_BYTE 8
#if BIT_DEPTH <= BITS_PER_BYTE
# define SAMPLE_TYPE uint8_t # define SAMPLE_TYPE uint8_t
#elif BIT_DEPTH >= 16 #elif BIT_DEPTH >= 16
# if IS_SIGNED # if IS_SIGNED
@ -192,11 +194,11 @@ main(void)
* in the file format structure * in the file format structure
*/, */,
sample_rate = SAMPLE_RATE, sample_rate = SAMPLE_RATE,
byte_rate = (SAMPLE_RATE * BIT_DEPTH * CHANNELS) / 8; byte_rate = (SAMPLE_RATE * BIT_DEPTH * CHANNELS) / BITS_PER_BYTE;
uint16_t fmt_type = 1, // format type is PCM uint16_t fmt_type = 1, // format type is PCM
channels = CHANNELS, channels = CHANNELS,
block_align = (BIT_DEPTH * CHANNELS) / 8, block_align = (BIT_DEPTH * CHANNELS) / BITS_PER_BYTE,
bit_depth = BIT_DEPTH > 8 ? BIT_DEPTH : 8; bit_depth = BIT_DEPTH > BITS_PER_BYTE ? BIT_DEPTH : BITS_PER_BYTE;
// 3. write headers // 3. write headers
// <L = Little-endian or B = Big-endian> : <name> : <bytes of field> // <L = Little-endian or B = Big-endian> : <name> : <bytes of field>
@ -244,9 +246,9 @@ main(void)
#if FP_RETURN_TYPE #if FP_RETURN_TYPE
+ 1 + 1
#endif #endif
#if BIT_DEPTH < 8 #if BIT_DEPTH < BITS_PER_BYTE
, ,
bit_depth_stretch = ((long double) BIT_DEPTH) / 8.L bit_depth_stretch = BIT_DEPTH / BITS_PER_BYTE
#endif #endif
; ;
@ -288,8 +290,8 @@ main(void)
((uintmax_t) bytebeat_res & bit_depth_limiter); ((uintmax_t) bytebeat_res & bit_depth_limiter);
#endif #endif
// 4. if bit depth is less than 8, stretch it // 4. if bit depth is less than BITS_PER_BYTE, stretch it
#if BIT_DEPTH < 8 #if BIT_DEPTH < BITS_PER_BYTE
sample_res = (SAMPLE_TYPE) sample_res = (SAMPLE_TYPE)
((long double) sample_res * bit_depth_stretch); ((long double) sample_res * bit_depth_stretch);
#endif #endif