gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash server/asobj/SoundFfmpeg.cpp server/asobj...


From: Sandro Santilli
Subject: [Gnash-commit] gnash server/asobj/SoundFfmpeg.cpp server/asobj...
Date: Thu, 19 Jun 2008 20:06:00 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/06/19 20:06:00

Modified files:
        server/asobj   : SoundFfmpeg.cpp SoundFfmpeg.h 
        .              : ChangeLog 

Log message:
                * server/asobj/SoundFfmpeg.cpp: re-implement start offset again
                  by keeping note of where to start. Fixes bug #20685 again
                  (at least for dynamically loaded sound).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/SoundFfmpeg.cpp?cvsroot=gnash&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/SoundFfmpeg.h?cvsroot=gnash&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6986&r2=1.6987

Patches:
Index: server/asobj/SoundFfmpeg.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/SoundFfmpeg.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- server/asobj/SoundFfmpeg.cpp        19 Jun 2008 18:49:21 -0000      1.26
+++ server/asobj/SoundFfmpeg.cpp        19 Jun 2008 20:05:59 -0000      1.27
@@ -39,6 +39,7 @@
 SoundFfmpeg::SoundFfmpeg()
        : // REMEMBER TO ALWAYS INITIALIZE ALL MEMBERS !
        _mediaHandler(media::MediaHandler::get()),
+       _startTime(0),
        _leftOverData(),
        _leftOverPtr(0),
        _leftOverSize(0),
@@ -63,9 +64,15 @@
                                if ( ! _mediaParser->parsingCompleted() ) break;
 
                                // or detach and stop here...
+                               // (should really honour loopings if any)
+                               //if ( remainingLoops.. )
                                return false; // will detach us
                        }
 
+                       // if we've been asked to start at a specific time, skip
+                       // any frame with earlier timestamp
+                       if ( frame->timestamp < _startTime ) continue;
+
                        _leftOverData.reset( _audioDecoder->decode(*frame, 
_leftOverSize) );
                        _leftOverPtr = _leftOverData.get();
                        if ( ! _leftOverData )
@@ -191,6 +198,7 @@
 
                if (offset > 0)
                {
+                       _startTime=offset*1000;
                        boost::uint32_t seekms = boost::uint32_t(offset*1000);
                        // TODO: boost::mutex::scoped_lock 
parserLock(_parserMutex);
                        _mediaParser->seek(seekms); // well, we try...

Index: server/asobj/SoundFfmpeg.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/SoundFfmpeg.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- server/asobj/SoundFfmpeg.h  19 Jun 2008 17:45:08 -0000      1.16
+++ server/asobj/SoundFfmpeg.h  19 Jun 2008 20:05:59 -0000      1.17
@@ -76,6 +76,11 @@
        boost::scoped_ptr<media::MediaParser> _mediaParser;
        boost::scoped_ptr<media::AudioDecoder> _audioDecoder;
 
+       /// Number of milliseconds into the sound to start it
+       //
+       /// This is set by start()
+       boost::uint64_t _startTime;
+
        boost::scoped_array<boost::uint8_t> _leftOverData;
        boost::uint8_t* _leftOverPtr;
        size_t _leftOverSize;

Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6986
retrieving revision 1.6987
diff -u -b -r1.6986 -r1.6987
--- ChangeLog   19 Jun 2008 18:49:21 -0000      1.6986
+++ ChangeLog   19 Jun 2008 20:05:59 -0000      1.6987
@@ -1,5 +1,11 @@
 2008-06-19 Sandro Santilli <address@hidden>
 
+       * server/asobj/SoundFfmpeg.cpp: re-implement start offset again
+         by keeping note of where to start. Fixes bug #20685 again
+         (at least for dynamically loaded sound).
+
+2008-06-19 Sandro Santilli <address@hidden>
+
        * server/asobj/SoundFfmpeg.cpp (getAudio): return false
          when willing to be detached. Manually detaching would result
          in a deadlock.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]