Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Prevent Media Server crash while the AwesomePlayer getBitrate return …
Browse files Browse the repository at this point in the history
…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
  • Loading branch information
hovanchen committed Jul 3, 2013
1 parent a9aa6ba commit b9b8d14
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion media/libstagefright/AwesomePlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit b9b8d14

Please sign in to comment.