[Swfdec-commits] 4 commits - swfdec/swfdec_as_interpret.c swfdec/swfdec_audio_event.c swfdec/swfdec_image.c swfdec/swfdec_player.c test/trace

Pekka Lampila medar at kemper.freedesktop.org
Thu Apr 24 12:18:18 PDT 2008


 swfdec/swfdec_as_interpret.c           |    2 -
 swfdec/swfdec_audio_event.c            |   15 ++++++----
 swfdec/swfdec_image.c                  |    2 -
 swfdec/swfdec_player.c                 |    3 +-
 test/trace/Makefile.am                 |   12 ++++++++
 test/trace/array-init.swf              |binary
 test/trace/array-init.swf.trace        |    2 +
 test/trace/array-init.xml              |   48 +++++++++++++++++++++++++++++++++
 test/trace/random-negative-5.swf       |binary
 test/trace/random-negative-5.swf.trace |    3 ++
 test/trace/random-negative-6.swf       |binary
 test/trace/random-negative-6.swf.trace |    3 ++
 test/trace/random-negative-7.swf       |binary
 test/trace/random-negative-7.swf.trace |    3 ++
 test/trace/random-negative-8.swf       |binary
 test/trace/random-negative-8.swf.trace |    3 ++
 test/trace/random-negative.as          |    7 ++++
 17 files changed, 95 insertions(+), 8 deletions(-)

New commits:
commit 4f2926a24a0a2e0cea2a683b3cd7e719c5d74b7e
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Thu Apr 24 21:47:36 2008 +0300

    Set bigger cache for images. Higher priority for message about too big images
    
    bmxbike.swf had an image that didn't fit the old cache size

diff --git a/swfdec/swfdec_image.c b/swfdec/swfdec_image.c
index 3fa65a1..f25fba7 100644
--- a/swfdec/swfdec_image.c
+++ b/swfdec/swfdec_image.c
@@ -124,7 +124,7 @@ swfdec_image_validate_size (SwfdecRenderer *renderer, guint width, guint height)
     size = G_MAXUINT;
   }
   if (size / 4 / width < height) {
-    SWFDEC_INFO ("%ux%u image doesn't fit into %zu bytes of cache", 
+    SWFDEC_ERROR ("%ux%u image doesn't fit into %zu bytes of cache", 
 	width, height, size);
     return FALSE;
   }
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 7d7a748..cfd189b 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -2228,7 +2228,8 @@ swfdec_player_init (SwfdecPlayer *player)
     priv->actions[i] = swfdec_ring_buffer_new_for_type (SwfdecPlayerAction, 16);
   }
   priv->external_actions = swfdec_ring_buffer_new_for_type (SwfdecPlayerExternalAction, 8);
-  priv->cache = swfdec_cache_new (16 * 1024 * 1024);
+  // Big cache is required to allow images in the sizes of 3000x2000
+  priv->cache = swfdec_cache_new (32 * 1024 * 1024);
   priv->socket_type = SWFDEC_TYPE_SOCKET;
 
   priv->runtime = g_timer_new ();
commit 30187120cccfede2f0f5620a53278d3cf71ca98b
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Thu Apr 24 21:29:19 2008 +0300

    Fix audio envelopes for mono sounds
    
    The code in question is not the greatest and should be improved

diff --git a/swfdec/swfdec_audio_event.c b/swfdec/swfdec_audio_event.c
index 6903c93..6c78bea 100644
--- a/swfdec/swfdec_audio_event.c
+++ b/swfdec/swfdec_audio_event.c
@@ -84,18 +84,23 @@ swfdec_audio_event_render (SwfdecAudio *audio, gint16* dest, guint start,
 {
   SwfdecAudioEvent *event = SWFDEC_AUDIO_EVENT (audio);
   guint offset = event->offset + start;
-  guint loop, samples, global_offset, pos, i, granularity, channels;
+  guint loop, samples, global_offset, pos, i, channels;
   gint16 *dest_end;
 
   if (event->n_samples == 0)
     return;
 
-  granularity = swfdec_audio_format_get_granularity (event->decoded_format);
   channels = swfdec_audio_format_get_channels (event->decoded_format);
 
-  global_offset = (channels - 1) * granularity * (event->loop *
-    ((event->stop_sample != 0 ? event->stop_sample : event->n_samples) -
-     event->start_sample) + event->offset - event->start_sample);
+  {
+    guint granularity =
+      swfdec_audio_format_get_granularity (event->decoded_format);
+    guint loop_length = (event->stop_sample != 0 ? event->stop_sample :
+	event->n_samples) - event->start_sample;
+
+    global_offset = channels * granularity * (event->loop * loop_length +
+      event->offset - event->start_sample);
+  }
 
   dest_end = dest;
   loop = event->loop + offset / event->n_samples;
commit 3bcee93f6bfa1fbeaf31180f52ec7cec96e1e015
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Thu Apr 24 15:51:11 2008 +0300

    Set the array length correctly if stack doesn't have enough values. Add test

diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 1121270..6a57185 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -1778,7 +1778,7 @@ swfdec_action_init_array (SwfdecAsContext *cx, guint action, const guint8 *data,
   }
   if (i != n) {
     SwfdecAsValue val;
-    SWFDEC_AS_VALUE_SET_INT (&val, i);
+    SWFDEC_AS_VALUE_SET_INT (&val, n);
     swfdec_as_object_set_variable (array, SWFDEC_AS_STR_length, &val);
   }
   SWFDEC_AS_VALUE_SET_OBJECT (swfdec_as_stack_push (cx), array);
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 8161f08..78409c6 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -101,6 +101,9 @@ EXTRA_DIST = \
 	arguments-8.swf.trace \
 	array.swf \
 	array.swf.trace \
+	array-init.xml \
+	array-init.swf \
+	array-init.swf.trace \
 	array-movieclip.as \
 	array-movieclip-5.swf \
 	array-movieclip-5.swf.trace \
diff --git a/test/trace/array-init.swf b/test/trace/array-init.swf
new file mode 100644
index 0000000..bc66d67
Binary files /dev/null and b/test/trace/array-init.swf differ
diff --git a/test/trace/array-init.swf.trace b/test/trace/array-init.swf.trace
new file mode 100644
index 0000000..0bf1453
--- /dev/null
+++ b/test/trace/array-init.swf.trace
@@ -0,0 +1,2 @@
+Test what happens when InitArray doesn't provide all the values it promises
+1,2,3,undefined,undefined
diff --git a/test/trace/array-init.xml b/test/trace/array-init.xml
new file mode 100644
index 0000000..fc30140
--- /dev/null
+++ b/test/trace/array-init.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<swf version="8" compressed="1">
+  <Header framerate="15" frames="1">
+    <size>
+      <Rectangle left="0" right="2000" top="0" bottom="3000"/>
+    </size>
+    <tags>
+      <FileAttributes hasMetaData="0" useNetwork="0"/>
+      <DoAction>
+        <actions>
+          <Dictionary>
+            <strings>
+              <String value="Test what happens when InitArray doesn't provide all the values it promises"/>
+              <String value="FSCommand:quit"/>
+              <String value=""/>
+            </strings>
+          </Dictionary>
+          <PushData>
+            <items>
+              <StackDictionaryLookup value="0"/>
+            </items>
+          </PushData>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="3"/>
+              <StackInteger value="2"/>
+              <StackInteger value="1"/>
+              <StackInteger value="5"/>
+            </items>
+          </PushData>
+          <DeclareArray/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="1"/>
+              <StackDictionaryLookup index="2"/>
+            </items>
+          </PushData>
+          <GetURL2 method="0"/>
+          <EndAction/>
+        </actions>
+      </DoAction>
+      <ShowFrame/>
+      <End/>
+    </tags>
+  </Header>
+</swf>
commit 3885614ff0aaf79ac279707382e8f5da2e3c1b06
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Thu Apr 24 15:41:29 2008 +0300

    Add a test to check that random with negative argument gives 0

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 49e1d39..8161f08 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2399,6 +2399,15 @@ EXTRA_DIST = \
 	push-weird.as \
 	push-weird.swf \
 	push-weird.swf.trace \
+	random-negative.as \
+	random-negative-5.swf \
+	random-negative-5.swf.trace \
+	random-negative-6.swf \
+	random-negative-6.swf.trace \
+	random-negative-7.swf \
+	random-negative-7.swf.trace \
+	random-negative-8.swf \
+	random-negative-8.swf.trace \
 	rectangle-construct.as \
 	rectangle-construct-5.swf \
 	rectangle-construct-5.swf.trace \
diff --git a/test/trace/random-negative-5.swf b/test/trace/random-negative-5.swf
new file mode 100644
index 0000000..3a15e91
Binary files /dev/null and b/test/trace/random-negative-5.swf differ
diff --git a/test/trace/random-negative-5.swf.trace b/test/trace/random-negative-5.swf.trace
new file mode 100644
index 0000000..bb0b1cf
--- /dev/null
+++ b/test/trace/random-negative-5.swf.trace
@@ -0,0 +1,3 @@
+0
+0
+0
diff --git a/test/trace/random-negative-6.swf b/test/trace/random-negative-6.swf
new file mode 100644
index 0000000..99d55b3
Binary files /dev/null and b/test/trace/random-negative-6.swf differ
diff --git a/test/trace/random-negative-6.swf.trace b/test/trace/random-negative-6.swf.trace
new file mode 100644
index 0000000..bb0b1cf
--- /dev/null
+++ b/test/trace/random-negative-6.swf.trace
@@ -0,0 +1,3 @@
+0
+0
+0
diff --git a/test/trace/random-negative-7.swf b/test/trace/random-negative-7.swf
new file mode 100644
index 0000000..0efb150
Binary files /dev/null and b/test/trace/random-negative-7.swf differ
diff --git a/test/trace/random-negative-7.swf.trace b/test/trace/random-negative-7.swf.trace
new file mode 100644
index 0000000..bb0b1cf
--- /dev/null
+++ b/test/trace/random-negative-7.swf.trace
@@ -0,0 +1,3 @@
+0
+0
+0
diff --git a/test/trace/random-negative-8.swf b/test/trace/random-negative-8.swf
new file mode 100644
index 0000000..cc94a7b
Binary files /dev/null and b/test/trace/random-negative-8.swf differ
diff --git a/test/trace/random-negative-8.swf.trace b/test/trace/random-negative-8.swf.trace
new file mode 100644
index 0000000..bb0b1cf
--- /dev/null
+++ b/test/trace/random-negative-8.swf.trace
@@ -0,0 +1,3 @@
+0
+0
+0
diff --git a/test/trace/random-negative.as b/test/trace/random-negative.as
new file mode 100644
index 0000000..303f339
--- /dev/null
+++ b/test/trace/random-negative.as
@@ -0,0 +1,7 @@
+// makeswf -v 7 -s 200x150 -r 15 -o test-8.swf test-8.as
+
+trace (random (-713317));
+trace (random (-1));
+trace (random (0));
+
+getURL ("FSCommand:quit", "");


More information about the Swfdec-commits mailing list