media/libraries/exoplayer/src
ibaker 6e91f0d4c5 Use ceiling divide logic in AudioTrackPositionTracker.hasPendingData
This fixes a bug with playing very short audio files, introduced by
fe710871aa

The existing code using floor integer division results in playback never
transitioning to `STATE_ENDED` because at the end of playback for the
short sample clip provided `currentPositionUs=189937`,
`outputSampleRate=16000` and `(189937 * 16000) / 1000000 = 3038.992`,
while `writtenFrames=3039`. This is fixed by using `Util.ceilDivide`
so we return `3039`, which means
`AudioTrackPositionTracker.hasPendingData()` returns `false` (since
`writtenFrames ==
durationUsToFrames(getCurrentPositionUs(/* sourceEnded= */ false))`).

#minor-release

Issue: androidx/media#538
PiperOrigin-RevId: 554481782
2023-08-10 11:57:15 +00:00
..
androidTest Extend Player interface, overloading 4 device-volume methods with flags 2023-04-13 16:30:30 +01:00
main Use ceiling divide logic in AudioTrackPositionTracker.hasPendingData 2023-08-10 11:57:15 +00:00
test Fix last sample detection issue for ClippingMediaSource 2023-08-07 11:34:34 +00:00