[vlc-devel] [PATCH] HLS: hls_Download: don't put stream_Read in a loop
Jean-Paul Saman
jpsaman at videolan.org
Fri Mar 30 10:24:25 CEST 2012
On Thu, Mar 29, 2012 at 2:34 PM, Frédéric Yhuel <fyhuel at viotech.net> wrote:
> Maybe I missed something, but it seems to me that either that patch must
> be applied, either "stream_Read" documentation must be fixed.
May I ask why this is necessary? I recall that some HLS servers report
0 as segment size.
Kind regards,
Jean-Paul Saman.
> ---
> modules/stream_filter/httplive.c | 32 +++++++-------------------------
> 1 files changed, 7 insertions(+), 25 deletions(-)
>
> diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c
> index a8dfc4b..6a711be 100644
> --- a/modules/stream_filter/httplive.c
> +++ b/modules/stream_filter/httplive.c
> @@ -1713,32 +1713,14 @@ static int hls_Download(stream_t *s, segment_t *segment)
>
> assert(segment->data->i_buffer == segment->size);
>
> - ssize_t length = 0, curlen = 0;
> - uint64_t size;
> - do
> + int read = stream_Read(p_ts, segment->data->p_buffer, segment->size);
> + if (read < (int)segment->size)
> {
> - size = stream_Size(p_ts);
> - if (size > segment->size)
> - {
> - msg_Dbg(s, "size changed %"PRIu64, segment->size);
> - block_t *p_block = block_Realloc(segment->data, 0, size);
> - if (p_block == NULL)
> - {
> - stream_Delete(p_ts);
> - block_Release(segment->data);
> - segment->data = NULL;
> - return VLC_ENOMEM;
> - }
> - segment->data = p_block;
> - segment->size = size;
> - assert(segment->data->i_buffer == segment->size);
> - p_block = NULL;
> - }
> - length = stream_Read(p_ts, segment->data->p_buffer + curlen, segment->size - curlen);
> - if (length <= 0)
> - break;
> - curlen += length;
> - } while (vlc_object_alive(s));
> + msg_Err(s, "hls_Download: I requested %"PRIu64" bytes, "\
> + "but I got only %i", segment->size, read);
> + segment->size = read;
> + segment->data->i_buffer = read;
> + }
>
> stream_Delete(p_ts);
> return VLC_SUCCESS;
> --
> 1.7.5.4
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list