port more plugins to 0.11

This commit is contained in:
Wim Taymans 2011-04-18 10:54:43 +02:00
parent 7555d0949f
commit 4aa6ca5578
6 changed files with 101 additions and 63 deletions

View file

@ -129,7 +129,7 @@ static void gst_audio_panorama_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
static gboolean gst_audio_panorama_get_unit_size (GstBaseTransform * base,
GstCaps * caps, guint * size);
GstCaps * caps, gsize * size);
static GstCaps *gst_audio_panorama_transform_caps (GstBaseTransform * base,
GstPadDirection direction, GstCaps * caps);
static gboolean gst_audio_panorama_set_caps (GstBaseTransform * base,
@ -315,7 +315,7 @@ gst_audio_panorama_get_property (GObject * object, guint prop_id,
static gboolean
gst_audio_panorama_get_unit_size (GstBaseTransform * base, GstCaps * caps,
guint * size)
gsize * size)
{
gint width, channels;
GstStructure *structure;

View file

@ -184,10 +184,13 @@ gst_rtp_gst_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
gint payload_len;
guint8 *payload;
guint CV;
GstRTPBuffer rtp = { NULL };
rtpgstdepay = GST_RTP_GST_DEPAY (depayload);
payload_len = gst_rtp_buffer_get_payload_len (buf);
gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
payload_len = gst_rtp_buffer_get_payload_len (&rtp);
if (payload_len <= 8)
goto empty_packet;
@ -197,7 +200,7 @@ gst_rtp_gst_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
gst_adapter_clear (rtpgstdepay->adapter);
}
payload = gst_rtp_buffer_get_payload (buf);
payload = gst_rtp_buffer_get_payload (&rtp);
/* strip off header
*
@ -214,10 +217,10 @@ gst_rtp_gst_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
*/
/* subbuffer skipping the 8 header bytes */
subbuf = gst_rtp_buffer_get_payload_subbuffer (buf, 8, -1);
subbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 8, -1);
gst_adapter_push (rtpgstdepay->adapter, subbuf);
if (gst_rtp_buffer_get_marker (buf)) {
if (gst_rtp_buffer_get_marker (&rtp)) {
guint avail;
GstCaps *outcaps;
@ -228,25 +231,30 @@ gst_rtp_gst_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
CV = (payload[0] >> 4) & 0x7;
if (payload[0] & 0x80) {
guint b, csize, size, offset;
guint b, csize, left, offset;
gsize size;
guint8 *data;
GstBuffer *subbuf;
/* C bit, we have inline caps */
data = GST_BUFFER_DATA (outbuf);
size = GST_BUFFER_SIZE (outbuf);
data = gst_buffer_map (outbuf, &size, NULL, GST_MAP_READ);
/* start reading the length, we need this to skip to the data later */
csize = offset = 0;
left = size;
do {
if (offset >= size)
if (offset >= left) {
gst_buffer_unmap (outbuf, data, size);
goto too_small;
}
b = data[offset++];
csize = (csize << 7) | (b & 0x7f);
} while (b & 0x80);
if (size < csize)
if (left < csize) {
gst_buffer_unmap (outbuf, data, size);
goto too_small;
}
/* parse and store in cache */
outcaps = gst_caps_from_string ((gchar *) & data[offset]);
@ -254,17 +262,19 @@ gst_rtp_gst_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
/* skip caps */
offset += csize;
size -= csize;
left -= csize;
GST_DEBUG_OBJECT (rtpgstdepay,
"inline caps %u, length %u, %" GST_PTR_FORMAT, CV, csize, outcaps);
/* create real data buffer when needed */
if (size)
subbuf = gst_buffer_create_sub (outbuf, offset, size);
subbuf =
gst_buffer_copy_region (outbuf, GST_BUFFER_COPY_ALL, offset, left);
else
subbuf = NULL;
gst_buffer_unmap (outbuf, data, size);
gst_buffer_unref (outbuf);
outbuf = subbuf;
}
@ -302,6 +312,7 @@ empty_packet:
{
GST_ELEMENT_WARNING (rtpgstdepay, STREAM, DECODE,
("Empty Payload."), (NULL));
gst_rtp_buffer_unmap (&rtp);
return NULL;
}
too_small:
@ -310,6 +321,7 @@ too_small:
("Buffer too small."), (NULL));
if (outbuf)
gst_buffer_unref (outbuf);
gst_rtp_buffer_unmap (&rtp);
return NULL;
}
missing_caps:
@ -318,6 +330,7 @@ missing_caps:
("Missing caps %u.", CV), (NULL));
if (outbuf)
gst_buffer_unref (outbuf);
gst_rtp_buffer_unmap (&rtp);
return NULL;
}
}

View file

@ -131,8 +131,8 @@ gst_rtp_gst_pay_handle_buffer (GstBaseRTPPayload * basepayload,
GstBuffer * buffer)
{
GstRtpGSTPay *rtpgstpay;
guint8 *data;
guint size;
guint8 *data, *ptr;
gsize size, left;
GstBuffer *outbuf;
GstFlowReturn ret;
GstClockTime timestamp;
@ -141,8 +141,7 @@ gst_rtp_gst_pay_handle_buffer (GstBaseRTPPayload * basepayload,
rtpgstpay = GST_RTP_GST_PAY (basepayload);
size = GST_BUFFER_SIZE (buffer);
data = GST_BUFFER_DATA (buffer);
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
timestamp = GST_BUFFER_TIMESTAMP (buffer);
ret = GST_FLOW_OK;
@ -168,15 +167,18 @@ gst_rtp_gst_pay_handle_buffer (GstBaseRTPPayload * basepayload,
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
frag_offset = 0;
ptr = data;
left = size;
while (size > 0) {
while (left > 0) {
guint towrite;
guint8 *payload;
guint payload_len;
guint packet_len;
GstRTPBuffer rtp = { NULL };
/* this will be the total lenght of the packet */
packet_len = gst_rtp_buffer_calc_packet_len (8 + size, 0, 0);
packet_len = gst_rtp_buffer_calc_packet_len (8 + left, 0, 0);
/* fill one MTU or all available bytes */
towrite = MIN (packet_len, GST_BASE_RTP_PAYLOAD_MTU (rtpgstpay));
@ -186,7 +188,9 @@ gst_rtp_gst_pay_handle_buffer (GstBaseRTPPayload * basepayload,
/* create buffer to hold the payload */
outbuf = gst_rtp_buffer_new_allocate (payload_len, 0, 0);
payload = gst_rtp_buffer_get_payload (outbuf);
gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
payload = gst_rtp_buffer_get_payload (&rtp);
payload[0] = flags;
payload[1] = payload[2] = payload[3] = 0;
@ -198,19 +202,22 @@ gst_rtp_gst_pay_handle_buffer (GstBaseRTPPayload * basepayload,
payload += 8;
payload_len -= 8;
memcpy (payload, data, payload_len);
memcpy (payload, ptr, payload_len);
data += payload_len;
size -= payload_len;
ptr += payload_len;
left -= payload_len;
frag_offset += payload_len;
if (size == 0)
gst_rtp_buffer_set_marker (outbuf, TRUE);
if (left == 0)
gst_rtp_buffer_set_marker (&rtp, TRUE);
gst_rtp_buffer_unmap (&rtp);
GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
ret = gst_basertppayload_push (basepayload, outbuf);
}
gst_buffer_unmap (buffer, data, size);
return ret;
}

View file

@ -179,14 +179,19 @@ gst_rtp_ilbc_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
{
GstBuffer *outbuf;
gboolean marker;
GstRTPBuffer rtp = { NULL };
marker = gst_rtp_buffer_get_marker (buf);
gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
marker = gst_rtp_buffer_get_marker (&rtp);
GST_DEBUG ("process : got %d bytes, mark %d ts %u seqn %d",
GST_BUFFER_SIZE (buf), marker,
gst_rtp_buffer_get_timestamp (buf), gst_rtp_buffer_get_seq (buf));
gst_buffer_get_size (buf), marker,
gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
outbuf = gst_rtp_buffer_get_payload_buffer (buf);
outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
gst_rtp_buffer_unmap (&rtp);
if (marker) {
/* mark start of talkspurt with DISCONT */

View file

@ -122,52 +122,60 @@ gst_rtp_mpa_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
{
GstRtpMPADepay *rtpmpadepay;
GstBuffer *outbuf;
GstRTPBuffer rtp = { NULL };
gint payload_len;
#if 0
guint8 *payload;
guint16 frag_offset;
#endif
gboolean marker;
rtpmpadepay = GST_RTP_MPA_DEPAY (depayload);
{
gint payload_len;
gboolean marker;
gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
payload_len = gst_rtp_buffer_get_payload_len (buf);
payload_len = gst_rtp_buffer_get_payload_len (&rtp);
if (payload_len <= 4)
goto empty_packet;
if (payload_len <= 4)
goto empty_packet;
/* strip off header
*
* 0 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | MBZ | Frag_offset |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
/* frag_offset = (payload[2] << 8) | payload[3]; */
#if 0
payload = gst_rtp_buffer_get_payload (&rtp);
/* strip off header
*
* 0 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | MBZ | Frag_offset |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
frag_offset = (payload[2] << 8) | payload[3];
#endif
/* subbuffer skipping the 4 header bytes */
outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, 4, -1);
marker = gst_rtp_buffer_get_marker (buf);
/* subbuffer skipping the 4 header bytes */
outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 4, -1);
marker = gst_rtp_buffer_get_marker (&rtp);
if (marker) {
/* mark start of talkspurt with discont */
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
}
GST_DEBUG_OBJECT (rtpmpadepay,
"gst_rtp_mpa_depay_chain: pushing buffer of size %d",
GST_BUFFER_SIZE (outbuf));
/* FIXME, we can push half mpeg frames when they are split over multiple
* RTP packets */
return outbuf;
if (marker) {
/* mark start of talkspurt with discont */
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
}
GST_DEBUG_OBJECT (rtpmpadepay,
"gst_rtp_mpa_depay_chain: pushing buffer of size %d",
gst_buffer_get_size (outbuf));
return NULL;
gst_rtp_buffer_unmap (&rtp);
/* FIXME, we can push half mpeg frames when they are split over multiple
* RTP packets */
return outbuf;
/* ERRORS */
empty_packet:
{
GST_ELEMENT_WARNING (rtpmpadepay, STREAM, DECODE,
("Empty Payload."), (NULL));
gst_rtp_buffer_unmap (&rtp);
return NULL;
}
}

View file

@ -192,6 +192,7 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay)
guint8 *payload;
guint payload_len;
guint packet_len;
GstRTPBuffer rtp = { NULL };
/* this will be the total length of the packet */
packet_len = gst_rtp_buffer_calc_packet_len (4 + avail, 0, 0);
@ -205,9 +206,11 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay)
/* create buffer to hold the payload */
outbuf = gst_rtp_buffer_new_allocate (payload_len, 0, 0);
gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
payload_len -= 4;
gst_rtp_buffer_set_payload_type (outbuf, GST_RTP_PAYLOAD_MPA);
gst_rtp_buffer_set_payload_type (&rtp, GST_RTP_PAYLOAD_MPA);
/*
* 0 1 2 3
@ -216,7 +219,7 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay)
* | MBZ | Frag_offset |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
payload = gst_rtp_buffer_get_payload (outbuf);
payload = gst_rtp_buffer_get_payload (&rtp);
payload[0] = 0;
payload[1] = 0;
payload[2] = frag_offset >> 8;
@ -229,7 +232,9 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay)
frag_offset += payload_len;
if (avail == 0)
gst_rtp_buffer_set_marker (outbuf, TRUE);
gst_rtp_buffer_set_marker (&rtp, TRUE);
gst_rtp_buffer_unmap (&rtp);
GST_BUFFER_TIMESTAMP (outbuf) = rtpmpapay->first_ts;
GST_BUFFER_DURATION (outbuf) = rtpmpapay->duration;
@ -252,7 +257,7 @@ gst_rtp_mpa_pay_handle_buffer (GstBaseRTPPayload * basepayload,
rtpmpapay = GST_RTP_MPA_PAY (basepayload);
size = GST_BUFFER_SIZE (buffer);
size = gst_buffer_get_size (buffer);
duration = GST_BUFFER_DURATION (buffer);
timestamp = GST_BUFFER_TIMESTAMP (buffer);