diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2009-08-24 18:21:41 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2009-08-24 18:21:41 +0800 |
commit | a7a8457364a8f321d00123d96eece98461787eb7 (patch) | |
tree | 3836edc31e771758c95dfd742977cfa28dfb6b29 /src | |
parent | 4c2fa88d99b1f0815b3b5338ab70579dcda15b3c (diff) |
ppssrc: add properties for vip_flag & valid_code.
Diffstat (limited to 'src')
-rw-r--r-- | src/gstppssrc.c | 32 | ||||
-rw-r--r-- | src/gstppssrc.h | 4 |
2 files changed, 33 insertions, 3 deletions
diff --git a/src/gstppssrc.c b/src/gstppssrc.c index 77056ce..e4a046f 100644 --- a/src/gstppssrc.c +++ b/src/gstppssrc.c @@ -55,6 +55,8 @@ enum PROP_OEM, PROP_TERMINAL_TYPE, PROP_DEVICE_ID, + PROP_VALID_CODE, + PROP_VIP_FLAG }; #define DEFAULT_OEM "ppstream" @@ -155,6 +157,16 @@ gst_pps_src_class_init (GstPpsSrcClass * klass) g_param_spec_string ("device-id", "device-id", "The identify of terminal device", DEFAULT_DEVICE_ID, G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, + PROP_VALID_CODE, + g_param_spec_string ("valid-code", "Valid Code", + "The valid code", "", + G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, + PROP_VIP_FLAG, + g_param_spec_uint ("vip-flag", "VIP flag", + "VIP flag", 0, G_MAXUINT32, 0, + G_PARAM_READWRITE)); gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_pps_src_start); gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_pps_src_stop); @@ -179,6 +191,8 @@ gst_pps_src_init (GstPpsSrc * src, GstPpsSrcClass * g_class) src->oem = g_strdup (DEFAULT_OEM); src->terminal_type = g_strdup (DEFAULT_TERMINAL_TYPE); src->device_id = g_strdup (DEFAULT_DEVICE_ID); + src->valid_code = g_strdup (""); + src->vip_flag = 0; src->interrupted = FALSE; src->retry = FALSE; src->have_size = FALSE; @@ -244,6 +258,14 @@ gst_pps_src_set_property (GObject * object, guint prop_id, g_free (src->device_id); src->device_id = g_value_dup_string (value); break; + case PROP_VALID_CODE: + if (src->valid_code) + g_free (src->valid_code); + src->valid_code = g_value_dup_string (value); + break; + case PROP_VIP_FLAG: + src->vip_flag = g_value_get_uint (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -271,6 +293,12 @@ gst_pps_src_get_property (GObject * object, guint prop_id, case PROP_DEVICE_ID: g_value_set_string (value, src->device_id); break; + case PROP_VALID_CODE: + g_value_set_string (value, src->valid_code); + break; + case PROP_VIP_FLAG: + g_value_set_uint (value, src->vip_flag); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -464,7 +492,7 @@ gst_pps_src_start (GstBaseSrc * bsrc) } GST_DEBUG_OBJECT (src, "add item: (\"%s\")", src->location); - src->fd = ret = ppsvod_add_item (src->location, 0); + src->fd = ret = ppsvod_add_item (src->location, src->vip_flag); if (ret < 0) { GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), ("failed to add specified url")); @@ -474,7 +502,7 @@ gst_pps_src_start (GstBaseSrc * bsrc) } GST_DEBUG_OBJECT (src, "play item: %d", src->fd); - ret = ppsvod_play_item (src->fd, NULL); + ret = ppsvod_play_item (src->fd, strlen(src->valid_code) ? src->valid_code : NULL); if (ret < 0) { GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), ("failed to play specified url")); diff --git a/src/gstppssrc.h b/src/gstppssrc.h index 5e9095c..2a6b91c 100644 --- a/src/gstppssrc.h +++ b/src/gstppssrc.h @@ -45,7 +45,9 @@ struct _GstPpsSrc { gchar *oem; /* OEM. */ gchar *terminal_type; /* Terminal Type. */ gchar *device_id; /* Device Id */ - int fd; + gchar *valid_code; /* Valid code */ + gint vip_flag; /* VIP flag */ + gint fd; GstFlowReturn ret; /* Return code from callback. */ GstBuffer **outbuf; /* Return buffer allocated by callback. */ |