diff options
Diffstat (limited to 'stream')
-rw-r--r-- | stream/cache2.c | 6 | ||||
-rw-r--r-- | stream/stream.c | 5 | ||||
-rw-r--r-- | stream/stream.h | 4 | ||||
-rw-r--r-- | stream/stream_dvd.c | 2 |
4 files changed, 17 insertions, 0 deletions
diff --git a/stream/cache2.c b/stream/cache2.c index 7744f2cba9..6c11ec9812 100644 --- a/stream/cache2.c +++ b/stream/cache2.c @@ -323,6 +323,9 @@ static int cache_execute_control(cache_vars_t *s) { case STREAM_CTRL_GET_LANG: s->control_res = s->stream->control(s->stream, s->control, (void *)&s->control_lang_arg); break; + case STREAM_CTRL_MANAGES_TIMELINE: + s->control_res = s->stream->control(s->stream, s->control, NULL); + break; default: s->control_res = STREAM_UNSUPPORTED; break; @@ -659,6 +662,7 @@ int cache_do_control(stream_t *stream, int cmd, void *arg) { case STREAM_CTRL_GET_NUM_ANGLES: case STREAM_CTRL_GET_ANGLE: case STREAM_CTRL_GET_SIZE: + case STREAM_CTRL_MANAGES_TIMELINE: case -2: s->control = cmd; break; @@ -707,6 +711,8 @@ int cache_do_control(stream_t *stream, int cmd, void *arg) { case STREAM_CTRL_GET_LANG: *(struct stream_lang_req *)arg = s->control_lang_arg; break; + case STREAM_CTRL_MANAGES_TIMELINE: + break; } return s->control_res; } diff --git a/stream/stream.c b/stream/stream.c index 8e38d1983e..36594d8556 100644 --- a/stream/stream.c +++ b/stream/stream.c @@ -769,3 +769,8 @@ struct bstr stream_read_complete(struct stream *s, void *talloc_ctx, buf, total_read }; } + +bool stream_manages_timeline(struct stream *s) +{ + return stream_control(s, STREAM_CTRL_MANAGES_TIMELINE, NULL) == STREAM_OK; +} diff --git a/stream/stream.h b/stream/stream.h index c47452aeb9..b6fe40b56a 100644 --- a/stream/stream.h +++ b/stream/stream.h @@ -101,6 +101,8 @@ #define STREAM_CTRL_GET_CACHE_FILL 16 #define STREAM_CTRL_GET_CACHE_IDLE 17 #define STREAM_CTRL_RECONNECT 18 +// DVD/Bluray, signal general support for GET_CURRENT_TIME etc. +#define STREAM_CTRL_MANAGES_TIMELINE 19 struct stream_lang_req { int type; // STREAM_AUDIO, STREAM_SUB @@ -406,6 +408,8 @@ int stream_read_internal(stream_t *s, void *buf, int len); /// Internal seek function bypassing the stream buffer int stream_seek_internal(stream_t *s, int64_t newpos); +bool stream_manages_timeline(stream_t *s); + extern int dvd_title; extern int dvd_angle; diff --git a/stream/stream_dvd.c b/stream/stream_dvd.c index 0207ae3969..0b85e320ba 100644 --- a/stream/stream_dvd.c +++ b/stream/stream_dvd.c @@ -712,6 +712,8 @@ static int control(stream_t *stream,int cmd,void* arg) snprintf(req->name, sizeof(req->name), "%c%c", lang >> 8, lang); return STREAM_OK; } + case STREAM_CTRL_MANAGES_TIMELINE: + return STREAM_OK; } return STREAM_UNSUPPORTED; } |