[vlc-commits] stream: put stream_Seek() out of line
Rémi Denis-Courmont
git at videolan.org
Wed Sep 2 21:54:12 CEST 2015
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Sep 1 23:26:58 2015 +0300| [994a2555f0c2fe15396d28f53261527d9ad20be5] | committer: Rémi Denis-Courmont
stream: put stream_Seek() out of line
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=994a2555f0c2fe15396d28f53261527d9ad20be5
---
include/vlc_stream.h | 14 ++++++++------
src/input/stream.c | 43 +++++++++++++++++++++++--------------------
src/libvlccore.sym | 1 +
3 files changed, 32 insertions(+), 26 deletions(-)
diff --git a/include/vlc_stream.h b/include/vlc_stream.h
index ba642ff..597b29c 100644
--- a/include/vlc_stream.h
+++ b/include/vlc_stream.h
@@ -82,7 +82,6 @@ enum stream_query_e
STREAM_CAN_PAUSE, /**< arg1= bool * res=cannot fail*/
STREAM_CAN_CONTROL_PACE, /**< arg1= bool * res=cannot fail*/
/* */
- STREAM_SET_POSITION, /**< arg1= uint64_t res=can fail */
STREAM_GET_SIZE=6, /**< arg1= uint64_t * res=can fail */
STREAM_IS_DIRECTORY, /**< arg1= bool *, arg2= bool *, arg3=bool *, res=cannot fail*/
@@ -148,6 +147,14 @@ VLC_API ssize_t stream_Peek(stream_t *, const uint8_t **, size_t) VLC_USED;
*/
VLC_API uint64_t stream_Tell(const stream_t *) VLC_USED;
+/**
+ * Sets the current stream position.
+ *
+ * @param offset byte offset from the beginning of the stream
+ * @return zero on success, a negative value on error
+ */
+VLC_API int stream_Seek(stream_t *, uint64_t offset) VLC_USED;
+
VLC_API int stream_vaControl( stream_t *s, int i_query, va_list args );
VLC_API void stream_Delete( stream_t *s );
VLC_API int stream_Control( stream_t *s, int i_query, ... );
@@ -174,11 +181,6 @@ static inline int64_t stream_Size( stream_t *s )
return i_pos;
}
-static inline int stream_Seek( stream_t *s, uint64_t i_pos )
-{
- return stream_Control( s, STREAM_SET_POSITION, i_pos );
-}
-
/**
* Get the Content-Type of a stream, or NULL if unknown.
* Result must be free()'d.
diff --git a/src/input/stream.c b/src/input/stream.c
index c098a88..0c412c8 100644
--- a/src/input/stream.c
+++ b/src/input/stream.c
@@ -445,6 +445,29 @@ uint64_t stream_Tell(const stream_t *s)
return pos;
}
+int stream_Seek(stream_t *s, uint64_t offset)
+{
+ stream_priv_t *priv = (stream_priv_t *)s;
+
+ if (s->pf_seek == NULL)
+ return VLC_EGENERIC;
+
+ int ret = s->pf_seek(s, offset);
+ if (ret != VLC_SUCCESS)
+ return ret;
+
+ priv->offset = offset;
+
+ block_t *peek = priv->peek;
+ if (peek != NULL)
+ {
+ priv->peek = NULL;
+ block_Release(peek);
+ }
+
+ return ret;
+}
+
static int stream_ControlInternal(stream_t *s, int cmd, ...)
{
va_list ap;
@@ -467,26 +490,6 @@ int stream_vaControl(stream_t *s, int cmd, va_list args)
switch (cmd)
{
- case STREAM_SET_POSITION:
- {
- uint64_t pos = va_arg(args, uint64_t);
-
- if (s->pf_seek == NULL)
- return VLC_EGENERIC;
-
- int ret = s->pf_seek(s, pos);
- if (ret != VLC_SUCCESS)
- return ret;
-
- if (priv->peek != NULL)
- {
- block_Release(priv->peek);
- priv->peek = NULL;
- }
- priv->offset = pos;
- return VLC_SUCCESS;
- }
-
case STREAM_GET_PRIVATE_BLOCK:
{
block_t **b = va_arg(args, block_t **);
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 2e914db..372b312 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -403,6 +403,7 @@ stream_MemoryNew
stream_Peek
stream_Read
stream_ReadLine
+stream_Seek
stream_Tell
stream_UrlNew
stream_vaControl
More information about the vlc-commits
mailing list