diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-04-08 00:26:13 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-04-08 00:26:13 +0000 |
commit | 00471c0fab32be1c3c21beb917768b7a7afe6000 (patch) | |
tree | d7c5f2ede86afc714692e4dc7c882af340f52f43 | |
parent | f14ef6a878019797b3d29fb83aaa565710deec62 (diff) | |
parent | ae3bb26fa7a619c72c1fb2939f7059f019c3d4c1 (diff) | |
download | flac-android11-mainline-tethering-release.tar.gz |
Snap for 7266504 from ae3bb26fa7a619c72c1fb2939f7059f019c3d4c1 to mainline-tethering-releaseandroid-mainline-11.0.0_r43android11-mainline-tethering-release
Change-Id: I407cdfd86085a38d61ab2cd87232a78452a804c2
-rw-r--r-- | libFLAC/stream_decoder.c | 7 | ||||
-rw-r--r-- | libFLAC/stream_encoder.c | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/libFLAC/stream_decoder.c b/libFLAC/stream_decoder.c index 7db34cfe..5d439eb7 100644 --- a/libFLAC/stream_decoder.c +++ b/libFLAC/stream_decoder.c @@ -3123,8 +3123,11 @@ FLAC__bool seek_to_absolute_sample_(FLAC__StreamDecoder *decoder, FLAC__uint64 s /* a little less accurate: */ if(upper_bound - lower_bound < 0xffffffff) pos = (FLAC__int64)lower_bound + (FLAC__int64)(((target_sample - lower_bound_sample) * (upper_bound - lower_bound)) / (upper_bound_sample - lower_bound_sample)) - approx_bytes_per_frame; - else /* @@@ WATCHOUT, ~2TB limit */ - pos = (FLAC__int64)lower_bound + (FLAC__int64)((((target_sample - lower_bound_sample)>>8) * ((upper_bound - lower_bound)>>8)) / ((upper_bound_sample - lower_bound_sample)>>16)) - approx_bytes_per_frame; + else { /* @@@ WATCHOUT, ~2TB limit */ + FLAC__uint64 sample_range_16 = (upper_bound_sample - lower_bound_sample) >> 16; + if (sample_range_16 == 0) sample_range_16 = 1; // avoid divide by 0 + pos = (FLAC__int64)lower_bound + (FLAC__int64)(((target_sample - lower_bound_sample) >> 8) * ((upper_bound - lower_bound) >> 8) / sample_range_16) - approx_bytes_per_frame; + } #endif if(pos >= (FLAC__int64)upper_bound) pos = (FLAC__int64)upper_bound - 1; diff --git a/libFLAC/stream_encoder.c b/libFLAC/stream_encoder.c index 037b8cb5..b0b26501 100644 --- a/libFLAC/stream_encoder.c +++ b/libFLAC/stream_encoder.c @@ -2578,7 +2578,9 @@ FLAC__bool write_bitbuffer_(FLAC__StreamEncoder *encoder, unsigned samples, FLAC encoder->private_->verify.needs_magic_hack = true; } else { - if(!FLAC__stream_decoder_process_single(encoder->private_->verify.decoder)) { + if(!FLAC__stream_decoder_process_single(encoder->private_->verify.decoder) + || (!is_last_block + && (FLAC__stream_encoder_get_verify_decoder_state(encoder) == FLAC__STREAM_DECODER_END_OF_STREAM))) { FLAC__bitwriter_release_buffer(encoder->private_->frame); FLAC__bitwriter_clear(encoder->private_->frame); if(encoder->protected_->state != FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA) |