summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AwesomePlayer.cpp
diff options
context:
space:
mode:
authorhovanchen <hovanchen@fihspec.com>2013-07-02 15:07:44 +0800
committerCheng-Hao Chen <hovanchen@fihspec.com>2013-07-03 01:15:59 +0000
commitb9b8d14d89019ba7b9d183f0fbad2af924a0cd95 (patch)
treecc5f9c3451e2a232932b4a52c46ba26dfefebd96 /media/libstagefright/AwesomePlayer.cpp
parenta9aa6baa5d86fc1a5bd37fc636d766d9e3ad2507 (diff)
downloadframeworks_av-b9b8d14d89019ba7b9d183f0fbad2af924a0cd95.zip
frameworks_av-b9b8d14d89019ba7b9d183f0fbad2af924a0cd95.tar.gz
frameworks_av-b9b8d14d89019ba7b9d183f0fbad2af924a0cd95.tar.bz2
Prevent Media Server crash while the AwesomePlayer getBitrate return true with mBitrate equals to zero.
[Cause] - getBitrate(int64_t *bitrate) will return true if mBitrate = 0. - Then, in getCachedDuration_l(int64_t *durationUs, bool *eos), we might execute the following function when getBitrate(&bitrate) = true and bitrate = 0. *durationUs = cachedDataRemaining * 8000000ll / bitrate; - Mediaserver will be crashed when divided by zero. - The mediaserver crash often occur when DLNA IOP tests on Golden DMS with AAC_ADTS_320 audio. [Solution] - Prevent the divide function executing when bitrate is zero. Change-Id: I4439d92cee5faec95df2109e9186c33b3fff6c66
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r--media/libstagefright/AwesomePlayer.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 1e2625a..70e6690 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -617,7 +617,7 @@ bool AwesomePlayer::getBitrate(int64_t *bitrate) {
bool AwesomePlayer::getCachedDuration_l(int64_t *durationUs, bool *eos) {
int64_t bitrate;
- if (mCachedSource != NULL && getBitrate(&bitrate)) {
+ if (mCachedSource != NULL && getBitrate(&bitrate) && (bitrate > 0)) {
status_t finalStatus;
size_t cachedDataRemaining = mCachedSource->approxDataRemaining(&finalStatus);
*durationUs = cachedDataRemaining * 8000000ll / bitrate;