Benjamin Otte
2007-Jun-27 13:44 UTC
[Swfdec] Branch 'as' - libswfdec/swfdec_as_strings.c libswfdec/swfdec_net_stream_as.c libswfdec/swfdec_net_stream.c
libswfdec/swfdec_as_strings.c | 3 + libswfdec/swfdec_net_stream.c | 44 ++++++++++++++++++++++++ libswfdec/swfdec_net_stream_as.c | 70 --------------------------------------- 3 files changed, 47 insertions(+), 70 deletions(-) New commits: diff-tree 281da9b83e68a6d82c61d603b7cc3c735d3e66e9 (from ffe888d4c04af436959d7279bc4e5a8fae6d0acf) Author: Benjamin Otte <otte at gnome.org> Date: Wed Jun 27 15:40:20 2007 +0200 reimplement the NetStream properties Youtube now works again diff --git a/libswfdec/swfdec_as_strings.c b/libswfdec/swfdec_as_strings.c index 8fe5c1b..7a846f5 100644 --- a/libswfdec/swfdec_as_strings.c +++ b/libswfdec/swfdec_as_strings.c @@ -218,6 +218,9 @@ const char swfdec_as_strings[] = SWFDEC_AS_CONSTANT_STRING ("Video") SWFDEC_AS_CONSTANT_STRING ("attachVideo") SWFDEC_AS_CONSTANT_STRING ("clear") + SWFDEC_AS_CONSTANT_STRING ("time") + SWFDEC_AS_CONSTANT_STRING ("bytesLoaded") + SWFDEC_AS_CONSTANT_STRING ("bytesTotal") /* add more here */ ; diff --git a/libswfdec/swfdec_net_stream.c b/libswfdec/swfdec_net_stream.c index 0aeab9d..0635921 100644 --- a/libswfdec/swfdec_net_stream.c +++ b/libswfdec/swfdec_net_stream.c @@ -327,6 +327,49 @@ swfdec_net_stream_dispose (GObject *obje G_OBJECT_CLASS (swfdec_net_stream_parent_class)->dispose (object); } +static gboolean +swfdec_net_stream_get_variable (SwfdecAsObject *object, const char *variable, + SwfdecAsValue *val, guint *flags) +{ + SwfdecNetStream *stream; + + if (SWFDEC_AS_OBJECT_CLASS (swfdec_net_stream_parent_class)->get (object, variable, val, flags)) + return TRUE; + + stream = SWFDEC_NET_STREAM (object); + /* FIXME: need case insensitive comparisons? */ + if (variable == SWFDEC_AS_STR_time) { + guint msecs; + if (stream->flvdecoder == NULL || + !swfdec_flv_decoder_get_video_info (stream->flvdecoder, &msecs, NULL)) { + SWFDEC_AS_VALUE_SET_INT (val, 0); + } else { + if (msecs >= stream->current_time) + msecs = 0; + else + msecs = stream->current_time - msecs; + } + SWFDEC_AS_VALUE_SET_NUMBER (val, msecs / 1000.); + *flags = 0; + return TRUE; + } else if (variable == SWFDEC_AS_STR_bytesLoaded) { + if (stream->loader == NULL) + SWFDEC_AS_VALUE_SET_INT (val, 0); + else + SWFDEC_AS_VALUE_SET_INT (val, swfdec_loader_get_loaded (stream->loader)); + *flags = 0; + return TRUE; + } else if (variable == SWFDEC_AS_STR_bytesTotal) { + guint bytes = swfdec_loader_get_size (stream->loader); + if (bytes == 0) + bytes = swfdec_loader_get_loaded (stream->loader); + SWFDEC_AS_VALUE_SET_INT (val, bytes); + *flags = 0; + return TRUE; + } + return FALSE; +} + static void swfdec_net_stream_mark (SwfdecAsObject *object) { @@ -345,6 +388,7 @@ swfdec_net_stream_class_init (SwfdecNetS object_class->dispose = swfdec_net_stream_dispose; + asobject_class->get = swfdec_net_stream_get_variable; asobject_class->mark = swfdec_net_stream_mark; } diff --git a/libswfdec/swfdec_net_stream_as.c b/libswfdec/swfdec_net_stream_as.c index 6496c68..69dd38c 100644 --- a/libswfdec/swfdec_net_stream_as.c +++ b/libswfdec/swfdec_net_stream_as.c @@ -74,76 +74,6 @@ swfdec_net_stream_do_seek (SwfdecAsConte swfdec_net_stream_seek (stream, d); } -#if 0 -static void -swfdec_net_stream_time (SwfdecAsContext *cx, SwfdecAsObject *obj, SwfdecAsValue id, SwfdecAsValue *vp) -{ - SwfdecNetStream *stream; - guint msecs; - - stream = swfdec_scriptable_from_object (cx, obj, SWFDEC_TYPE_NET_STREAM); - if (stream == NULL) - return JS_TRUE; - - if (stream->flvdecoder == NULL || - !swfdec_flv_decoder_get_video_info (stream->flvdecoder, &msecs, NULL)) { - *vp = INT_TO_JSVAL (0); - return JS_TRUE; - } - if (msecs >= stream->current_time) - msecs = 0; - else - msecs = stream->current_time - msecs; - - return JS_NewNumberValue (cx, msecs / 1000., vp); -} - -static void -swfdec_net_stream_bytes_loaded (SwfdecAsContext *cx, SwfdecAsObject *obj, SwfdecAsValue id, SwfdecAsValue *vp) -{ - SwfdecNetStream *stream; - - stream = swfdec_scriptable_from_object (cx, obj, SWFDEC_TYPE_NET_STREAM); - if (stream == NULL) - return JS_TRUE; - - if (stream->loader == NULL) { - *vp = INT_TO_JSVAL (0); - return JS_TRUE; - } - - return JS_NewNumberValue (cx, swfdec_loader_get_loaded (stream->loader), vp); -} - -static void -swfdec_net_stream_bytes_total (SwfdecAsContext *cx, SwfdecAsObject *obj, SwfdecAsValue id, SwfdecAsValue *vp) -{ - SwfdecNetStream *stream; - gulong bytes; - - stream = swfdec_scriptable_from_object (cx, obj, SWFDEC_TYPE_NET_STREAM); - if (stream == NULL) - return JS_TRUE; - - if (stream->loader == NULL) { - *vp = INT_TO_JSVAL (0); - return JS_TRUE; - } - bytes = swfdec_loader_get_size (stream->loader); - if (bytes == 0) - bytes = swfdec_loader_get_loaded (stream->loader); - - return JS_NewNumberValue (cx, bytes, vp); -} - -static JSPropertySpec net_stream_props[] = { - { "bytesLoaded", -1, JSPROP_PERMANENT|JSPROP_READONLY, swfdec_net_stream_bytes_loaded, NULL }, - { "bytesTotal", -1, JSPROP_PERMANENT|JSPROP_READONLY, swfdec_net_stream_bytes_total, NULL }, - { "time", -1, JSPROP_PERMANENT|JSPROP_READONLY, swfdec_net_stream_time, NULL }, - { NULL } -}; -#endif - static void swfdec_net_stream_construct (SwfdecAsContext *cx, SwfdecAsObject *obj, guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval) {
Reasonably Related Threads
- Branch 'as' - 5 commits - libswfdec/Makefile.am libswfdec/swfdec_as_strings.c libswfdec/swfdec_js_net_stream.c libswfdec/swfdec_movie.c libswfdec/swfdec_net_connection.c libswfdec/swfdec_net_stream_as.c libswfdec/swfdec_net_stream.c
- 5 commits - configure.ac doc/Makefile.am doc/swfdec-sections.txt libswfdec/swfdec_js_net_stream.c libswfdec/swfdec_loader.c libswfdec/swfdec_loader.h libswfdec/swfdec_net_stream.c
- 6 commits - libswfdec-gtk/swfdec_gtk_loader.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_loader.c libswfdec/swfdec_loader.h libswfdec/swfdec_loader_internal.h libswfdec/swfdec_net_stream_as.c libswfdec/swfdec_net_stream.c
- 7 commits - libswfdec/swfdec_connection.c libswfdec/swfdec_js_connection.c libswfdec/swfdec_js_movie.c libswfdec/swfdec_js_net_stream.c libswfdec/swfdec_js_xml.c libswfdec/swfdec_net_stream.c libswfdec/swfdec_scriptable.c libswfdec/swfdec_scriptable.h
- 4 commits - libswfdec-gtk/swfdec_gtk_loader.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame_internal.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_loader.c libswfdec/swfdec_loader.h libswfdec/swfdec_load_object.c