diff options
author | vivek mehta <mvivek@codeaurora.org> | 2012-12-18 14:55:24 -0800 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2012-12-29 02:11:31 -0800 |
commit | 2fa0f79025df3193bc4353a82206baf4bd3e6e9f (patch) | |
tree | 37cd55e7c3da0b1b2b937925e9010f8476ed035a /media/libstagefright/AwesomePlayer.cpp | |
parent | cf0953976bb3d70e6c51b097741016e3b7e095d9 (diff) | |
download | frameworks_av-2fa0f79025df3193bc4353a82206baf4bd3e6e9f.zip frameworks_av-2fa0f79025df3193bc4353a82206baf4bd3e6e9f.tar.gz frameworks_av-2fa0f79025df3193bc4353a82206baf4bd3e6e9f.tar.bz2 |
Squashed commit of updates from CodeAurora
libstagefright: Add support for VC1 clips
- configure decoder in frame-by-frame or arbitrary mode
based on the codec type.
Change-Id: I6404e5b7ee217045e6456f51f914dbd8a651d98a
CRs-Fixed: 432847
stagefright: Miscellaneous fixes for LPA and Tunnel playback
1. Fix for AV sync issue with Tunnel playback
APIs for returning correct timestamps were implemented
2. Crash while exiting TunnelPlayer
Check whether sink is open before flushing or closing it.
Check for mIsAudioRouted is good to know if we are closing it
3. Seekbar freezes after seek and pause
Check pause status before writing
Change-Id: Id8ab7b258e9c05b20e121bdf3c4dc30d519f6c15
frameworks/av: Add support for surround sound recording
- Add 5.1 channel as supported input channel
Change-Id: I50fcd87245c5c855ede8f09ea1a7c5be2e684640
stagefright: Add tunnel decode for amr-wb/wb+
When tunnel.decode is true, playback of AMR-WB
and AMR-WB+ uses tunnel decode.
Change-Id: Ic06cb3faaac18f605402c98a27cb4dfa4b7faee2
stagefright: Skip LPA if #channels > 2
Skip LPA for Multi channel playback
Change-Id: I5b97471ef55aea260d1c02db672eb4bd64c3edef
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 5cffad8..9c0e799 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -967,9 +967,18 @@ status_t AwesomePlayer::play_l() { } tunnelObjectsAlive = (TunnelPlayer::mTunnelObjectsAlive); #endif + int32_t nchannels = 0; + if(mAudioTrack != NULL) { + sp<MetaData> format = mAudioTrack->getFormat(); + if(format != NULL) { + format->findInt32( kKeyChannelCount, &nchannels ); + ALOGV("nchannels %d;LPA will be skipped if nchannels is > 2 or nchannels == 0",nchannels); + } + } char lpaDecode[128]; property_get("lpa.decode",lpaDecode,"0"); - if((strcmp("true",lpaDecode) == 0) && (mAudioPlayer == NULL) && tunnelObjectsAlive==0 ) + if((strcmp("true",lpaDecode) == 0) && (mAudioPlayer == NULL) && + (tunnelObjectsAlive==0) && (nchannels && (nchannels <= 2))) { ALOGV("LPAPlayer::getObjectsAlive() %d",LPAPlayer::objectsAlive); if ( mDurationUs > 60000000 @@ -1486,6 +1495,11 @@ status_t AwesomePlayer::initAudioDecoder() { const char *mime; CHECK(meta->findCString(kKeyMIMEType, &mime)); #ifdef QCOM_ENHANCED_AUDIO + int32_t nchannels = 0; + meta->findInt32( kKeyChannelCount, &nchannels ); + ALOGV("nchannels %d;LPA will be skipped if nchannels is > 2 or nchannels == 0", + nchannels); + #ifdef USE_TUNNEL_MODE char value[PROPERTY_VALUE_MAX]; char tunnelDecode[128]; @@ -1498,6 +1512,8 @@ status_t AwesomePlayer::initAudioDecoder() { (TunnelPlayer::mTunnelObjectsAlive == 0) && mTunnelAliveAP == 0 && ((!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) || + (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_WB)) || + (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_WB_PLUS)) || (!strcasecmp(mime,MEDIA_MIMETYPE_AUDIO_AAC)))) { if(mVideoSource != NULL) { @@ -1542,7 +1558,8 @@ status_t AwesomePlayer::initAudioDecoder() { } if ( mDurationUs > 60000000 && (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG) || !strcasecmp(mime,MEDIA_MIMETYPE_AUDIO_AAC)) - && LPAPlayer::objectsAlive == 0 && mVideoSource == NULL && (strcmp("true",lpaDecode) == 0)) { + && LPAPlayer::objectsAlive == 0 && mVideoSource == NULL && (strcmp("true",lpaDecode) == 0) + && (nchannels && (nchannels <= 2)) ) { char nonOMXDecoder[128]; if(!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) { ALOGD("matchComponentName is set to MP3Decoder %lld, mime %s",mDurationUs,mime); |