gst-libs/gst/rtp/gstbasertppayload.*: Added property to configure sequence number offsets.

Original commit message from CVS:
* gst-libs/gst/rtp/gstbasertppayload.c:
(gst_basertppayload_class_init), (gst_basertppayload_init),
(gst_basertppayload_setcaps), (gst_basertppayload_chain),
(gst_basertppayload_set_options), (gst_basertppayload_set_outcaps),
(gst_basertppayload_push), (gst_basertppayload_set_property),
(gst_basertppayload_get_property),
(gst_basertppayload_change_state):
* gst-libs/gst/rtp/gstbasertppayload.h:
Added property to configure sequence number offsets.
This commit is contained in:
Wim Taymans 2005-09-20 13:34:02 +00:00
parent 25e6dc6013
commit 597ace35b5
3 changed files with 39 additions and 9 deletions

View file

@ -1,3 +1,15 @@
2005-09-20 Wim Taymans <wim@fluendo.com>
* gst-libs/gst/rtp/gstbasertppayload.c:
(gst_basertppayload_class_init), (gst_basertppayload_init),
(gst_basertppayload_setcaps), (gst_basertppayload_chain),
(gst_basertppayload_set_options), (gst_basertppayload_set_outcaps),
(gst_basertppayload_push), (gst_basertppayload_set_property),
(gst_basertppayload_get_property),
(gst_basertppayload_change_state):
* gst-libs/gst/rtp/gstbasertppayload.h:
Added property to configure sequence number offsets.
2005-09-20 Wim Taymans <wim@fluendo.com> 2005-09-20 Wim Taymans <wim@fluendo.com>
* gst-libs/gst/rtp/gstbasertppayload.c: * gst-libs/gst/rtp/gstbasertppayload.c:

View file

@ -36,6 +36,7 @@ enum
#define DEFAULT_PT 96 #define DEFAULT_PT 96
#define DEFAULT_SSRC 0 #define DEFAULT_SSRC 0
#define DEFAULT_TIMESTAMP_OFFSET -1 #define DEFAULT_TIMESTAMP_OFFSET -1
#define DEFAULT_SEQNUM_OFFSET -1
enum enum
{ {
@ -44,6 +45,7 @@ enum
PROP_PT, PROP_PT,
PROP_SSRC, PROP_SSRC,
PROP_TIMESTAMP_OFFSET, PROP_TIMESTAMP_OFFSET,
PROP_SEQNUM_OFFSET,
PROP_TIMESTAMP, PROP_TIMESTAMP,
PROP_SEQNUM PROP_SEQNUM
}; };
@ -131,14 +133,19 @@ gst_basertppayload_class_init (GstBaseRTPPayloadClass * klass)
"Timestamp Offset", "Timestamp Offset",
"Offset to add to all outgoing timestamps (-1 = random)", -1, "Offset to add to all outgoing timestamps (-1 = random)", -1,
G_MAXINT, DEFAULT_TIMESTAMP_OFFSET, G_PARAM_READWRITE)); G_MAXINT, DEFAULT_TIMESTAMP_OFFSET, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM_OFFSET,
g_param_spec_int ("seqnum-offset", "Sequence number Offset",
"Offset to add to all outgoing seqnum (-1 = random)", -1, G_MAXINT,
DEFAULT_SEQNUM_OFFSET, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TIMESTAMP, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TIMESTAMP,
g_param_spec_uint ("timestamp", "Timestamp", g_param_spec_uint ("timestamp", "Timestamp",
"The RTP timestamp of the last processed packet", 0, G_MAXUINT, 0, "The RTP timestamp of the last processed packet",
G_PARAM_READABLE)); 0, G_MAXUINT, 0, G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM,
g_param_spec_uint ("seqnum", "Sequence number", g_param_spec_uint ("seqnum", "Sequence number",
"The RTP sequence number of the last processed packet", 0, G_MAXUINT, "The RTP sequence number of the last processed packet",
0, G_PARAM_READABLE)); 0, G_MAXUINT, 0, G_PARAM_READABLE));
gstelement_class->change_state = gst_basertppayload_change_state; gstelement_class->change_state = gst_basertppayload_change_state;
@ -175,11 +182,9 @@ gst_basertppayload_init (GstBaseRTPPayload * basertppayload, gpointer g_class)
basertppayload->mtu = DEFAULT_MTU; basertppayload->mtu = DEFAULT_MTU;
basertppayload->pt = DEFAULT_PT; basertppayload->pt = DEFAULT_PT;
basertppayload->seqnum = basertppayload->seqnum_offset = DEFAULT_SEQNUM_OFFSET;
g_rand_int_range (basertppayload->seq_rand, 0, G_MAXUINT16);
basertppayload->ssrc = DEFAULT_SSRC; basertppayload->ssrc = DEFAULT_SSRC;
basertppayload->ts_offset = DEFAULT_TIMESTAMP_OFFSET; basertppayload->ts_offset = DEFAULT_TIMESTAMP_OFFSET;
basertppayload->ts_base = g_rand_int (basertppayload->ts_rand);
basertppayload->clock_rate = 0; basertppayload->clock_rate = 0;
} }
@ -359,6 +364,9 @@ gst_basertppayload_set_property (GObject * object, guint prop_id,
case PROP_TIMESTAMP_OFFSET: case PROP_TIMESTAMP_OFFSET:
basertppayload->ts_offset = g_value_get_int (value); basertppayload->ts_offset = g_value_get_int (value);
break; break;
case PROP_SEQNUM_OFFSET:
basertppayload->seqnum_offset = g_value_get_int (value);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -386,6 +394,9 @@ gst_basertppayload_get_property (GObject * object, guint prop_id,
case PROP_TIMESTAMP_OFFSET: case PROP_TIMESTAMP_OFFSET:
g_value_set_int (value, basertppayload->ts_offset); g_value_set_int (value, basertppayload->ts_offset);
break; break;
case PROP_SEQNUM_OFFSET:
g_value_set_int (value, basertppayload->seqnum_offset);
break;
case PROP_TIMESTAMP: case PROP_TIMESTAMP:
g_value_set_uint (value, basertppayload->timestamp); g_value_set_uint (value, basertppayload->timestamp);
break; break;
@ -411,13 +422,19 @@ gst_basertppayload_change_state (GstElement * element,
case GST_STATE_CHANGE_NULL_TO_READY: case GST_STATE_CHANGE_NULL_TO_READY:
break; break;
case GST_STATE_CHANGE_READY_TO_PAUSED: case GST_STATE_CHANGE_READY_TO_PAUSED:
basertppayload->seqnum_base =
g_rand_int_range (basertppayload->seq_rand, 0, G_MAXUINT16); if (basertppayload->seqnum_offset == -1)
basertppayload->seqnum_base =
g_rand_int_range (basertppayload->seq_rand, 0, G_MAXUINT16);
else
basertppayload->seqnum_base = basertppayload->seqnum_offset;
basertppayload->seqnum = basertppayload->seqnum_base; basertppayload->seqnum = basertppayload->seqnum_base;
if (basertppayload->ssrc == 0) if (basertppayload->ssrc == 0)
basertppayload->current_ssrc = g_rand_int (basertppayload->ssrc_rand); basertppayload->current_ssrc = g_rand_int (basertppayload->ssrc_rand);
else else
basertppayload->current_ssrc = basertppayload->ssrc; basertppayload->current_ssrc = basertppayload->ssrc;
if (basertppayload->ts_offset == -1) if (basertppayload->ts_offset == -1)
basertppayload->ts_base = g_rand_int (basertppayload->ts_rand); basertppayload->ts_base = g_rand_int (basertppayload->ts_rand);
else else

View file

@ -68,6 +68,7 @@ struct _GstBaseRTPPayload
gint32 ts_offset; gint32 ts_offset;
guint32 timestamp; guint32 timestamp;
gint16 seqnum_offset;
guint16 seqnum; guint16 seqnum;
guint pt; guint pt;
guint ssrc; guint ssrc;