[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cpp |
Date: |
Wed, 30 May 2007 09:06:58 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/05/30 09:06:58
Modified files:
. : ChangeLog
server/asobj : NetStreamFfmpeg.cpp
Log message:
make locking debugging messages a compile-time option.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3402&r2=1.3403
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStreamFfmpeg.cpp?cvsroot=gnash&r1=1.67&r2=1.68
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3402
retrieving revision 1.3403
diff -u -b -r1.3402 -r1.3403
--- ChangeLog 30 May 2007 08:57:59 -0000 1.3402
+++ ChangeLog 30 May 2007 09:06:57 -0000 1.3403
@@ -4,7 +4,8 @@
method (return milliseconds, not seconds); have
NetStream.bufferLength return in fractional seconds, as expected;
Change bufferTime to take milliseconds, convert from seconds
- in the AS method (so we can accept fractional seconds..).
+ in the AS method (so we can accept fractional seconds..);
+ make locking debugging messages a compile-time option.
2007-05-30 Tomas Groth Christensen <address@hidden>
Index: server/asobj/NetStreamFfmpeg.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/NetStreamFfmpeg.cpp,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -b -r1.67 -r1.68
--- server/asobj/NetStreamFfmpeg.cpp 29 May 2007 22:48:25 -0000 1.67
+++ server/asobj/NetStreamFfmpeg.cpp 30 May 2007 09:06:57 -0000 1.68
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: NetStreamFfmpeg.cpp,v 1.67 2007/05/29 22:48:25 strk Exp $ */
+/* $Id: NetStreamFfmpeg.cpp,v 1.68 2007/05/30 09:06:57 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -43,6 +43,9 @@
# include "unistd.h" // for usleep()
#endif
+/// Define this to add debugging prints for locking
+//#define GNASH_DEBUG_THREADS
+
// Used to free data in the AVPackets we create our self
static void avpacket_destruct(AVPacket* av) {
delete [] av->data;
@@ -594,11 +597,15 @@
// decoder thread
void NetStreamFfmpeg::av_streamer(NetStreamFfmpeg* ns)
{
- GNASH_REPORT_FUNCTION;
+ //GNASH_REPORT_FUNCTION;
+#ifdef GNASH_DEBUG_THREADS
log_debug("Thread %d locking on ::av_streamer", pthread_self());
+#endif
boost::mutex::scoped_lock lock(ns->decoding_mutex);
+#ifdef GNASH_DEBUG_THREADS
log_debug(" obtained (av_streamer)");
+#endif
// This should only happen if close() is called before this thread is
ready
if (!ns->m_go)
@@ -637,7 +644,9 @@
// Loop while we're playing
while (ns->m_go)
{
+#ifdef GNASH_DEBUG_THREADS
log_debug("Decoding iteration");
+#endif
if (ns->m_isFLV) {
// If queues are full then don't bother filling it
@@ -653,9 +662,13 @@
if (ns->m_pause || (ns->m_qvideo.size() > 10 &&
ns->m_qaudio.size() > 10))
{
assert(ns->m_go);
+#ifdef GNASH_DEBUG_THREADS
log_debug("Waiting on lock..");
+#endif
ns->decode_wait.wait(lock);
+#ifdef GNASH_DEBUG_THREADS
log_debug("Finished waiting.");
+#endif
}
} else {
@@ -669,15 +682,21 @@
// if the queue is full we wait until someone notifies
us that data is needed.
if (ns->m_pause || ((ns->m_qvideo.size() > 0 &&
ns->m_qaudio.size() > 0) && ns->m_unqueued_data))
{
+#ifdef GNASH_DEBUG_THREADS
log_debug("Waiting on lock..");
+#endif
ns->decode_wait.wait(lock);
+#ifdef GNASH_DEBUG_THREADS
log_debug("Finished waiting.");
+#endif
}
}
}
+#ifdef GNASH_DEBUG_THREADS
log_debug("Out of decoding loop");
+#endif
ns->m_go = false;
log_debug("Setting playStop status");
@@ -687,13 +706,17 @@
// audio callback is running in sound handler thread
bool NetStreamFfmpeg::audio_streamer(void *owner, uint8_t *stream, int len)
{
- GNASH_REPORT_FUNCTION;
+ //GNASH_REPORT_FUNCTION;
NetStreamFfmpeg* ns = static_cast<NetStreamFfmpeg*>(owner);
+#ifdef GNASH_DEBUG_THREADS
log_debug("Thread %d locking on ::audio_streamer", pthread_self());
+#endif
boost::mutex::scoped_lock lock(ns->decoding_mutex);
+#ifdef GNASH_DEBUG_THREADS
log_debug(" obtained (audio_streamer)");
+#endif
if (!ns->m_go || ns->m_pause) return false;
@@ -740,7 +763,9 @@
if (frame == NULL) {
if (_netCon->loadCompleted())
{
+#ifdef GNASH_DEBUG_THREADS
log_debug("decodeFLVFrame: load completed, stopping");
+#endif
// Stop!
m_go = false;
} else {
@@ -959,9 +984,13 @@
bool NetStreamFfmpeg::decodeMediaFrame()
{
+#ifdef GNASH_DEBUG_THREADS
log_debug("Thread %d locking on ::decodeMediaFrame", pthread_self());
+#endif
boost::mutex::scoped_lock lock(decoding_mutex);
+#ifdef GNASH_DEBUG_THREADS
log_debug(" obtained (decodeMediaFrame)");
+#endif
if (m_unqueued_data)
{
@@ -1164,9 +1193,13 @@
void
NetStreamFfmpeg::advance()
{
+#ifdef GNASH_DEBUG_THREADS
log_debug("Thread %d locking on ::advance", pthread_self());
+#endif
boost::mutex::scoped_lock lock(decoding_mutex);
+#ifdef GNASH_DEBUG_THREADS
log_debug(" obtained (advance)");
+#endif
// Make sure al decoding has stopped
// This can happen in 2 cases:
@@ -1183,7 +1216,7 @@
m_start_onbuffer = false;
}
- log_debug("(advance): processing status notification, refreshing video
frame");
+ //log_debug("(advance): processing status notification, refreshing
video frame");
// Check if there are any new status messages, and if we should
// pass them to a event handler
- [Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cpp,
Sandro Santilli <=