#define ENC_BUFFER_SIZE 8192
+/*
+** READ_LOOP_MAX_LEN is the maximum 'len' that will be passed to
+** flac_read_loop(). This is somewhat arbitrary, but must be less
+** than (UINT_MAX - FLAC__MAX_CHANNELS * FLAC__MAX_BLOCK_SIZE) to
+** avoid overflows, and must also be a multiple of the number of
+** channels (which is between 1 and 8.)
+*/
+#define READ_LOOP_MAX_LEN (0x10000 * 3 * 5 * 7)
+
typedef enum
{ PFLAC_PCM_SHORT = 50,
PFLAC_PCM_INT = 51,
while (total < len)
{ pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
+ readlen = (len - total > READ_LOOP_MAX_LEN) ? READ_LOOP_MAX_LEN : (unsigned) (len - total) ;
current = flac_read_loop (psf, readlen) ;
if (current == 0)
break ;
while (total < len)
{ pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
+ readlen = (len - total > READ_LOOP_MAX_LEN) ? READ_LOOP_MAX_LEN : (unsigned) (len - total) ;
current = flac_read_loop (psf, readlen) ;
if (current == 0)
break ;
while (total < len)
{ pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
+ readlen = (len - total > READ_LOOP_MAX_LEN) ? READ_LOOP_MAX_LEN : (unsigned) (len - total) ;
current = flac_read_loop (psf, readlen) ;
if (current == 0)
break ;
while (total < len)
{ pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
+ readlen = (len - total > READ_LOOP_MAX_LEN) ? READ_LOOP_MAX_LEN : (unsigned) (len - total) ;
current = flac_read_loop (psf, readlen) ;
if (current == 0)
for (int i = 0 ; i < count ; i++)
{ scaled_value = src [i] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7F))
+ if (scaled_value >= (1.0 * 0x7F))
{ dest [i] = 0x7F ;
continue ;
} ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10))
+ if (scaled_value <= (-8.0 * 0x10))
{ dest [i] = -0x80 ;
continue ;
} ;
for (int i = 0 ; i < count ; i++)
{ scaled_value = src [i] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFF))
+ if (scaled_value >= (1.0 * 0x7FFF))
{ dest [i] = 0x7FFF ;
continue ;
} ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x1000))
+ if (scaled_value <= (-8.0 * 0x1000))
{ dest [i] = -0x8000 ;
continue ;
} ;
for (int i = 0 ; i < count ; i++)
{ scaled_value = src [i] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFF))
+ if (scaled_value >= (1.0 * 0x7FFFFF))
{ dest [i] = 0x7FFFFF ;
continue ;
} ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x100000))
+ if (scaled_value <= (-8.0 * 0x100000))
{ dest [i] = -0x800000 ;
continue ;
}
for (int i = 0 ; i < count ; i++)
{ scaled_value = src [i] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7F))
+ if (scaled_value >= (1.0 * 0x7F))
{ dest [i] = 0x7F ;
continue ;
} ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10))
+ if (scaled_value <= (-8.0 * 0x10))
{ dest [i] = -0x80 ;
continue ;
} ;
for (int i = 0 ; i < count ; i++)
{ scaled_value = src [i] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFF))
+ if (scaled_value >= (1.0 * 0x7FFF))
{ dest [i] = 0x7FFF ;
continue ;
} ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x1000))
+ if (scaled_value <= (-8.0 * 0x1000))
{ dest [i] = -0x8000 ;
continue ;
} ;
for (int i = 0 ; i < count ; i++)
{ scaled_value = src [i] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFF))
+ if (scaled_value >= (1.0 * 0x7FFFFF))
{ dest [i] = 0x7FFFFF ;
continue ;
} ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x100000))
+ if (scaled_value <= (-8.0 * 0x100000))
{ dest [i] = -0x800000 ;
continue ;
} ;