diff options
Diffstat (limited to 'src/decoder')
-rw-r--r-- | src/decoder/plugins/MadDecoderPlugin.cxx | 91 |
1 files changed, 31 insertions, 60 deletions
diff --git a/src/decoder/plugins/MadDecoderPlugin.cxx b/src/decoder/plugins/MadDecoderPlugin.cxx index 0ab9ab8a4..4e3fb1cfd 100644 --- a/src/decoder/plugins/MadDecoderPlugin.cxx +++ b/src/decoder/plugins/MadDecoderPlugin.cxx @@ -96,12 +96,9 @@ mad_fixed_to_24_buffer(int32_t *dest, const struct mad_synth *synth, unsigned int start, unsigned int end, unsigned int num_channels) { - unsigned int i, c; - - for (i = start; i < end; ++i) { - for (c = 0; c < num_channels; ++c) + for (unsigned i = start; i < end; ++i) + for (unsigned c = 0; c < num_channels; ++c) *dest++ = mad_fixed_to_24_sample(synth->pcm.samples[c][i]); - } } static bool @@ -254,22 +251,19 @@ static bool parse_id3_replay_gain_info(ReplayGainInfo &rgi, struct id3_tag *tag) { - int i; - char *key; - char *value; - struct id3_frame *frame; bool found = false; rgi.Clear(); - for (i = 0; (frame = id3_tag_findframe(tag, "TXXX", i)); i++) { + struct id3_frame *frame; + for (unsigned i = 0; (frame = id3_tag_findframe(tag, "TXXX", i)); i++) { if (frame->nfields < 3) continue; - key = (char *) + char *const key = (char *) id3_ucs4_latin1duplicate(id3_field_getstring (&frame->fields[1])); - value = (char *) + char *const value = (char *) id3_ucs4_latin1duplicate(id3_field_getstring (&frame->fields[2])); @@ -302,21 +296,17 @@ gcc_pure static MixRampInfo parse_id3_mixramp(struct id3_tag *tag) { - int i; - char *key; - char *value; - struct id3_frame *frame; - MixRampInfo result; - for (i = 0; (frame = id3_tag_findframe(tag, "TXXX", i)); i++) { + struct id3_frame *frame; + for (unsigned i = 0; (frame = id3_tag_findframe(tag, "TXXX", i)); i++) { if (frame->nfields < 3) continue; - key = (char *) + char *const key = (char *) id3_ucs4_latin1duplicate(id3_field_getstring (&frame->fields[1])); - value = (char *) + char *const value = (char *) id3_ucs4_latin1duplicate(id3_field_getstring (&frame->fields[2])); @@ -338,13 +328,11 @@ inline void MadDecoder::ParseId3(size_t tagsize, Tag **mpd_tag) { #ifdef HAVE_ID3TAG - struct id3_tag *id3_tag = nullptr; - id3_length_t count; - id3_byte_t const *id3_data; id3_byte_t *allocated = nullptr; - count = stream.bufend - stream.this_frame; + const id3_length_t count = stream.bufend - stream.this_frame; + const id3_byte_t *id3_data; if (tagsize <= count) { id3_data = stream.this_frame; mad_stream_skip(&(stream), tagsize); @@ -363,7 +351,7 @@ MadDecoder::ParseId3(size_t tagsize, Tag **mpd_tag) id3_data = allocated; } - id3_tag = id3_tag_parse(id3_data, tagsize); + struct id3_tag *const id3_tag = id3_tag_parse(id3_data, tagsize); if (id3_tag == nullptr) { delete[] allocated; return; @@ -558,17 +546,12 @@ struct lame { static bool parse_xing(struct xing *xing, struct mad_bitptr *ptr, int *oldbitlen) { - unsigned long bits; - int bitlen; - int bitsleft; - int i; - - bitlen = *oldbitlen; + int bitlen = *oldbitlen; if (bitlen < 16) return false; - bits = mad_bit_read(ptr, 16); + const unsigned long bits = mad_bit_read(ptr, 16); bitlen -= 16; if (bits == XI_MAGIC) { @@ -617,7 +600,8 @@ parse_xing(struct xing *xing, struct mad_bitptr *ptr, int *oldbitlen) if (xing->flags & XING_TOC) { if (bitlen < 800) return false; - for (i = 0; i < 100; ++i) xing->toc[i] = mad_bit_read(ptr, 8); + for (unsigned i = 0; i < 100; ++i) + xing->toc[i] = mad_bit_read(ptr, 8); bitlen -= 800; } @@ -630,7 +614,7 @@ parse_xing(struct xing *xing, struct mad_bitptr *ptr, int *oldbitlen) /* Make sure we consume no less than 120 bytes (960 bits) in hopes that * the LAME tag is found there, and not right after the Xing header */ - bitsleft = 960 - ((*oldbitlen) - bitlen); + const int bitsleft = 960 - (*oldbitlen - bitlen); if (bitsleft < 0) return false; else if (bitsleft > 0) { @@ -646,19 +630,12 @@ parse_xing(struct xing *xing, struct mad_bitptr *ptr, int *oldbitlen) static bool parse_lame(struct lame *lame, struct mad_bitptr *ptr, int *bitlen) { - int adj = 0; - int name; - int orig; - int sign; - int gain; - int i; - /* Unlike the xing header, the lame tag has a fixed length. Fail if * not all 36 bytes (288 bits) are there. */ if (*bitlen < 288) return false; - for (i = 0; i < 9; i++) + for (unsigned i = 0; i < 9; i++) lame->encoder[i] = (char)mad_bit_read(ptr, 8); lame->encoder[9] = '\0'; @@ -684,6 +661,7 @@ parse_lame(struct lame *lame, struct mad_bitptr *ptr, int *bitlen) * it's impossible to make the proper adjustment for 3.95. * Fortunately, 3.95 was only out for about a day before 3.95.1 was * released. -- tmz */ + int adj = 0; if (lame->version.major < 3 || (lame->version.major == 3 && lame->version.minor < 95)) adj = 6; @@ -694,10 +672,10 @@ parse_lame(struct lame *lame, struct mad_bitptr *ptr, int *bitlen) FormatDebug(mad_domain, "LAME peak found: %f", lame->peak); lame->track_gain = 0; - name = mad_bit_read(ptr, 3); /* gain name */ - orig = mad_bit_read(ptr, 3); /* gain originator */ - sign = mad_bit_read(ptr, 1); /* sign bit */ - gain = mad_bit_read(ptr, 9); /* gain*10 */ + unsigned name = mad_bit_read(ptr, 3); /* gain name */ + unsigned orig = mad_bit_read(ptr, 3); /* gain originator */ + unsigned sign = mad_bit_read(ptr, 1); /* sign bit */ + unsigned gain = mad_bit_read(ptr, 9); /* gain*10 */ if (gain && name == 1 && orig != 0) { lame->track_gain = ((sign ? -gain : gain) / 10.0) + adj; FormatDebug(mad_domain, "LAME track gain found: %f", @@ -785,17 +763,13 @@ MadDecoder::FileSizeToSongLength() inline bool MadDecoder::DecodeFirstFrame(Tag **tag) { - struct xing xing; - struct lame lame; - struct mad_bitptr ptr; - int bitlen; - enum mp3_action ret; - /* stfu gcc */ + struct xing xing; memset(&xing, 0, sizeof(struct xing)); xing.flags = 0; while (true) { + enum mp3_action ret; do { ret = DecodeNextFrameHeader(tag); } while (ret == DECODE_CONT); @@ -811,8 +785,8 @@ MadDecoder::DecodeFirstFrame(Tag **tag) if (ret == DECODE_OK) break; } - ptr = stream.anc_ptr; - bitlen = stream.anc_bitlen; + struct mad_bitptr ptr = stream.anc_ptr; + int bitlen = stream.anc_bitlen; FileSizeToSongLength(); @@ -830,6 +804,7 @@ MadDecoder::DecodeFirstFrame(Tag **tag) max_frames = xing.frames; } + struct lame lame; if (parse_lame(&lame, &ptr, &bitlen)) { if (gapless_playback && input_stream.IsSeekable()) { drop_start_samples = lame.encoder_delay + @@ -931,9 +906,7 @@ MadDecoder::UpdateTimerNextFrame() DecoderCommand MadDecoder::SendPCM(unsigned i, unsigned pcm_length) { - unsigned max_samples; - - max_samples = sizeof(output_buffer) / + unsigned max_samples = sizeof(output_buffer) / sizeof(output_buffer[0]) / MAD_NCHANNELS(&frame.header); @@ -1128,9 +1101,7 @@ static bool mad_decoder_scan_stream(InputStream &is, const struct tag_handler *handler, void *handler_ctx) { - int total_time; - - total_time = mad_decoder_total_file_time(is); + const int total_time = mad_decoder_total_file_time(is); if (total_time < 0) return false; |