- outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp,
- rtpmp2tdepay->skip_first_bytes, -1);
+ payload_len -= rtpmp2tdepay->skip_first_bytes;
+
+ /* RFC 2250
+ *
+ * 2. Encapsulation of MPEG System and Transport Streams
+ *
+ * For MPEG2 Transport Streams the RTP payload will contain an integral
+ * number of MPEG transport packets.
+ */
+ leftover = payload_len % 188;
+ if (G_UNLIKELY (leftover)) {
+ GST_WARNING ("We don't have an integral number of buffers (leftover: %d)",
+ leftover);
+
+ payload_len -= leftover;
+ }
+
+ outbuf =
+ gst_rtp_buffer_get_payload_subbuffer (rtp,
+ rtpmp2tdepay->skip_first_bytes, payload_len);