summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--gst/rtp/gstrtpmp4venc.c13
-rw-r--r--gst/rtp/gstrtpmp4vpay.c13
3 files changed, 25 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 704ddb19..f43cc337 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}