am 6d35d4c2: Merge change Ib16e5543 into eclair-mr2

Merge commit '6d35d4c2cff4ad411fe7d6fde3fda0467d1016c5' into eclair-mr2-plus-aosp

* commit '6d35d4c2cff4ad411fe7d6fde3fda0467d1016c5':
  Fix the mp3 audio extractor that would occasionally return an invalid frame directly after a seek.
This commit is contained in:
Andreas Huber
2009-12-09 15:46:43 -08:00
committed by Android Git Automerger

View File

@@ -33,6 +33,10 @@
namespace android { namespace android {
// Everything must match except for
// protection, bitrate, padding, private bits and mode extension.
static const uint32_t kMask = 0xfffe0ccf;
static bool get_mp3_frame_size( static bool get_mp3_frame_size(
uint32_t header, size_t *frame_size, uint32_t header, size_t *frame_size,
int *out_sampling_rate = NULL, int *out_channels = NULL, int *out_sampling_rate = NULL, int *out_channels = NULL,
@@ -199,10 +203,6 @@ static bool Resync(
} }
} }
// Everything must match except for
// protection, bitrate, padding, private bits and mode extension.
const uint32_t kMask = 0xfffe0ccf;
const size_t kMaxFrameSize = 4096; const size_t kMaxFrameSize = 4096;
uint8_t *buffer = new uint8_t[kMaxFrameSize]; uint8_t *buffer = new uint8_t[kMaxFrameSize];
@@ -490,7 +490,8 @@ status_t MP3Source::read(
uint32_t header = U32_AT((const uint8_t *)buffer->data()); uint32_t header = U32_AT((const uint8_t *)buffer->data());
if (get_mp3_frame_size(header, &frame_size)) { if ((header & kMask) == (mFixedHeader & kMask)
&& get_mp3_frame_size(header, &frame_size)) {
break; break;
} }