diff --git a/media/libstagefright/MediaPlayerImpl.cpp b/media/libstagefright/MediaPlayerImpl.cpp index 76f41821666e3..4d14e4c32af06 100644 --- a/media/libstagefright/MediaPlayerImpl.cpp +++ b/media/libstagefright/MediaPlayerImpl.cpp @@ -28,6 +28,7 @@ #include // #include #include +#include #include #include #include @@ -391,8 +392,15 @@ void MediaPlayerImpl::setAudioSource(const sp &source) { sp meta = source->getFormat(); - mAudioDecoder = OMXCodec::Create( - mClient.interface(), meta, false /* createEncoder */, source); + const char *mime; + CHECK(meta->findCString(kKeyMIMEType, &mime)); + + if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_RAW)) { + mAudioDecoder = source; + } else { + mAudioDecoder = OMXCodec::Create( + mClient.interface(), meta, false /* createEncoder */, source); + } } void MediaPlayerImpl::setVideoSource(const sp &source) {