From a6d6d948c322258ae8e2b4be91d8b8a6d02c1f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Yhuel?= <fyhuel@viotech.net> Date: Wed, 1 Feb 2012 13:04:48 +0100 Subject: [PATCH] HLS: clean Read function If caller wants to skip data, there is no point to allocate a buffer and put data in it. We just have to update the stream position. Signed-off-by: Jean-Paul Saman <jpsaman@videolan.org> (cherry picked from commit 6fe18b3e023d1c58571d982cc41b43363c45cfae) Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> --- modules/stream_filter/httplive.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c index ebea61da2b..c03061b6aa 100644 --- a/modules/stream_filter/httplive.c +++ b/modules/stream_filter/httplive.c @@ -2193,6 +2193,7 @@ static int segment_RestorePos( segment_t *segment ) return VLC_SUCCESS; } +/* p_read might be NULL if caller wants to skip data */ static ssize_t hls_Read(stream_t *s, uint8_t *p_read, unsigned int i_read) { stream_sys_t *p_sys = s->p_sys; @@ -2240,7 +2241,8 @@ static ssize_t hls_Read(stream_t *s, uint8_t *p_read, unsigned int i_read) if (len > 0) { - memcpy(p_read + copied, segment->data->p_buffer, len); + if( p_read ) /* otherwise caller skips data */ + memcpy(p_read + copied, segment->data->p_buffer, len); segment->data->i_buffer -= len; segment->data->p_buffer += len; copied += len; @@ -2263,15 +2265,6 @@ static int Read(stream_t *s, void *buffer, unsigned int i_read) if (p_sys->b_error) return 0; - if (buffer == NULL) - { - /* caller skips data, get big enough buffer */ - msg_Warn(s, "buffer is NULL (allocate %d)", i_read); - buffer = calloc(1, i_read); - if (buffer == NULL) - return 0; /* NO MEMORY left*/ - } - length = hls_Read(s, (uint8_t*) buffer, i_read); if (length < 0) return 0; -- 2.25.4