summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2008-12-10 15:01:44 +0100
committerBenjamin Otte <otte@gnome.org>2008-12-16 21:38:15 +0100
commitc54d6df2ae2f605975b1cc56bf1ceafce118b19d (patch)
tree81fa89df5cfb2728da87bc2c4ae24e6323661980
parentbd504644cd5bfbb8be14bdfbdc8018052bec6207 (diff)
stub out NetStream's native properties
-rw-r--r--swfdec/swfdec_as_strings.c2
-rw-r--r--swfdec/swfdec_net_stream.c101
2 files changed, 102 insertions, 1 deletions
diff --git a/swfdec/swfdec_as_strings.c b/swfdec/swfdec_as_strings.c
index 3df37a9d..23859811 100644
--- a/swfdec/swfdec_as_strings.c
+++ b/swfdec/swfdec_as_strings.c
@@ -526,7 +526,7 @@ const SwfdecAsConstantStringValue swfdec_as_strings[] = {
SWFDEC_AS_CONSTANT_STRING ("currentFps")
SWFDEC_AS_CONSTANT_STRING ("decodedFrames")
SWFDEC_AS_CONSTANT_STRING ("liveDelay")
- SWFDEC_AS_CONSTANT_STRING ("videoCodec")
+ SWFDEC_AS_CONSTANT_STRING ("videocodec")
SWFDEC_AS_CONSTANT_STRING ("System")
SWFDEC_AS_CONSTANT_STRING ("__resolve")
SWFDEC_AS_CONSTANT_STRING ("Rectangle")
diff --git a/swfdec/swfdec_net_stream.c b/swfdec/swfdec_net_stream.c
index b28e1666..67ccc832 100644
--- a/swfdec/swfdec_net_stream.c
+++ b/swfdec/swfdec_net_stream.c
@@ -195,6 +195,7 @@ swfdec_net_stream_dispose (GObject *object)
}
g_signal_handlers_disconnect_by_func (stream->video,
swfdec_net_stream_video_buffer_status, stream);
+ g_object_unref (stream->video);
G_OBJECT_CLASS (swfdec_net_stream_parent_class)->dispose (object);
}
@@ -273,6 +274,103 @@ swfdec_net_stream_set_checkPolicyFile (SwfdecAsContext *cx, SwfdecAsObject *obje
SWFDEC_STUB ("NetStream.checkPolicyFile (set)");
}
+static void
+swfdec_net_stream_get_audiocodec (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.audiocodec (get)");
+}
+
+static void
+swfdec_net_stream_get_bufferLength (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.bufferLength (get)");
+}
+
+static void
+swfdec_net_stream_get_bufferTime (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.bufferTime (get)");
+}
+
+static void
+swfdec_net_stream_get_bytesLoaded (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.bytesLoaded (get)");
+}
+
+static void
+swfdec_net_stream_get_bytesTotal (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.bytesTotal (get)");
+}
+
+static void
+swfdec_net_stream_get_currentFps (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.currentFps (get)");
+}
+
+static void
+swfdec_net_stream_get_decodedFrames (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.decodedFrames (get)");
+}
+
+static void
+swfdec_net_stream_get_liveDelay (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.liveDelay (get)");
+}
+
+static void
+swfdec_net_stream_get_time (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.time (get)");
+}
+
+static void
+swfdec_net_stream_get_videocodec (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+ SWFDEC_STUB ("NetStream.videocodec (get)");
+}
+
+static void
+swfdec_net_stream_install_properties (SwfdecAsObject *object)
+{
+ object = object->prototype;
+
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_audiocodec,
+ swfdec_net_stream_get_audiocodec, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_bufferLength,
+ swfdec_net_stream_get_bufferLength, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_bufferTime,
+ swfdec_net_stream_get_bufferTime, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_bytesLoaded,
+ swfdec_net_stream_get_bytesLoaded, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_bytesTotal,
+ swfdec_net_stream_get_bytesTotal, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_currentFps,
+ swfdec_net_stream_get_currentFps, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_decodedFrames,
+ swfdec_net_stream_get_decodedFrames, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_liveDelay,
+ swfdec_net_stream_get_liveDelay, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_time,
+ swfdec_net_stream_get_time, NULL);
+ swfdec_as_object_add_native_variable (object, SWFDEC_AS_STR_videocodec,
+ swfdec_net_stream_get_videocodec, NULL);
+}
+
SWFDEC_AS_NATIVE (2101, 200, swfdec_net_stream_construct)
void
swfdec_net_stream_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
@@ -284,6 +382,8 @@ swfdec_net_stream_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
SWFDEC_AS_CHECK (0, NULL, "oo", &o, &oconn);
+ swfdec_net_stream_install_properties (o);
+
if (!cx->frame->next || !cx->frame->next->construct)
return;
if (!SWFDEC_IS_RTMP_CONNECTION (oconn->relay))
@@ -298,6 +398,7 @@ swfdec_net_stream_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
stream->conn = conn;
stream->rpc = swfdec_rtmp_rpc_new (conn, SWFDEC_AS_RELAY (stream));
stream->video = swfdec_net_stream_video_new (SWFDEC_PLAYER (cx));
+ g_object_ref (stream->video);
g_signal_connect (stream->video, "notify::playing",
G_CALLBACK (swfdec_net_stream_video_buffer_status), stream);
swfdec_as_context_get_time (cx, &stream->rpc->last_send);