diff options
| author | Bryan Ferris <bferris@google.com> | 2019-12-20 20:08:55 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-12-20 20:08:55 +0000 |
| commit | 8f72d008d0c51da507fc3c447e68e02b9e2d8535 (patch) | |
| tree | 0fbe702fc55c1c2aef632dc49386a12608a039ca | |
| parent | 06e89d68d671ee486eeda3ab3bbf064ef21b83ee (diff) | |
| parent | 1eba80de4e733a5222459020517ed93327966640 (diff) | |
| download | frameworks_av-8f72d008d0c51da507fc3c447e68e02b9e2d8535.tar.gz frameworks_av-8f72d008d0c51da507fc3c447e68e02b9e2d8535.tar.bz2 frameworks_av-8f72d008d0c51da507fc3c447e68e02b9e2d8535.zip | |
Merge "Check actual read bytes for TS packets" into qt-qpr1-dev
| -rw-r--r-- | media/libmediaplayerservice/nuplayer/StreamingSource.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/media/libmediaplayerservice/nuplayer/StreamingSource.cpp b/media/libmediaplayerservice/nuplayer/StreamingSource.cpp index afdcd3739f..f21d2b3323 100644 --- a/media/libmediaplayerservice/nuplayer/StreamingSource.cpp +++ b/media/libmediaplayerservice/nuplayer/StreamingSource.cpp @@ -130,29 +130,32 @@ void NuPlayer::StreamingSource::onReadBuffer() { } else if (n < 0) { break; } else { - if (buffer[0] == 0x00) { + if (buffer[0] == 0x00) { // OK to access buffer[0] since n must be > 0 here // XXX legacy if (extra == NULL) { extra = new AMessage; } - uint8_t type = buffer[1]; + uint8_t type = 0; + if (n > 1) { + type = buffer[1]; - if (type & 2) { - int64_t mediaTimeUs; - memcpy(&mediaTimeUs, &buffer[2], sizeof(mediaTimeUs)); + if ((type & 2) && (n >= 2 + sizeof(int64_t))) { + int64_t mediaTimeUs; + memcpy(&mediaTimeUs, &buffer[2], sizeof(mediaTimeUs)); - extra->setInt64(kATSParserKeyMediaTimeUs, mediaTimeUs); + extra->setInt64(kATSParserKeyMediaTimeUs, mediaTimeUs); + } } mTSParser->signalDiscontinuity( ((type & 1) == 0) - ? ATSParser::DISCONTINUITY_TIME - : ATSParser::DISCONTINUITY_FORMATCHANGE, + ? ATSParser::DISCONTINUITY_TIME + : ATSParser::DISCONTINUITY_FORMATCHANGE, extra); } else { - status_t err = mTSParser->feedTSPacket(buffer, sizeof(buffer)); + status_t err = mTSParser->feedTSPacket(buffer, n); if (err != OK) { ALOGE("TS Parser returned error %d", err); |
