diff --git a/.hgtags b/.hgtags index 22a45edfa7..2cfe39d280 100755 --- a/.hgtags +++ b/.hgtags @@ -568,3 +568,4 @@ b4d76b5590fdf8bab72c64442353753a527cbc44 5.0.5-release abcab37e1b29414ab8c03af9ca2ab489d809788a 5.0.7-release 505a492f30bd925bb48e2e093ae77c3c2b4c740f 5.0.8-release 40ca7118765be85a043b31b011e4ee6bd9e33c95 5.0.9-release +ad0e15543836d64d6399d28b32852510435e344a 5.1.0-release diff --git a/BuildParams b/BuildParams index 614e6b3d18..c5f96d5ee3 100755 --- a/BuildParams +++ b/BuildParams @@ -14,7 +14,7 @@ build_docs = true build_Linux_Doxygen = true # Need viewer-build-variables as well as other shared repositories -buildscripts_shared_more_NAMEs="build_variables" +buildscripts_shared_more_NAMEs="build_secrets build_variables" ################################################################ #### Examples of how to set the viewer_channel #### diff --git a/autobuild.xml b/autobuild.xml index 71943ad527..680fe0f0fc 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3598,9 +3598,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - a8071b247d78e5555340f83e3491e7df + c4d56d3e942169661a598035a9fbd533 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/12055/70540/viewer_manager-1.0.511658-darwin64-511658.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/12112/71187/viewer_manager-1.0.511688-darwin64-511688.tar.bz2 name darwin64 @@ -3622,9 +3622,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - a9597ba92618b2616e058dee8f56c80c + 61f324d880eaa303669b99e28e6cf64c url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/12056/70546/viewer_manager-1.0.511658-windows-511658.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/12113/71193/viewer_manager-1.0.511688-windows-511688.tar.bz2 name windows @@ -3635,7 +3635,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 1.0.511658 + 1.0.511688 vlc-bin diff --git a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp index 048e7675f8..80702a1079 100644 --- a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp +++ b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp @@ -37,6 +37,11 @@ #include "vlc/vlc.h" #include "vlc/libvlc_version.h" +#if LL_WINDOWS +// needed for waveOut call - see below for description +#include +#endif + //////////////////////////////////////////////////////////////////////////////// // class MediaPluginLibVLC : @@ -55,6 +60,7 @@ private: void playMedia(); void resetVLC(); void setVolume(const F64 volume); + void setVolumeVLC(); void updateTitle(const char* title); static void* lock(void* data, void** p_pixels); @@ -221,6 +227,7 @@ void MediaPluginLibVLC::eventCallbacks(const libvlc_event_t* event, void* ptr) case libvlc_MediaPlayerPlaying: parent->mDuration = (float)(libvlc_media_get_duration(parent->mLibVLCMedia)) / 1000.0f; parent->mVlcStatus = STATUS_PLAYING; + parent->setVolumeVLC(); break; case libvlc_MediaPlayerPaused: @@ -394,26 +401,56 @@ void MediaPluginLibVLC::updateTitle(const char* title) sendMessage(message); } +void MediaPluginLibVLC::setVolumeVLC() +{ + if (mLibVLCMediaPlayer) + { + int vlc_vol = (int)(mCurVolume * 100); + + int result = libvlc_audio_set_volume(mLibVLCMediaPlayer, vlc_vol); + if (result == 0) + { + // volume change was accepted by LibVLC + } + else + { + // volume change was NOT accepted by LibVLC and not actioned + } + +#if LL_WINDOWS + // https ://jira.secondlife.com/browse/MAINT-8119 + // CEF media plugin uses code in media_plugins/cef/windows_volume_catcher.cpp to + // set the actual output volume of the plugin process since there is no API in + // CEF to otherwise do this. + // There are explicit calls to change the volume in LibVLC but sometimes they + // are ignored SLPlugin.exe process volume is set to 0 so you never heard audio + // from the VLC media stream. + // The right way to solve this is to move the volume catcher stuff out of + // the CEF plugin and into it's own folder under media_plugins and have it referenced + // by both CEF and VLC. That's for later. The code there boils down to this so for + // now, as we approach a release, the less risky option is to do it directly vs + // calls to volume catcher code. + DWORD left_channel = (DWORD)(mCurVolume * 65535.0f); + DWORD right_channel = (DWORD)(mCurVolume * 65535.0f); + DWORD hw_volume = left_channel << 16 | right_channel; + waveOutSetVolume(NULL, hw_volume); +#endif + } + else + { + // volume change was requested but VLC wasn't ready. + // that's okay though because we saved the value in mCurVolume and + // the next volume change after the VLC system is initilzied will set it + } +} + //////////////////////////////////////////////////////////////////////////////// // void MediaPluginLibVLC::setVolume(const F64 volume) { mCurVolume = volume; - if (mLibVLCMediaPlayer) - { - int result = libvlc_audio_set_volume(mLibVLCMediaPlayer, (int)(volume * 100)); - if (result != 0) - { - // volume wasn't set but not much to be done here - } - } - else - { - // volume change was requested but VLC wasn't ready. - // that's okay thought because we saved the value in mCurVolume and - // the next volume change after the VLC system is initilzied will set it - } + setVolumeVLC(); } //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 718db1c46f..ac14c3dfaa 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -5.0.12 +5.1.1