Pekka Lampila
2007-Nov-15 20:46 UTC
[Swfdec] 2 commits - libswfdec/swfdec_sprite_movie.c test/trace
libswfdec/swfdec_sprite_movie.c | 4 -
test/trace/Makefile.am | 3 +
test/trace/totalframes.swf |binary
test/trace/totalframes.swf.trace | 4 +
test/trace/totalframes.xml | 103 +++++++++++++++++++++++++++++++++++++++
5 files changed, 112 insertions(+), 2 deletions(-)
New commits:
commit 7c377ba3852ca8c66e5d42bbdec7662ca9b7a4fd
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Nov 15 22:46:09 2007 +0200
Add a test for _totalframes and _framesloaded
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 1a9640a..ab451a6 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2309,6 +2309,9 @@ EXTRA_DIST = \
tointeger-various-6.swf.trace \
tointeger-various-7.swf \
tointeger-various-7.swf.trace \
+ totalframes.xml \
+ totalframes.swf \
+ totalframes.swf.trace \
trace_properties.as \
transform.swf \
transform.swf.trace \
diff --git a/test/trace/totalframes.swf b/test/trace/totalframes.swf
new file mode 100644
index 0000000..aef7074
Binary files /dev/null and b/test/trace/totalframes.swf differ
diff --git a/test/trace/totalframes.swf.trace b/test/trace/totalframes.swf.trace
new file mode 100644
index 0000000..ebbeb81
--- /dev/null
+++ b/test/trace/totalframes.swf.trace
@@ -0,0 +1,4 @@
+5
+5
+0
+0
diff --git a/test/trace/totalframes.xml b/test/trace/totalframes.xml
new file mode 100644
index 0000000..d61009c
--- /dev/null
+++ b/test/trace/totalframes.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0"?>
+<swf version="6" compressed="1">
+ <Header framerate="1" frames="1">
+ <size>
+ <Rectangle left="0" right="4000" top="0"
bottom="3000"/>
+ </size>
+ <tags>
+ <DefineSprite objectID="1" frames="5">
+ <tags>
+ <ShowFrame/>
+ <ShowFrame/>
+ <ShowFrame/>
+ <ShowFrame/>
+ <ShowFrame/>
+ <End/>
+ </tags>
+ </DefineSprite>
+ <DefineSprite objectID="2" frames="0">
+ <tags>
+ <End/>
+ </tags>
+ </DefineSprite>
+ <PlaceObject2 replace="0" depth="1"
objectID="1" name="test1"/>
+ <PlaceObject2 replace="0" depth="2"
objectID="2" name="test2"/>
+ <DoAction>
+ <actions>
+ <Dictionary>
+ <strings>
+ <String value="test1"/>
+ <String value="test2"/>
+ <String value="_totalframes"/>
+ <String value="_framesloaded"/>
+ <String value="FSCommand:quit"/>
+ <String value=""/>
+ </strings>
+ </Dictionary>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="0"/>
+ </items>
+ </PushData>
+ <GetVariable/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="2"/>
+ </items>
+ </PushData>
+ <GetMember/>
+ <Trace/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="0"/>
+ </items>
+ </PushData>
+ <GetVariable/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="3"/>
+ </items>
+ </PushData>
+ <GetMember/>
+ <Trace/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="1"/>
+ </items>
+ </PushData>
+ <GetVariable/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="2"/>
+ </items>
+ </PushData>
+ <GetMember/>
+ <Trace/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="1"/>
+ </items>
+ </PushData>
+ <GetVariable/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="3"/>
+ </items>
+ </PushData>
+ <GetMember/>
+ <Trace/>
+ <PushData>
+ <items>
+ <StackDictionaryLookup index="4"/>
+ <StackDictionaryLookup index="5"/>
+ </items>
+ </PushData>
+ <GetURL2 method="64"/>
+ <EndAction/>
+ </actions>
+ </DoAction>
+ <ShowFrame/>
+ <End/>
+ </tags>
+ </Header>
+</swf>
commit b1a1801d468a9dfb5524c36b87b43d83cd871e81
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Nov 15 22:42:59 2007 +0200
Fix _totalframes and _framesloaded for movies without own resource
diff --git a/libswfdec/swfdec_sprite_movie.c b/libswfdec/swfdec_sprite_movie.c
index bc5768e..6ffdc67 100644
--- a/libswfdec/swfdec_sprite_movie.c
+++ b/libswfdec/swfdec_sprite_movie.c
@@ -845,7 +845,7 @@ swfdec_sprite_movie_get_frames_loaded (SwfdecSpriteMovie
*movie)
resource = swfdec_movie_get_own_resource (SWFDEC_MOVIE (movie));
if (resource == NULL)
- return 1;
+ return movie->n_frames;
dec = resource->decoder;
if (dec == NULL)
return -1;
@@ -864,7 +864,7 @@ swfdec_sprite_movie_get_frames_total (SwfdecSpriteMovie
*movie)
resource = swfdec_movie_get_own_resource (SWFDEC_MOVIE (movie));
if (resource == NULL)
- return 1;
+ return movie->n_frames;
dec = resource->decoder;
if (dec == NULL)
return 0;
Benjamin Otte
2007-Nov-29 09:36 UTC
[Swfdec] 2 commits - libswfdec/swfdec_sprite_movie.c test/trace
libswfdec/swfdec_sprite_movie.c | 18 ++++++++++++++----
test/trace/Makefile.am | 9 +++++++++
test/trace/emptymovie-frames-bytes-5.swf |binary
test/trace/emptymovie-frames-bytes-5.swf.trace | 4 ++++
test/trace/emptymovie-frames-bytes-6.swf |binary
test/trace/emptymovie-frames-bytes-6.swf.trace | 4 ++++
test/trace/emptymovie-frames-bytes-7.swf |binary
test/trace/emptymovie-frames-bytes-7.swf.trace | 4 ++++
test/trace/emptymovie-frames-bytes-8.swf |binary
test/trace/emptymovie-frames-bytes-8.swf.trace | 4 ++++
test/trace/emptymovie-frames-bytes.as | 9 +++++++++
11 files changed, 48 insertions(+), 4 deletions(-)
New commits:
commit 248a6ed57bfcc7942cdb6a3ee1578bf518cf78bb
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Nov 29 10:32:50 2007 +0100
add test for frames and bytes properties of empty movies
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 1a40a31..36360e2 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -804,6 +804,15 @@ EXTRA_DIST = \
empty-stack.as \
empty-stack.swf \
empty-stack.swf.trace \
+ emptymovie-frames-bytes-5.swf \
+ emptymovie-frames-bytes-5.swf.trace \
+ emptymovie-frames-bytes-6.swf \
+ emptymovie-frames-bytes-6.swf.trace \
+ emptymovie-frames-bytes-7.swf \
+ emptymovie-frames-bytes-7.swf.trace \
+ emptymovie-frames-bytes-8.swf \
+ emptymovie-frames-bytes-8.swf.trace \
+ emptymovie-frames-bytes.as \
enumerate.as \
enumerate2-5.swf \
enumerate2-5.swf.trace \
diff --git a/test/trace/emptymovie-frames-bytes-5.swf
b/test/trace/emptymovie-frames-bytes-5.swf
new file mode 100644
index 0000000..8c30119
Binary files /dev/null and b/test/trace/emptymovie-frames-bytes-5.swf differ
diff --git a/test/trace/emptymovie-frames-bytes-5.swf.trace
b/test/trace/emptymovie-frames-bytes-5.swf.trace
new file mode 100644
index 0000000..fefcb76
--- /dev/null
+++ b/test/trace/emptymovie-frames-bytes-5.swf.trace
@@ -0,0 +1,4 @@
+undefined
+undefined
+undefined
+undefined
diff --git a/test/trace/emptymovie-frames-bytes-6.swf
b/test/trace/emptymovie-frames-bytes-6.swf
new file mode 100644
index 0000000..9bc1c2d
Binary files /dev/null and b/test/trace/emptymovie-frames-bytes-6.swf differ
diff --git a/test/trace/emptymovie-frames-bytes-6.swf.trace
b/test/trace/emptymovie-frames-bytes-6.swf.trace
new file mode 100644
index 0000000..d9ff83f
--- /dev/null
+++ b/test/trace/emptymovie-frames-bytes-6.swf.trace
@@ -0,0 +1,4 @@
+1
+1
+0
+0
diff --git a/test/trace/emptymovie-frames-bytes-7.swf
b/test/trace/emptymovie-frames-bytes-7.swf
new file mode 100644
index 0000000..d54c0f4
Binary files /dev/null and b/test/trace/emptymovie-frames-bytes-7.swf differ
diff --git a/test/trace/emptymovie-frames-bytes-7.swf.trace
b/test/trace/emptymovie-frames-bytes-7.swf.trace
new file mode 100644
index 0000000..d9ff83f
--- /dev/null
+++ b/test/trace/emptymovie-frames-bytes-7.swf.trace
@@ -0,0 +1,4 @@
+1
+1
+0
+0
diff --git a/test/trace/emptymovie-frames-bytes-8.swf
b/test/trace/emptymovie-frames-bytes-8.swf
new file mode 100644
index 0000000..a46bb22
Binary files /dev/null and b/test/trace/emptymovie-frames-bytes-8.swf differ
diff --git a/test/trace/emptymovie-frames-bytes-8.swf.trace
b/test/trace/emptymovie-frames-bytes-8.swf.trace
new file mode 100644
index 0000000..d9ff83f
--- /dev/null
+++ b/test/trace/emptymovie-frames-bytes-8.swf.trace
@@ -0,0 +1,4 @@
+1
+1
+0
+0
diff --git a/test/trace/emptymovie-frames-bytes.as
b/test/trace/emptymovie-frames-bytes.as
new file mode 100644
index 0000000..2e25a0e
--- /dev/null
+++ b/test/trace/emptymovie-frames-bytes.as
@@ -0,0 +1,9 @@
+// makeswf -v 7 -s 200x150 -r 1 -o movie23.swf movie23.as
+
+createEmptyMovieClip ("a", 0);
+trace (a._framesloaded);
+trace (a._totalframes);
+trace (a.getBytesLoaded());
+trace (a.getBytesTotal());
+
+loadMovie ("fscommand:quit", "");
commit 7ab01fd3f9d44f2fe9d020c023d6cf92e011f85b
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Nov 29 10:31:43 2007 +0100
empty movieclips have 1 frame, not 0
diff --git a/libswfdec/swfdec_sprite_movie.c b/libswfdec/swfdec_sprite_movie.c
index 15d6af3..1626ede 100644
--- a/libswfdec/swfdec_sprite_movie.c
+++ b/libswfdec/swfdec_sprite_movie.c
@@ -842,8 +842,13 @@ swfdec_sprite_movie_get_frames_loaded (SwfdecSpriteMovie
*movie)
g_return_val_if_fail (SWFDEC_IS_SPRITE_MOVIE (movie), 0);
resource = swfdec_movie_get_own_resource (SWFDEC_MOVIE (movie));
- if (resource == NULL)
- return movie->n_frames;
+ if (resource == NULL) {
+ /* FIXME: can we set n_frames to 1 for movies without sprites instead? */
+ if (movie->sprite)
+ return movie->n_frames;
+ else
+ return 1;
+ }
dec = resource->decoder;
if (dec == NULL)
return -1;
@@ -861,8 +866,13 @@ swfdec_sprite_movie_get_frames_total (SwfdecSpriteMovie
*movie)
g_return_val_if_fail (SWFDEC_IS_SPRITE_MOVIE (movie), 0);
resource = swfdec_movie_get_own_resource (SWFDEC_MOVIE (movie));
- if (resource == NULL)
- return movie->n_frames;
+ if (resource == NULL) {
+ /* FIXME: can we set n_frames to 1 for movies without sprites instead? */
+ if (movie->sprite)
+ return movie->n_frames;
+ else
+ return 1;
+ }
dec = resource->decoder;
if (dec == NULL)
return 0;