am c6a16327: am 3c16154a: 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

This commit is contained in:
Andreas Huber
2010-05-20 11:16:28 -07:00
committed by Android Git Automerger
4 changed files with 26 additions and 6 deletions

View File

@ -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) { if (gPlaybackAudio) {
AudioPlayer *player = new AudioPlayer(NULL); AudioPlayer *player = new AudioPlayer(NULL);

View File

@ -822,7 +822,12 @@ status_t AwesomePlayer::initVideoDecoder() {
CHECK(mVideoTrack->getFormat()->findInt32(kKeyWidth, &mVideoWidth)); CHECK(mVideoTrack->getFormat()->findInt32(kKeyWidth, &mVideoWidth));
CHECK(mVideoTrack->getFormat()->findInt32(kKeyHeight, &mVideoHeight)); 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; return mVideoSource != NULL ? OK : UNKNOWN_ERROR;

View File

@ -120,7 +120,11 @@ static VideoFrame *extractVideoFrameWithCodecFlags(
return NULL; 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 // Read one output buffer, ignore format change notifications
// and spurious empty buffers. // and spurious empty buffers.
@ -134,7 +138,6 @@ static VideoFrame *extractVideoFrameWithCodecFlags(
} }
MediaBuffer *buffer = NULL; MediaBuffer *buffer = NULL;
status_t err;
do { do {
if (buffer != NULL) { if (buffer != NULL) {
buffer->release(); buffer->release();

View File

@ -120,9 +120,16 @@ status_t M4vH263Decoder::start(MetaData *) {
vol_size = 0; 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 (vol_data[0]) free(vol_data[0]);
if (success != PV_TRUE) {
LOGW("PVInitVideoDecoder failed. Unsupported content?");
return ERROR_UNSUPPORTED;
}
MP4DecodingMode actualMode = PVGetDecBitstreamMode(mHandle); MP4DecodingMode actualMode = PVGetDecBitstreamMode(mHandle);
CHECK_EQ(mode, actualMode); CHECK_EQ(mode, actualMode);