void LLViewerParcelMedia::playStreamingMusic(LLParcel* parcel, bool filter) { std::string music_url = parcel->getMusicURL(); LLStringUtil::trim(music_url); if (!music_url.empty() && gSavedSettings.getBOOL("MediaEnableFilter") && (filter || !allowedMedia(music_url))) { // If filtering is needed or in case music_url just changed // to something we did not yet approve. filterMedia(parcel, 1); } else if (gAudiop) { LLStringUtil::trim(music_url); LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl(); if(stream && stream->supportsAdjustableBufferSizes()) stream->setBufferSizes(gSavedSettings.getU32("SHFMODExStreamBufferSize"),gSavedSettings.getU32("SHFMODExDecodeBufferSize")); gAudiop->startInternetStream(music_url); if (music_url.empty()) { LLOverlayBar::audioFilterStop(); } else { LLOverlayBar::audioFilterPlay(); } } }
void LLViewerParcelMedia::playStreamingMusic(LLParcel* parcel, bool filter) { std::string music_url = parcel->getMusicURL(); LLStringUtil::trim(music_url); if (gSavedSettings.getU32("MediaFilterEnable")) { LL_DEBUGS("MediaFilter") << "Filtering media URL: " << parcel->getMediaURL() << LL_ENDL; LLMediaFilter::getInstance()->filterAudioUrl(music_url); } else if (gAudiop) { LLStringUtil::trim(music_url); LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl(); if(stream && stream->supportsAdjustableBufferSizes()) stream->setBufferSizes(gSavedSettings.getU32("SHFMODExStreamBufferSize"),gSavedSettings.getU32("SHFMODExDecodeBufferSize")); gAudiop->startInternetStream(music_url); if (music_url.empty()) { LLOverlayBar::audioFilterStop(); } else { LLOverlayBar::audioFilterPlay(); } } }
//----------------------------------------------------------------------- void LLAudioEngine_FMOD::setInternalGain(F32 gain) { if (!mInited) { return; } gain = llclamp( gain, 0.0f, 1.0f ); FSOUND_SetSFXMasterVolume( llround( 255.0f * gain ) ); LLStreamingAudioInterface *saimpl = getStreamingAudioImpl(); if ( saimpl ) { // fmod likes its streaming audio channel gain re-asserted after // master volume change. saimpl->setGain(saimpl->getGain()); } }
void LLMediaRemoteCtrl::enableMediaButtons() { // Media bool play_media_enabled = false; bool stop_media_enabled = false; bool play_music_enabled = false; bool stop_music_enabled = false; bool music_show_pause = false; bool media_show_pause = false; LLColor4 music_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" ); LLColor4 media_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" ); std::string media_type = "none/none"; // Put this in xui file std::string media_url = mControls->getString("default_tooltip_label"); LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if (gSavedSettings.getBOOL("AudioStreamingVideo")) { if ( parcel && !parcel->getMediaURL().empty()) { // Set the tooltip // Put this text into xui file media_url = parcel->getMediaURL(); media_type = parcel->getMediaType(); play_media_enabled = true; media_icon_color = LLUI::sColorsGroup->getColor( "IconEnabledColor" ); LLViewerMediaImpl::EMediaStatus status = LLViewerParcelMedia::getStatus(); switch(status) { case LLViewerMediaImpl::MEDIA_NONE: media_show_pause = false; stop_media_enabled = false; break; case LLViewerMediaImpl::MEDIA_LOADING: case LLViewerMediaImpl::MEDIA_LOADED: case LLViewerMediaImpl::MEDIA_PLAYING: // HACK: only show the pause button for movie types media_show_pause = LLMIMETypes::widgetType(parcel->getMediaType()) == "movie" ? true : false; stop_media_enabled = true; play_media_enabled = false; break; case LLViewerMediaImpl::MEDIA_PAUSED: media_show_pause = false; stop_media_enabled = true; break; default: // inherit defaults above break; } } } if (gSavedSettings.getBOOL("AudioStreamingMusic") && gAudiop) { if ( parcel && !parcel->getMusicURL().empty()) { play_music_enabled = true; music_icon_color = LLUI::sColorsGroup->getColor( "IconEnabledColor" ); if (gOverlayBar->musicPlaying()) { music_show_pause = true; stop_music_enabled = true; } else { music_show_pause = false; stop_music_enabled = false; } } // Don't test the mime-type: this is not updated in a consistent basis. The existence of a valid gAudiop is enough guarantee. } const std::string media_icon_name = LLMIMETypes::findIcon(media_type); LLButton* music_play_btn = getChild<LLButton>("music_play"); LLButton* music_stop_btn = getChild<LLButton>("music_stop"); LLButton* music_pause_btn = getChild<LLButton>("music_pause"); LLButton* media_play_btn = getChild<LLButton>("media_play"); LLButton* media_stop_btn = getChild<LLButton>("media_stop"); LLButton* media_pause_btn = getChild<LLButton>("media_pause"); LLIconCtrl* media_icon = getChild<LLIconCtrl>("media_icon"); music_play_btn->setEnabled(play_music_enabled); music_stop_btn->setEnabled(stop_music_enabled); music_pause_btn->setEnabled(music_show_pause); music_pause_btn->setVisible(music_show_pause); music_play_btn->setVisible(! music_show_pause); if(music_show_pause) { LLStreamingAudioInterface *stream = gAudiop ? gAudiop->getStreamingAudioImpl() : NULL; if(stream && stream->getMetaData()) { std::string info_text = "Loading..."; const LLSD& metadata = *(stream->getMetaData()); LLSD artist = metadata.get("ARTIST"); LLSD title = metadata.get("TITLE"); if(artist.isDefined() && title.isDefined()) info_text = artist.asString() + " -- " + title.asString(); else if(title.isDefined()) info_text = std::string("Title: ") + title.asString(); else if(artist.isDefined()) info_text = std::string("Artist: ") + artist.asString(); music_pause_btn->setToolTip(info_text); } else music_pause_btn->setToolTip(mCachedPauseTip); } childSetColor("music_icon", music_icon_color); if(!media_icon_name.empty()) { media_icon->setImage(media_icon_name); } media_play_btn->setEnabled(play_media_enabled); media_stop_btn->setEnabled(stop_media_enabled); media_pause_btn->setEnabled(media_show_pause); media_pause_btn->setVisible(media_show_pause); media_play_btn->setVisible(! media_show_pause); childSetColor("media_icon", media_icon_color); setToolTip(media_url); }
void LLMediaRemoteCtrl::enableMediaButtons() { // Media bool play_media_enabled = false; bool stop_media_enabled = false; bool play_music_enabled = false; bool stop_music_enabled = false; bool music_show_pause = false; bool media_show_pause = false; LLColor4 music_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" ); LLColor4 media_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" ); std::string media_type = "none/none"; // Put this in xui file std::string media_url = mControls->getString("default_tooltip_label"); LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if (gSavedSettings.getBOOL("AudioStreamingMedia")) { if ( parcel && !parcel->getMediaURL().empty()) { // Set the tooltip // Put this text into xui file media_url = parcel->getMediaURL(); media_type = parcel->getMediaType(); play_media_enabled = true; media_icon_color = LLUI::sColorsGroup->getColor( "IconEnabledColor" ); LLViewerMediaImpl::EMediaStatus status = LLViewerParcelMedia::getStatus(); switch(status) { case LLViewerMediaImpl::MEDIA_NONE: media_show_pause = false; stop_media_enabled = false; break; case LLViewerMediaImpl::MEDIA_LOADING: case LLViewerMediaImpl::MEDIA_LOADED: case LLViewerMediaImpl::MEDIA_PLAYING: // HACK: only show the pause button for movie types media_show_pause = LLMIMETypes::widgetType(parcel->getMediaType()) == "movie" ? true : false; stop_media_enabled = true; play_media_enabled = false; break; case LLViewerMediaImpl::MEDIA_PAUSED: media_show_pause = false; stop_media_enabled = true; break; default: // inherit defaults above break; } } } if (gSavedSettings.getBOOL("AudioStreamingMusic") && gAudiop) { if ( parcel && !parcel->getMusicURL().empty()) { play_music_enabled = true; music_icon_color = LLUI::sColorsGroup->getColor( "IconEnabledColor" ); if (gOverlayBar->musicPlaying()) { music_show_pause = true; stop_music_enabled = true; } else { music_show_pause = false; stop_music_enabled = false; } } // Don't test the mime-type: this is not updated in a consistent basis. The existence of a valid gAudiop is enough guarantee. } const std::string media_icon_name = LLMIMETypes::findIcon(media_type); LLButton* music_play_btn = mMusicPlayBtn; LLButton* music_stop_btn = mMusicStopBtn; LLButton* music_pause_btn = mMusicPauseBtn; LLButton* media_play_btn = mMediaPlayBtn; LLButton* media_stop_btn = mMediaStopBtn; LLButton* media_pause_btn = mMediaPauseBtn; LLIconCtrl* media_icon = mMediaIcon; music_play_btn->setEnabled(play_music_enabled); music_stop_btn->setEnabled(stop_music_enabled); music_pause_btn->setEnabled(music_show_pause); music_pause_btn->setVisible(music_show_pause); music_play_btn->setVisible(! music_show_pause); if(music_show_pause) { LLStreamingAudioInterface *stream = gAudiop ? gAudiop->getStreamingAudioImpl() : NULL; if(stream && stream->getMetaData()) { std::string info_text = "Loading..."; const LLSD& metadata = *(stream->getMetaData()); LLSD artist = metadata.get("ARTIST"); LLSD title = metadata.get("TITLE"); if(artist.isDefined() && title.isDefined()) info_text = artist.asString() + " -- " + title.asString(); else if(title.isDefined()) info_text = getString("Title") + ": " + title.asString(); else if(artist.isDefined()) info_text = getString("Artist") + ": " + artist.asString(); if(music_pause_btn->getToolTip() != info_text) //Has info_text changed since last call? { music_pause_btn->setToolTip(info_text); static LLCachedControl<bool> announce_stream_metadata("AnnounceStreamMetadata"); if(announce_stream_metadata && info_text != sLastTooltip && info_text != "Loading...") //Are we announcing? Don't annoounce what we've last announced. Don't announce Loading. { sLastTooltip = info_text; LLChat chat; chat.mText = getString("Now_playing") + " " + info_text; chat.mSourceType = CHAT_SOURCE_SYSTEM; LLFloaterChat::addChat(chat); } } } else music_pause_btn->setToolTip(mCachedPauseTip); } mMusicIcon->setColor(music_icon_color); if(!media_icon_name.empty()) { media_icon->setImage(media_icon_name); } media_play_btn->setEnabled(play_media_enabled); media_stop_btn->setEnabled(stop_media_enabled); media_pause_btn->setEnabled(media_show_pause); media_pause_btn->setVisible(media_show_pause); media_play_btn->setVisible(! media_show_pause); mMediaIcon->setColor(media_icon_color); setToolTip(media_url); }