[Top][All Lists]
[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;
};