ext/soup/gstsouphttpsrc.c: Report the size of the stream as the total size instead of the remaining Content-Length, w...

Original commit message from CVS:
Patch by: Wouter Cloetens <wouter at mind dot be>
* ext/soup/gstsouphttpsrc.c: (soup_got_headers):
Report the size of the stream as the total size instead of
the remaining Content-Length, which is wrong after a seek.
This commit is contained in:
Wouter Cloetens 2008-01-20 05:07:52 +00:00 committed by Sebastian Dröge
parent 252d4044bf
commit e1e93d1510
2 changed files with 21 additions and 9 deletions

View file

@ -1,3 +1,11 @@
2008-01-20 Sebastian Dröge <slomo@circular-chaos.org>
Patch by: Wouter Cloetens <wouter at mind dot be>
* ext/soup/gstsouphttpsrc.c: (soup_got_headers):
Report the size of the stream as the total size instead of
the remaining Content-Length, which is wrong after a seek.
2008-01-19 Sebastian Dröge <slomo@circular-chaos.org>
* gst/rawparse/gstrawparse.c: (gst_raw_parse_push_buffer),

View file

@ -559,22 +559,26 @@ soup_got_headers (SoupMessage * msg, GstSouphttpSrc * src)
const char *value;
GstTagList *tag_list;
GstBaseSrc *basesrc;
guint64 newsize;
GST_DEBUG_OBJECT (src, "got headers");
/* Parse Content-Length. */
value = soup_message_get_header (msg->response_headers, "Content-Length");
if (value != NULL) {
src->content_size = g_ascii_strtoull (value, NULL, 10);
src->have_size = TRUE;
GST_DEBUG_OBJECT (src, "size = %llu", src->content_size);
newsize = src->request_position + g_ascii_strtoull (value, NULL, 10);
if (!src->have_size || (src->content_size != newsize)) {
src->content_size = newsize;
src->have_size = TRUE;
GST_DEBUG_OBJECT (src, "size = %llu", src->content_size);
basesrc = GST_BASE_SRC_CAST (src);
gst_segment_set_duration (&basesrc->segment, GST_FORMAT_BYTES,
src->content_size);
gst_element_post_message (GST_ELEMENT (src),
gst_message_new_duration (GST_OBJECT (src), GST_FORMAT_BYTES,
src->content_size));
basesrc = GST_BASE_SRC_CAST (src);
gst_segment_set_duration (&basesrc->segment, GST_FORMAT_BYTES,
src->content_size);
gst_element_post_message (GST_ELEMENT (src),
gst_message_new_duration (GST_OBJECT (src), GST_FORMAT_BYTES,
src->content_size));
}
}
/* Icecast stuff */