gst_adapter_clear (hlsdemux->pending_encrypted_data);
gst_buffer_replace (&hlsdemux->pending_decrypted_buffer, NULL);
gst_buffer_replace (&hlsdemux->pending_typefind_buffer, NULL);
+ hlsdemux->current_offset = -1;
}
static gboolean
g_assert (hlsdemux->pending_typefind_buffer == NULL);
- if (buffer)
+ if (buffer) {
+ buffer = gst_buffer_make_writable (buffer);
+ GST_BUFFER_OFFSET (buffer) = hlsdemux->current_offset;
+ hlsdemux->current_offset += gst_buffer_get_size (buffer);
+ GST_BUFFER_OFFSET_END (buffer) = hlsdemux->current_offset;
return gst_adaptive_demux_stream_push_buffer (stream, buffer);
+ }
return GST_FLOW_OK;
}
{
GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+ if (hlsdemux->current_offset == -1)
+ hlsdemux->current_offset =
+ GST_BUFFER_OFFSET_IS_VALID (buffer) ? GST_BUFFER_OFFSET (buffer) : 0;
+
/* Is it encrypted? */
if (hlsdemux->current_key) {
GError *err = NULL;
GstAdapter *pending_encrypted_data; /* for chunking data into 16 byte multiples for decryption */
GstBuffer *pending_decrypted_buffer; /* last decrypted buffer for pkcs7 unpadding.
We only know that it is the last at EOS */
- GstBuffer *pending_typefind_buffer; /* for collecting data until typefind succeeds */
+ GstBuffer *pending_typefind_buffer; /* for collecting data until typefind succeeds */
+ guint64 current_offset; /* offset we're currently at */
gboolean reset_pts;
};