gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cp... [gnash


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cp... [gnash_0_8_3_branch]
Date: Wed, 21 May 2008 11:35:49 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Branch:         gnash_0_8_3_branch
Changes by:     Sandro Santilli <strk>  08/05/21 11:35:49

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

Log message:
          Don't lock input mutex while holding it on ::startPlayback.
          Doesn't fix the .join() hung, but helgrind is kind of happier.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&only_with_tag=gnash_0_8_3_branch&r1=1.6573.2.31&r2=1.6573.2.32
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStreamFfmpeg.cpp?cvsroot=gnash&only_with_tag=gnash_0_8_3_branch&r1=1.116.2.4&r2=1.116.2.5
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStreamFfmpeg.h?cvsroot=gnash&only_with_tag=gnash_0_8_3_branch&r1=1.60.2.1&r2=1.60.2.2

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6573.2.31
retrieving revision 1.6573.2.32
diff -u -b -r1.6573.2.31 -r1.6573.2.32
--- ChangeLog   21 May 2008 09:15:08 -0000      1.6573.2.31
+++ ChangeLog   21 May 2008 11:35:48 -0000      1.6573.2.32
@@ -1,3 +1,9 @@
+2008-05-21 Sandro Santilli <address@hidden>
+
+       * server/asobj/NetStreamFfmpeg.{cpp,h}:
+         Don't lock input mutex while holding it on ::startPlayback.
+         Doesn't fix the .join() hung, but helgrind is kind of happier.
+
 2008-05-20 Bastiaan Jacques <address@hidden>
 
        * server/asobj/NetStreamFfmpeg.cpp: Set playStop when playback stops

Index: server/asobj/NetStreamFfmpeg.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/NetStreamFfmpeg.cpp,v
retrieving revision 1.116.2.4
retrieving revision 1.116.2.5
diff -u -b -r1.116.2.4 -r1.116.2.5
--- server/asobj/NetStreamFfmpeg.cpp    21 May 2008 09:15:11 -0000      
1.116.2.4
+++ server/asobj/NetStreamFfmpeg.cpp    21 May 2008 11:35:49 -0000      
1.116.2.5
@@ -396,8 +396,8 @@
 /// @param ns the netstream to use for reading
 /// @return a pointer to the AVInputFormat structure containing
 ///         information about the input format, or NULL.
-static AVInputFormat*
-probeStream(NetStreamFfmpeg* ns)
+AVInputFormat*
+NetStreamFfmpeg::probeStream()
 {
        boost::scoped_array<boost::uint8_t> buffer(new boost::uint8_t[2048]);
 
@@ -407,7 +407,10 @@
        probe_data.buf = buffer.get();
        probe_data.buf_size = 2048;
 
-       if (ns->readPacket(ns, probe_data.buf, probe_data.buf_size) < 1)
+       // Avoid calling readPacket to avoid locking (we should be already 
locked)
+       tu_file& nc = *_downloader;
+       size_t ret = nc.read_bytes(probe_data.buf, probe_data.buf_size);
+       if (ret < 1) 
        {
                log_error(_("Gnash could not read from movie url"));
                return NULL;
@@ -509,7 +512,7 @@
        // XXX should we call avcodec_init() first?
        av_register_all();
 
-       AVInputFormat* inputFmt = probeStream(this);
+       AVInputFormat* inputFmt = probeStream();
        if (!inputFmt)
        {
                log_error(_("Couldn't determine stream input format from URL 
%s"), url.c_str());

Index: server/asobj/NetStreamFfmpeg.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/NetStreamFfmpeg.h,v
retrieving revision 1.60.2.1
retrieving revision 1.60.2.2
diff -u -b -r1.60.2.1 -r1.60.2.2
--- server/asobj/NetStreamFfmpeg.h      20 May 2008 08:02:54 -0000      1.60.2.1
+++ server/asobj/NetStreamFfmpeg.h      21 May 2008 11:35:49 -0000      1.60.2.2
@@ -240,6 +240,12 @@
 
        // Decoder buffer
        boost::uint8_t* _decoderBuffer;
+
+       // Read some data from input to figure format
+       //
+       // does NOT lock _netcon_mutex (assuming locked already)
+       //
+       AVInputFormat* probeStream();
 };
 
 




reply via email to

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