gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog libbase/FLVParser.cpp server/as...


From: Bastiaan Jacques
Subject: [Gnash-commit] gnash ChangeLog libbase/FLVParser.cpp server/as...
Date: Wed, 11 Apr 2007 13:03:46 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Bastiaan Jacques <bjacques>     07/04/11 13:03:46

Modified files:
        .              : ChangeLog 
        libbase        : FLVParser.cpp 
        server/asobj   : NetStreamFfmpeg.cpp 

Log message:
        * libbase/FLVParser.cpp: Append 8 "zero" bytes to the end of the frame
        buffer to prevent decoders from going past the end of our frame buffer.
        This adds NULL-termination, which is also expected by FFMPEG.
        * server/asobj/NetStreamFfmpeg.cpp: Initialize certain members to safe
        defaults so they will not be read in their uninitialised states.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2844&r2=1.2845
http://cvs.savannah.gnu.org/viewcvs/gnash/libbase/FLVParser.cpp?cvsroot=gnash&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStreamFfmpeg.cpp?cvsroot=gnash&r1=1.35&r2=1.36

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2844
retrieving revision 1.2845
diff -u -b -r1.2844 -r1.2845
--- ChangeLog   11 Apr 2007 08:55:05 -0000      1.2844
+++ ChangeLog   11 Apr 2007 13:03:45 -0000      1.2845
@@ -1,3 +1,11 @@
+2007-04-11 Bastiaan Jacques <address@hidden>
+
+       * libbase/FLVParser.cpp: Append 8 "zero" bytes to the end of the frame
+       buffer to prevent decoders from going past the end of our frame buffer.
+       This adds NULL-termination, which is also expected by FFMPEG.
+       * server/asobj/NetStreamFfmpeg.cpp: Initialize certain members to safe
+       defaults so they will not be read in their uninitialised states.
+
 2007-04-11 Sandro Santilli <address@hidden>
 
        * server/character.h: add protected set_event_handlers(), turn

Index: libbase/FLVParser.cpp
===================================================================
RCS file: /sources/gnash/gnash/libbase/FLVParser.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- libbase/FLVParser.cpp       30 Mar 2007 13:57:26 -0000      1.3
+++ libbase/FLVParser.cpp       11 Apr 2007 13:03:45 -0000      1.4
@@ -16,7 +16,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-// $Id: FLVParser.cpp,v 1.3 2007/03/30 13:57:26 tgc Exp $
+// $Id: FLVParser.cpp,v 1.4 2007/04/11 13:03:45 bjacques Exp $
 
 #include "FLVParser.h"
 #include "amf.h"
@@ -109,6 +109,8 @@
        }
 
        // Find the next frame in the file a return it
+#define PADDING_BYTES 8
+
        if (useAudio) {
                _lastAudioFrame++;
 
@@ -117,8 +119,10 @@
                frame->timestamp = _audioFrames[_lastAudioFrame]->timestamp;
 
                _lt->seek(_audioFrames[_lastAudioFrame]->dataPosition);
-               frame->data = new 
uint8_t[_audioFrames[_lastAudioFrame]->dataSize];
-               _lt->read(frame->data, _audioFrames[_lastAudioFrame]->dataSize);
+               frame->data = new uint8_t[frame->dataSize + PADDING_BYTES];
+               size_t bytesread = _lt->read(frame->data, frame->dataSize);
+               memset(frame->data + bytesread, 0, PADDING_BYTES);
+
                frame->tag = 8;
                return frame;
        
@@ -130,12 +134,16 @@
                frame->timestamp = _videoFrames[_lastVideoFrame]->timestamp;
 
                _lt->seek(_videoFrames[_lastVideoFrame]->dataPosition);
-               frame->data = new 
uint8_t[_videoFrames[_lastVideoFrame]->dataSize];
-               _lt->read(frame->data, _videoFrames[_lastVideoFrame]->dataSize);
+               frame->data = new uint8_t[frame->dataSize + PADDING_BYTES];
+               size_t bytesread  = _lt->read(frame->data, frame->dataSize);
+               memset(frame->data + bytesread, 0, PADDING_BYTES);
+
                frame->tag = 9;
                return frame;
        }
 
+#undef PADDING_BYTES
+
 }
 
 FLVFrame* FLVParser::nextAudioFrame()

Index: server/asobj/NetStreamFfmpeg.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/NetStreamFfmpeg.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- server/asobj/NetStreamFfmpeg.cpp    10 Apr 2007 20:24:23 -0000      1.35
+++ server/asobj/NetStreamFfmpeg.cpp    11 Apr 2007 13:03:45 -0000      1.36
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: NetStreamFfmpeg.cpp,v 1.35 2007/04/10 20:24:23 bjacques Exp $ */
+/* $Id: NetStreamFfmpeg.cpp,v 1.36 2007/04/11 13:03:45 bjacques Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -581,7 +581,7 @@
 static void
 rgbcopy(image::rgb* dst, raw_videodata_t* src, int width)
 {
-       assert(src->m_size <= dst->m_width * dst->m_height * 3);
+       assert(src->m_size <= static_cast<uint32_t>(dst->m_width * 
dst->m_height * 3));
 
        uint8_t* dstptr = dst->m_data;
 
@@ -766,7 +766,8 @@
                packet.destruct = avpacket_destruct;
                packet.size = frame->dataSize;
                packet.data = frame->data;
-               packet.pts = static_cast<int64_t>(frame->timestamp);
+               // FIXME: is this the right value for packet.dts?
+               packet.pts = packet.dts = 
static_cast<int64_t>(frame->timestamp);
                rc = 0;
        } else {
                rc = av_read_frame(m_FormatCtx, &packet);
@@ -859,6 +860,7 @@
 
                                video->m_ptr = video->m_data;
                                video->m_stream_index = m_video_index;
+                               video->m_pts = 0;
 
                                // set presentation timestamp
                                if (packet.dts != static_cast<signed 
long>(AV_NOPTS_VALUE))




reply via email to

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