diff options
author | Andreas Huber <andih@google.com> | 2010-05-20 11:13:20 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-05-20 11:13:20 -0700 |
commit | 8fe7fa8f90e52cab210ec1de861f2d8ac9435968 (patch) | |
tree | f15953bd8e8aa9d8b58f7c8e47c0e736c6948b98 | |
parent | c0b42f27a36c96b0ce16ade57c26ff1decb4bb72 (diff) | |
parent | 139a5d5bd33c9fc7708d0a79f11ee928f7796e6b (diff) | |
download | frameworks_av-8fe7fa8f90e52cab210ec1de861f2d8ac9435968.zip frameworks_av-8fe7fa8f90e52cab210ec1de861f2d8ac9435968.tar.gz frameworks_av-8fe7fa8f90e52cab210ec1de861f2d8ac9435968.tar.bz2 |
am 2723e092: Merge "Better handling of codec initialization failure in the player and thumbnail extractor. Return a runtime error instead of asserting if the software MPEG4/H.263 decoder fails to initialize." into froyo
Merge commit '2723e09229ce916724861ab90b6b8fc7c9ea9f2e' into froyo-plus-aosp
* commit '2723e09229ce916724861ab90b6b8fc7c9ea9f2e':
Better handling of codec initialization failure in the player and thumbnail extractor. Return a runtime error instead of asserting if the software MPEG4/H.263 decoder fails to initialize.
-rw-r--r-- | cmds/stagefright/stagefright.cpp | 7 | ||||
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 7 | ||||
-rw-r--r-- | media/libstagefright/StagefrightMetadataRetriever.cpp | 7 | ||||
-rw-r--r-- | media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp | 11 |
4 files changed, 26 insertions, 6 deletions
diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp index 4405da6..b838f32 100644 --- a/cmds/stagefright/stagefright.cpp +++ b/cmds/stagefright/stagefright.cpp @@ -75,7 +75,12 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) { } } - rawSource->start(); + status_t err = rawSource->start(); + + if (err != OK) { + fprintf(stderr, "rawSource returned error %d (0x%08x)\n", err, err); + return; + } if (gPlaybackAudio) { AudioPlayer *player = new AudioPlayer(NULL); diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index f668caa..274dad9 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -822,7 +822,12 @@ status_t AwesomePlayer::initVideoDecoder() { CHECK(mVideoTrack->getFormat()->findInt32(kKeyWidth, &mVideoWidth)); CHECK(mVideoTrack->getFormat()->findInt32(kKeyHeight, &mVideoHeight)); - mVideoSource->start(); + status_t err = mVideoSource->start(); + + if (err != OK) { + mVideoSource.clear(); + return err; + } } return mVideoSource != NULL ? OK : UNKNOWN_ERROR; diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp index 2968917..258be74 100644 --- a/media/libstagefright/StagefrightMetadataRetriever.cpp +++ b/media/libstagefright/StagefrightMetadataRetriever.cpp @@ -120,7 +120,11 @@ static VideoFrame *extractVideoFrameWithCodecFlags( return NULL; } - decoder->start(); + status_t err = decoder->start(); + if (err != OK) { + LOGW("OMXCodec::start returned error %d (0x%08x)\n", err, err); + return NULL; + } // Read one output buffer, ignore format change notifications // and spurious empty buffers. @@ -134,7 +138,6 @@ static VideoFrame *extractVideoFrameWithCodecFlags( } MediaBuffer *buffer = NULL; - status_t err; do { if (buffer != NULL) { buffer->release(); diff --git a/media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp b/media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp index 40009f8..8350f7a 100644 --- a/media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp +++ b/media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp @@ -120,9 +120,16 @@ status_t M4vH263Decoder::start(MetaData *) { vol_size = 0; } - CHECK_EQ(PV_TRUE, PVInitVideoDecoder( - mHandle, vol_data, &vol_size, 1, mWidth, mHeight, mode)); + + Bool success = PVInitVideoDecoder( + mHandle, vol_data, &vol_size, 1, mWidth, mHeight, mode); if (vol_data[0]) free(vol_data[0]); + + if (success != PV_TRUE) { + LOGW("PVInitVideoDecoder failed. Unsupported content?"); + return ERROR_UNSUPPORTED; + } + MP4DecodingMode actualMode = PVGetDecBitstreamMode(mHandle); CHECK_EQ(mode, actualMode); |