void MediaOmxCommonReader::CheckAudioOffload() { MOZ_ASSERT(OnTaskQueue()); char offloadProp[128]; property_get("audio.offload.disable", offloadProp, "0"); bool offloadDisable = atoi(offloadProp) != 0; if (offloadDisable) { return; } sp<MediaSource> audioOffloadTrack = GetAudioOffloadTrack(); sp<MetaData> meta = audioOffloadTrack.get() ? audioOffloadTrack->getFormat() : nullptr; // Supporting audio offload only when there is no video, no streaming bool hasNoVideo = !HasVideo(); bool isNotStreaming = mDecoder->GetResource()->IsDataCachedToEndOfResource(0); // Not much benefit in trying to offload other channel types. Most of them // aren't supported and also duration would be less than a minute bool isTypeMusic = mAudioChannel == dom::AudioChannel::Content; DECODER_LOG(LogLevel::Debug, ("%s meta %p, no video %d, no streaming %d," " channel type %d", __FUNCTION__, meta.get(), hasNoVideo, isNotStreaming, mAudioChannel)); if ((meta.get()) && hasNoVideo && isNotStreaming && isTypeMusic && canOffloadStream(meta, false, false, AUDIO_STREAM_MUSIC) && !IsMonoAudioEnabled()) { DECODER_LOG(LogLevel::Debug, ("Can offload this audio stream")); mDecoder->SetPlatformCanOffloadAudio(true); } }
void MediaOmxReader::CheckAudioOffload() { NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); char offloadProp[128]; property_get("audio.offload.disable", offloadProp, "0"); bool offloadDisable = atoi(offloadProp) != 0; if (offloadDisable) { return; } mAudioOffloadTrack = mOmxDecoder->GetAudioOffloadTrack(); sp<MetaData> meta = (mAudioOffloadTrack.get()) ? mAudioOffloadTrack->getFormat() : nullptr; // Supporting audio offload only when there is no video, no streaming bool hasNoVideo = !mOmxDecoder->HasVideo(); bool isNotStreaming = mDecoder->GetResource()->IsDataCachedToEndOfResource(0); // Not much benefit in trying to offload other channel types. Most of them // aren't supported and also duration would be less than a minute bool isTypeMusic = mAudioChannel == dom::AudioChannel::Content; DECODER_LOG(PR_LOG_DEBUG, ("%s meta %p, no video %d, no streaming %d," " channel type %d", __FUNCTION__, meta.get(), hasNoVideo, isNotStreaming, mAudioChannel)); if ((meta.get()) && hasNoVideo && isNotStreaming && isTypeMusic && canOffloadStream(meta, false, false, AUDIO_STREAM_MUSIC)) { DECODER_LOG(PR_LOG_DEBUG, ("Can offload this audio stream")); mDecoder->SetCanOffloadAudio(true); } }