summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2009-08-24 18:21:41 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2009-08-24 18:21:41 +0800
commita7a8457364a8f321d00123d96eece98461787eb7 (patch)
tree3836edc31e771758c95dfd742977cfa28dfb6b29 /src
parent4c2fa88d99b1f0815b3b5338ab70579dcda15b3c (diff)
ppssrc: add properties for vip_flag & valid_code.
Diffstat (limited to 'src')
-rw-r--r--src/gstppssrc.c32
-rw-r--r--src/gstppssrc.h4
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. */