From d9de58b46ab4c5e248b8dd7b3f79e1672f1f215a Mon Sep 17 00:00:00 2001 From: callum Date: Fri, 19 Apr 2013 16:29:11 -0700 Subject: OPEN-173 FIX FMODEx Music stutters once every few seconds (OSS patch via Latif Khalifa & Siana Gearz) --- autobuild.xml | 12 +++++----- indra/llaudio/llstreamingaudio_fmodex.cpp | 39 +++++++++++++++++++++++-------- indra/llaudio/llstreamingaudio_fmodex.h | 2 -- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index ba6b76e7b2..1bf09eab3d 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -498,9 +498,9 @@ archive hash - 89a3df89da75444877cf3197416fed67 + 10352aab979c333a52dbad21b6e6fba9 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/270029/arch/Darwin/installer/fmodex-4.44-darwin-20130205.tar.bz2 + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274403/arch/Darwin/installer/fmodex-4.44-darwin-20130419.tar.bz2 name darwin @@ -510,9 +510,9 @@ archive hash - fd787931f49ece9bf99f4d1d1596f04b + 79e45527aa9fb90b813599dff5ce01a7 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269984/arch/Linux/installer/fmodex-4.44-linux-20130205.tar.bz2 + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274378/arch/Linux/installer/fmodex-4.44-linux-20130419.tar.bz2 name linux @@ -522,9 +522,9 @@ archive hash - 9e0f62be63e74af18f670f864cac93da + 81a2f77651e37b704198c7ea72f63040 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/270026/arch/CYGWIN/installer/fmodex-4.44-windows-20130205.tar.bz2 + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274401/arch/CYGWIN/installer/fmodex-4.44-windows-20130419.tar.bz2 name windows diff --git a/indra/llaudio/llstreamingaudio_fmodex.cpp b/indra/llaudio/llstreamingaudio_fmodex.cpp index 4a74267650..266fa2f57b 100644 --- a/indra/llaudio/llstreamingaudio_fmodex.cpp +++ b/indra/llaudio/llstreamingaudio_fmodex.cpp @@ -153,7 +153,6 @@ void LLStreamingAudio_FMODEX::update() // Reset volume to previously set volume setGain(getGain()); mFMODInternetStreamChannelp->setPaused(false); - mLastStarved.stop(); } } else if(open_state == FMOD_OPENSTATE_ERROR) @@ -168,21 +167,43 @@ void LLStreamingAudio_FMODEX::update() if(mFMODInternetStreamChannelp->getCurrentSound(&sound) == FMOD_OK && sound) { + FMOD_TAG tag; + S32 tagcount, dirtytagcount; + + if(sound->getNumTags(&tagcount, &dirtytagcount) == FMOD_OK && dirtytagcount) + { + for(S32 i = 0; i < tagcount; ++i) + { + if(sound->getTag(NULL, i, &tag)!=FMOD_OK) + continue; + + if (tag.type == FMOD_TAGTYPE_FMOD) + { + if (!strcmp(tag.name, "Sample Rate Change")) + { + llinfos << "Stream forced changing sample rate to " << *((float *)tag.data) << llendl; + mFMODInternetStreamChannelp->setFrequency(*((float *)tag.data)); + } + continue; + } + } + } + if(starving) { - if(!mLastStarved.getStarted()) + bool paused = false; + mFMODInternetStreamChannelp->getPaused(&paused); + if(!paused) { - llinfos << "Stream starvation detected! Muting stream audio until it clears." << llendl; + llinfos << "Stream starvation detected! Pausing stream until buffer nearly full." << llendl; llinfos << " (diskbusy="<setMute(true); + mFMODInternetStreamChannelp->setPaused(true); } - mLastStarved.start(); } - else if(mLastStarved.getStarted() && mLastStarved.getElapsedTimeF32() > 1.f) + else if(progress > 80) { - mLastStarved.stop(); - mFMODInternetStreamChannelp->setMute(false); + mFMODInternetStreamChannelp->setPaused(false); } } } @@ -190,8 +211,6 @@ void LLStreamingAudio_FMODEX::update() void LLStreamingAudio_FMODEX::stop() { - mLastStarved.stop(); - if (mFMODInternetStreamChannelp) { mFMODInternetStreamChannelp->setPaused(true); diff --git a/indra/llaudio/llstreamingaudio_fmodex.h b/indra/llaudio/llstreamingaudio_fmodex.h index 42b6b3aaa8..1dee18ae7d 100644 --- a/indra/llaudio/llstreamingaudio_fmodex.h +++ b/indra/llaudio/llstreamingaudio_fmodex.h @@ -67,8 +67,6 @@ private: std::string mURL; F32 mGain; - - LLTimer mLastStarved; }; -- cgit v1.2.3 From b7cf8931d4899b37e01d21d7408bb8b974f46a3a Mon Sep 17 00:00:00 2001 From: callum Date: Fri, 19 Apr 2013 17:16:23 -0700 Subject: OPEN-173 FIX FMODEx Music stutters once every few seconds (OSS patch via Latif Khalifa & Siana Gearz) - additional fix. Team City gave me the wrong MD5 for 3p-package --- autobuild.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autobuild.xml b/autobuild.xml index 1bf09eab3d..e3b2545138 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -522,7 +522,7 @@ archive hash - 81a2f77651e37b704198c7ea72f63040 + 0980cdf98a322a780ba739e324d0b955 url http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274401/arch/CYGWIN/installer/fmodex-4.44-windows-20130419.tar.bz2 -- cgit v1.2.3 From 06d7845a5a40e012ad1bc7cc4ec15e82c00e5da4 Mon Sep 17 00:00:00 2001 From: Nyx Linden Date: Mon, 22 Apr 2013 19:14:24 -0400 Subject: SUN-72 SH-4132 FIX viewer builds cannot write to paths containing special characters. Integrated Nicky Dasmijn's patch to handle the unicode file paths properly. Code reviewed, patch was clean. Tested locally, correctly allows wearables to load where they would fail before. Should be ready for automated build & QA. --- doc/contributions.txt | 1 + indra/llcommon/llfile.cpp | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index a63e3a22b0..d7f050a916 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -899,6 +899,7 @@ NickyD Nicky Dasmijn VWR-29228 MAINT-873 + SUN-72 Nicky Perian OPEN-1 STORM-1087 diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp index bc615ed39e..864b6e6975 100644 --- a/indra/llcommon/llfile.cpp +++ b/indra/llcommon/llfile.cpp @@ -853,7 +853,8 @@ llifstream::llifstream(const std::string& _Filename, #if LL_WINDOWS std::istream(&_M_filebuf) { - if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::in) == 0) + llutf16string wideName = utf8str_to_utf16str( _Filename ); + if (_M_filebuf.open(wideName.c_str(), _Mode | ios_base::in) == 0) { _Myios::setstate(ios_base::failbit); } @@ -872,7 +873,8 @@ llifstream::llifstream(const char* _Filename, #if LL_WINDOWS std::istream(&_M_filebuf) { - if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0) + llutf16string wideName = utf8str_to_utf16str( _Filename ); + if (_M_filebuf.open(wideName.c_str(), _Mode | ios_base::in) == 0) { _Myios::setstate(ios_base::failbit); } @@ -917,8 +919,10 @@ bool llifstream::is_open() const void llifstream::open(const char* _Filename, ios_base::openmode _Mode) { // open a C stream with specified mode - if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0) + #if LL_WINDOWS + llutf16string wideName = utf8str_to_utf16str( _Filename ); + if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::in) == 0) { _Myios::setstate(ios_base::failbit); } @@ -927,6 +931,7 @@ void llifstream::open(const char* _Filename, ios_base::openmode _Mode) _Myios::clear(); } #else + if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0) { this->setstate(ios_base::failbit); } @@ -969,7 +974,8 @@ llofstream::llofstream(const std::string& _Filename, #if LL_WINDOWS std::ostream(&_M_filebuf) { - if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::out) == 0) + llutf16string wideName = utf8str_to_utf16str( _Filename ); + if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0) { _Myios::setstate(ios_base::failbit); } @@ -988,7 +994,8 @@ llofstream::llofstream(const char* _Filename, #if LL_WINDOWS std::ostream(&_M_filebuf) { - if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0) + llutf16string wideName = utf8str_to_utf16str( _Filename ); + if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0) { _Myios::setstate(ios_base::failbit); } @@ -1032,8 +1039,9 @@ bool llofstream::is_open() const void llofstream::open(const char* _Filename, ios_base::openmode _Mode) { // open a C stream with specified mode - if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0) #if LL_WINDOWS + llutf16string wideName = utf8str_to_utf16str( _Filename ); + if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0) { _Myios::setstate(ios_base::failbit); } @@ -1042,6 +1050,7 @@ void llofstream::open(const char* _Filename, ios_base::openmode _Mode) _Myios::clear(); } #else + if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0) { this->setstate(ios_base::failbit); } -- cgit v1.2.3 From 5fcb76f2528923e498848005ab80b82cae8fcc8b Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 23 Apr 2013 11:43:14 -0400 Subject: tag merge of DRTVWR-314 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index ed123d3440..23225c70bb 100644 --- a/.hgtags +++ b/.hgtags @@ -440,3 +440,4 @@ adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release 20cdf370f5c8be6193bef6fb3a81cc3f81275191 3.5.1-beta1 2319904200de367646b9a9442239a38d52c1eeb5 DRTVWR-313 9d8726eca785acad694564516f16dd639faf45c0 3.5.1-beta2 +4b7fa963b80e2056ab648f83a4d61310b3cedb3d DRTVWR-314 -- cgit v1.2.3 From 0bc7056ae6b314fac508f2c417cc5818107cb72e Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 23 Apr 2013 12:27:12 -0400 Subject: Added tag 3.5.1-beta3 for changeset 65ae89aeb7ea --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 23225c70bb..f2ea8cb0ea 100644 --- a/.hgtags +++ b/.hgtags @@ -441,3 +441,4 @@ adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release 2319904200de367646b9a9442239a38d52c1eeb5 DRTVWR-313 9d8726eca785acad694564516f16dd639faf45c0 3.5.1-beta2 4b7fa963b80e2056ab648f83a4d61310b3cedb3d DRTVWR-314 +65ae89aeb7ea674a555e439e963f17949322ac94 3.5.1-beta3 -- cgit v1.2.3