Skip to content

Commit 53719fc

Browse files
Eric LaurentAndroid (Google) Code Review
authored andcommitted
Merge "Fix issue 5373048: AudioCache decode errors"
2 parents 6ce9dfd + 9968a36 commit 53719fc

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

media/libmediaplayerservice/MediaPlayerService.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include <media/Metadata.h>
5353
#include <media/AudioTrack.h>
5454
#include <media/MemoryLeakTrackUtil.h>
55+
#include <media/stagefright/MediaErrors.h>
5556

5657
#include <system/audio.h>
5758

@@ -1132,7 +1133,11 @@ sp<IMemory> MediaPlayerService::decode(const char* url, uint32_t *pSampleRate, i
11321133
player->start();
11331134

11341135
LOGV("wait for playback complete");
1135-
if (cache->wait() != NO_ERROR) goto Exit;
1136+
cache->wait();
1137+
// in case of error, return what was successfully decoded.
1138+
if (cache->size() == 0) {
1139+
goto Exit;
1140+
}
11361141

11371142
mem = new MemoryBase(cache->getHeap(), 0, cache->size());
11381143
*pSampleRate = cache->sampleRate();
@@ -1175,7 +1180,11 @@ sp<IMemory> MediaPlayerService::decode(int fd, int64_t offset, int64_t length, u
11751180
player->start();
11761181

11771182
LOGV("wait for playback complete");
1178-
if (cache->wait() != NO_ERROR) goto Exit;
1183+
cache->wait();
1184+
// in case of error, return what was successfully decoded.
1185+
if (cache->size() == 0) {
1186+
goto Exit;
1187+
}
11791188

11801189
mem = new MemoryBase(cache->getHeap(), 0, cache->size());
11811190
*pSampleRate = cache->sampleRate();

0 commit comments

Comments
 (0)