aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-04-08 00:26:13 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-04-08 00:26:13 +0000
commit00471c0fab32be1c3c21beb917768b7a7afe6000 (patch)
treed7c5f2ede86afc714692e4dc7c882af340f52f43
parentf14ef6a878019797b3d29fb83aaa565710deec62 (diff)
parentae3bb26fa7a619c72c1fb2939f7059f019c3d4c1 (diff)
downloadflac-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.c7
-rw-r--r--libFLAC/stream_encoder.c4
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)