diff options
| author | Wim Taymans <wim.taymans@gmail.com> | 2005-09-22 11:28:23 +0000 | 
|---|---|---|
| committer | Wim Taymans <wim.taymans@gmail.com> | 2005-09-22 11:28:23 +0000 | 
| commit | 4aac63130ad939751a44f827d11f8d0ed79e53ac (patch) | |
| tree | 6929d84909579ea238f99129c955cf6d5fa434d3 | |
| parent | 9a478bd315749b084561547ce31745fd02c25723 (diff) | |
gst/rtp/gstrtpmp4venc.c: Don't fragment packets with multiple frames.
Original commit message from CVS:
* gst/rtp/gstrtpmp4venc.c: (gst_rtpmp4venc_class_init),
(gst_rtpmp4venc_parse_data), (gst_rtpmp4venc_handle_buffer),
(gst_rtpmp4venc_set_property):
Don't fragment packets with multiple frames.
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | gst/rtp/gstrtpmp4venc.c | 13 | ||||
| -rw-r--r-- | gst/rtp/gstrtpmp4vpay.c | 13 | 
3 files changed, 25 insertions, 8 deletions
@@ -1,5 +1,12 @@  2005-09-22  Wim Taymans  <wim@fluendo.com> +	* gst/rtp/gstrtpmp4venc.c: (gst_rtpmp4venc_class_init), +	(gst_rtpmp4venc_parse_data), (gst_rtpmp4venc_handle_buffer), +	(gst_rtpmp4venc_set_property): +	Don't fragment packets with multiple frames. + +2005-09-22  Wim Taymans  <wim@fluendo.com> +  	* gst/rtp/TODO:  	* gst/rtp/gstrtpmp4vdec.c: (gst_rtpmp4vdec_setcaps):  	* gst/rtp/gstrtpmp4venc.c: (gst_rtpmp4venc_class_init), diff --git a/gst/rtp/gstrtpmp4venc.c b/gst/rtp/gstrtpmp4venc.c index 59603f8e..08d9b2d3 100644 --- a/gst/rtp/gstrtpmp4venc.c +++ b/gst/rtp/gstrtpmp4venc.c @@ -370,6 +370,7 @@ gst_rtpmp4venc_handle_buffer (GstBaseRTPPayload * basepayload,        /* strip off header */        subbuf = gst_buffer_create_sub (buffer, strip, size - strip); +      GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buffer);        gst_buffer_unref (buffer);        buffer = subbuf; @@ -381,20 +382,24 @@ gst_rtpmp4venc_handle_buffer (GstBaseRTPPayload * basepayload,    /* if we need to flush, do so now */    if (flush) {      ret = gst_rtpmp4venc_flush (rtpmp4venc); +    avail = 0; +    rtpmp4venc->first_ts = GST_BUFFER_TIMESTAMP (buffer);    } -  /* push new data */ -  gst_adapter_push (rtpmp4venc->adapter, buffer); -    avail = gst_adapter_available (rtpmp4venc->adapter);    /* get packet length of data and see if we exceeded MTU. */ -  packet_len = gst_rtpbuffer_calc_packet_len (avail, 0, 0); +  packet_len = gst_rtpbuffer_calc_packet_len (avail + size, 0, 0);    if (packet_len > GST_BASE_RTP_PAYLOAD_MTU (rtpmp4venc)) {      ret = gst_rtpmp4venc_flush (rtpmp4venc); +    avail = 0; +    rtpmp4venc->first_ts = GST_BUFFER_TIMESTAMP (buffer);    } +  /* push new data */ +  gst_adapter_push (rtpmp4venc->adapter, buffer); +    return ret;  } diff --git a/gst/rtp/gstrtpmp4vpay.c b/gst/rtp/gstrtpmp4vpay.c index 59603f8e..08d9b2d3 100644 --- a/gst/rtp/gstrtpmp4vpay.c +++ b/gst/rtp/gstrtpmp4vpay.c @@ -370,6 +370,7 @@ gst_rtpmp4venc_handle_buffer (GstBaseRTPPayload * basepayload,        /* strip off header */        subbuf = gst_buffer_create_sub (buffer, strip, size - strip); +      GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buffer);        gst_buffer_unref (buffer);        buffer = subbuf; @@ -381,20 +382,24 @@ gst_rtpmp4venc_handle_buffer (GstBaseRTPPayload * basepayload,    /* if we need to flush, do so now */    if (flush) {      ret = gst_rtpmp4venc_flush (rtpmp4venc); +    avail = 0; +    rtpmp4venc->first_ts = GST_BUFFER_TIMESTAMP (buffer);    } -  /* push new data */ -  gst_adapter_push (rtpmp4venc->adapter, buffer); -    avail = gst_adapter_available (rtpmp4venc->adapter);    /* get packet length of data and see if we exceeded MTU. */ -  packet_len = gst_rtpbuffer_calc_packet_len (avail, 0, 0); +  packet_len = gst_rtpbuffer_calc_packet_len (avail + size, 0, 0);    if (packet_len > GST_BASE_RTP_PAYLOAD_MTU (rtpmp4venc)) {      ret = gst_rtpmp4venc_flush (rtpmp4venc); +    avail = 0; +    rtpmp4venc->first_ts = GST_BUFFER_TIMESTAMP (buffer);    } +  /* push new data */ +  gst_adapter_push (rtpmp4venc->adapter, buffer); +    return ret;  }  | 
