Commit 5eab5199 by andrewlewis Committed by Oliver Woodman

Revert to using header bitrate for CBR MP3s

A previous change switched to calculation of the bitrate based on the
first MPEG audio header in the stream. This had the effect of fixing
seeking to be consistent with playing from the start for streams where
every frame has the same padding value, but broke streams where the
encoder (correctly) modifies the padding value to match the declared
bitrate in the header.

Issue: #6238
PiperOrigin-RevId: 261163904
parent 42d3ca27
......@@ -31,6 +31,8 @@
([#6241](https://github.com/google/ExoPlayer/issues/6241)).
* Fix Flac and ALAC playback on some LG devices
([#5938](https://github.com/google/ExoPlayer/issues/5938)).
* MP3: use CBR header bitrate, not calculated bitrate. This reverts a change
from 2.9.3 ([#6238](https://github.com/google/ExoPlayer/issues/6238)).
### 2.10.4 ###
......
......@@ -186,10 +186,6 @@ public final class MpegAudioHeader {
}
}
// Calculate the bitrate in the same way Mp3Extractor calculates sample timestamps so that
// seeking to a given timestamp and playing from the start up to that timestamp give the same
// results for CBR streams. See also [internal: b/120390268].
bitrate = 8 * frameSize * sampleRate / samplesPerFrame;
String mimeType = MIME_TYPE_BY_LAYER[3 - layer];
int channels = ((headerData >> 6) & 3) == 3 ? 1 : 2;
header.setValues(version, mimeType, frameSize, sampleRate, channels, bitrate, samplesPerFrame);
......
seekMap:
isSeekable = true
duration = 26122
duration = 26125
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 1
track 0:
......
seekMap:
isSeekable = true
duration = 26122
duration = 26125
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 1
track 0:
......
seekMap:
isSeekable = true
duration = 26122
duration = 26125
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 1
track 0:
......
seekMap:
isSeekable = true
duration = 26122
duration = 26125
getPosition(0) = [[timeUs=0, position=0]]
numberOfTracks = 1
track 0:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment