[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