Add connection speed property to libmms. Fixes #464678.

Original commit message from CVS:
Patch by: Josep Torre Valles <josep@fluendo.com>
* docs/plugins/gst-plugins-bad-plugins.args:
* ext/libmms/gstmms.c: (gst_mms_class_init), (gst_mms_init),
(gst_mms_start), (gst_mms_set_property), (gst_mms_get_property):
* ext/libmms/gstmms.h:
Add connection speed property to libmms. Fixes #464678.
This commit is contained in:
Josep Torre Valles 2007-08-08 15:15:56 +00:00 committed by Wim Taymans
parent 966bbca4bc
commit 47b3e2452d
4 changed files with 53 additions and 5 deletions

View file

@ -1,3 +1,13 @@
2007-08-08 Wim Taymans <wim.taymans@gmail.com>
Patch by: Josep Torre Valles <josep@fluendo.com>
* docs/plugins/gst-plugins-bad-plugins.args:
* ext/libmms/gstmms.c: (gst_mms_class_init), (gst_mms_init),
(gst_mms_start), (gst_mms_set_property), (gst_mms_get_property):
* ext/libmms/gstmms.h:
Add connection speed property to libmms. Fixes #464678.
2007-08-07 Wim Taymans <wim.taymans@gmail.com>
* gst/real/gstrealvideodec.c: (gst_real_video_dec_chain),

View file

@ -1038,6 +1038,16 @@
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstMMS::connection-speed</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Connection Speed</NICK>
<BLURB>Network connection speed in kbps (0 = unknown).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstFaac::bitrate</NAME>
<TYPE>gint</TYPE>

View file

@ -27,10 +27,13 @@
#include <string.h>
#include "gstmms.h"
#define DEFAULT_CONNECTION_SPEED 0
enum
{
ARG_0,
ARG_LOCATION
ARG_LOCATION,
ARG_CONNECTION_SPEED
};
@ -113,6 +116,12 @@ gst_mms_class_init (GstMMSClass * klass)
"Host URL to connect to. Accepted are mms://, mmsu://, mmst:// URL types",
NULL, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_CONNECTION_SPEED,
g_param_spec_uint ("connection-speed", "Connection Speed",
"Network connection speed in kbps (0 = unknown)",
0, G_MAXINT / 1000, DEFAULT_CONNECTION_SPEED, G_PARAM_READWRITE));
/* Note: connection-speed is intentionaly limited to G_MAXINT as libmms use int for it */
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_mms_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_mms_stop);
@ -136,6 +145,7 @@ gst_mms_init (GstMMS * mmssrc, GstMMSClass * g_class)
mmssrc->uri_name = NULL;
mmssrc->connection = NULL;
mmssrc->connection_h = NULL;
mmssrc->connection_speed = DEFAULT_CONNECTION_SPEED;
GST_BASE_SRC (mmssrc)->blocksize = 2048;
}
@ -279,20 +289,30 @@ static gboolean
gst_mms_start (GstBaseSrc * bsrc)
{
GstMMS *mms;
guint bandwidth_avail;
mms = GST_MMS (bsrc);
if (!mms->uri_name || *mms->uri_name == '\0')
goto no_uri;
if (mms->connection_speed)
bandwidth_avail = mms->connection_speed;
else
bandwidth_avail = G_MAXINT;
/* FIXME: pass some sane arguments here */
GST_DEBUG_OBJECT (mms, "Trying mms_connect (%s)", mms->uri_name);
mms->connection = mms_connect (NULL, NULL, mms->uri_name, 128 * 1024);
GST_DEBUG_OBJECT (mms,
"Trying mms_connect (%s) with bandwidth constraint of %d bps",
mms->uri_name, bandwidth_avail);
mms->connection = mms_connect (NULL, NULL, mms->uri_name, bandwidth_avail);
if (mms->connection)
goto success;
GST_DEBUG_OBJECT (mms, "Trying mmsh_connect (%s)", mms->uri_name);
mms->connection_h = mmsh_connect (NULL, NULL, mms->uri_name, 128 * 1024);
GST_DEBUG_OBJECT (mms,
"Trying mmsh_connect (%s) with bandwidth constraint of %d bps",
mms->uri_name, bandwidth_avail);
mms->connection_h = mmsh_connect (NULL, NULL, mms->uri_name, bandwidth_avail);
if (!mms->connection_h)
goto no_connect;
@ -353,6 +373,9 @@ gst_mms_set_property (GObject * object, guint prop_id,
}
mmssrc->uri_name = g_value_dup_string (value);
break;
case ARG_CONNECTION_SPEED:
mmssrc->connection_speed = g_value_get_uint (value) * 1000;
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -374,6 +397,9 @@ gst_mms_get_property (GObject * object, guint prop_id,
if (mmssrc->uri_name)
g_value_set_string (value, mmssrc->uri_name);
break;
case ARG_CONNECTION_SPEED:
g_value_set_uint (value, mmssrc->connection_speed / 1000);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;

View file

@ -32,6 +32,8 @@ struct _GstMMS
GstPushSrc parent;
gchar *uri_name;
guint connection_speed;
mms_t *connection;
mmsh_t *connection_h;
};