gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/parser/video_stream_def....


From: Tomas Groth
Subject: [Gnash-commit] gnash ChangeLog server/parser/video_stream_def....
Date: Thu, 13 Sep 2007 20:54:42 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Tomas Groth <tgc>       07/09/13 20:54:42

Modified files:
        .              : ChangeLog 
        server/parser  : video_stream_def.cpp video_stream_def.h 

Log message:
                * server/parser/video_stream_def.{h,cpp}: Tie embedded video
                  frames to the swf-frame it is embedded in. The containers the
                  video frame is stored in was merged into one.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4309&r2=1.4310
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/video_stream_def.cpp?cvsroot=gnash&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/video_stream_def.h?cvsroot=gnash&r1=1.9&r2=1.10

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4309
retrieving revision 1.4310
diff -u -b -r1.4309 -r1.4310
--- ChangeLog   13 Sep 2007 19:32:49 -0000      1.4309
+++ ChangeLog   13 Sep 2007 20:54:41 -0000      1.4310
@@ -1,3 +1,9 @@
+2007-09-13 Tomas Groth Christensen <address@hidden>
+
+       * server/parser/video_stream_def.{h,cpp}: Tie embedded video
+         frames to the swf-frame it is embedded in. The containers the
+         video frame is stored in was merged into one.
+
 2007-09-13  Rob Savoye  <address@hidden>
 
        * macros/lirc.m4: Search for lirc files, so we can support a

Index: server/parser/video_stream_def.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/video_stream_def.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- server/parser/video_stream_def.cpp  10 Sep 2007 14:09:30 -0000      1.15
+++ server/parser/video_stream_def.cpp  13 Sep 2007 20:54:42 -0000      1.16
@@ -16,7 +16,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 // 
-// $Id: video_stream_def.cpp,v 1.15 2007/09/10 14:09:30 strk Exp $
+// $Id: video_stream_def.cpp,v 1.16 2007/09/13 20:54:42 tgc Exp $
 
 #include "video_stream_def.h"
 #include "video_stream_instance.h"
@@ -39,9 +39,6 @@
 
 video_stream_definition::~video_stream_definition()
 {
-       for (int32_t size = m_video_frames.size()-1; size >= 0; size--) {
-               delete [] m_video_frames[size];
-       }
        m_video_frames.clear();
 }
 
@@ -74,10 +71,9 @@
        }
        else if (tag == SWF::VIDEOFRAME)
        {
-               // TODO: do *not* skip the frame number !
-               //       The SWF may not contain a video frame for
-               //       each SWF frame, in which case we make a mess
-               //
+               // We don't use the videoframe number, but instead
+               // each video frame is tied to the swf-frame where
+               // it belongs.
                in->skip_bytes(2); //int frameNum = in->read_u16();
 
                // We need to make the buffer a bit bigger than the data
@@ -97,9 +93,8 @@
                {
                        data[i] = in->read_u8();
                }
-               m_video_frames.push_back(data);
-               m_video_frames_size.push_back(size);
 
+               m_video_frames[m->get_loading_frame()] = 
embedFrame(boost::shared_array<uint8_t>(data), size);
        }
 
 }
@@ -143,18 +138,17 @@
 void 
 video_stream_definition::get_frame_data(int frameNum, uint8_t** data, int* 
size)
 {
-       int cur_frame = frameNum - m_start_frame;
-       if ( cur_frame < 0 || cur_frame >= m_video_frames.size() )
+       embedFrameMap::iterator it = m_video_frames.find(frameNum);
+       if( it != m_video_frames.end() )
        {
+               *data = it->second.first.get();
+               *size = it->second.second;
+       } else {
                log_error(_("No video data available for frame %d."), frameNum);
                *data = 0;
                *size = 0;
                return;
        }
-
-       assert( cur_frame < m_video_frames_size.size() );
-       *size = m_video_frames_size[cur_frame];
-       *data = m_video_frames[cur_frame];
 }
 
 } // namespace gnash

Index: server/parser/video_stream_def.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/video_stream_def.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/parser/video_stream_def.h    8 Sep 2007 11:19:50 -0000       1.9
+++ server/parser/video_stream_def.h    13 Sep 2007 20:54:42 -0000      1.10
@@ -16,7 +16,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 // 
-// $Id: video_stream_def.h,v 1.9 2007/09/08 11:19:50 strk Exp $
+// $Id: video_stream_def.h,v 1.10 2007/09/13 20:54:42 tgc Exp $
 
 #ifndef GNASH_VIDEO_STREAM_DEF_H
 #define GNASH_VIDEO_STREAM_DEF_H
@@ -33,6 +33,8 @@
 #include "execute_tag.h"
 #include "embedVideoDecoder.h"
 #include "image.h"
+#include <map>
+#include <boost/shared_array.hpp>
 
 namespace gnash {
 
@@ -155,20 +157,14 @@
        /// Bounds of the video, as read from the DEFINEVIDEOSTREAM tag.
        rect m_bound;
 
-       /// The undecoded video frames associated with frames starting at 
m_start_frame
+       /// The undecoded video frames and its size, using the swf-frame number 
as key
        //
-       /// Elements of this vector are owned by this instance, and will be 
deleted 
+       /// Elements of this map are owned by this instance, and will be 
deleted 
        /// at instance destruction time.
        ///
-       /// TODO: encode size with each video frame instead (use a vector of 
vectors ?)
-       ///
-       std::vector<uint8_t *> m_video_frames;
-
-       /// Size of each element of m_video_frames above
-       //
-       /// TODO: encode size with each video frame instead (use a vector of 
vectors ?)
-       ///
-       std::vector<int>        m_video_frames_size;
+       typedef std::pair< boost::shared_array<uint8_t>, uint32_t> embedFrame;
+       typedef std::map<uint32_t, embedFrame > embedFrameMap;
+       embedFrameMap m_video_frames;
 
 };
 




reply via email to

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