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 /gst/rtp/gstrtpmp4vpay.c | |
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.
Diffstat (limited to 'gst/rtp/gstrtpmp4vpay.c')
-rw-r--r-- | gst/rtp/gstrtpmp4vpay.c | 13 |
1 files changed, 9 insertions, 4 deletions
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; } |