summaryrefslogtreecommitdiffstats
path: root/demux/demux_lavf.c
diff options
context:
space:
mode:
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r--demux/demux_lavf.c35
1 files changed, 3 insertions, 32 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index bacbfa24de..ad2e6df6ea 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -218,8 +218,6 @@ typedef struct lavf_priv {
AVInputFormat *avif;
int avif_flags;
AVFormatContext *avfc;
- bstr init_fragment;
- int64_t stream_pos;
AVIOContext *pb;
struct stream_info **streams; // NULL for unknown streams
int num_streams;
@@ -281,16 +279,8 @@ static int mp_read(void *opaque, uint8_t *buf, int size)
struct demuxer *demuxer = opaque;
lavf_priv_t *priv = demuxer->priv;
struct stream *stream = priv->stream;
- int ret;
- if (priv->stream_pos < priv->init_fragment.len) {
- ret = MPMIN(size, priv->init_fragment.len - priv->stream_pos);
- memcpy(buf, priv->init_fragment.start + priv->stream_pos, ret);
- priv->stream_pos += ret;
- } else {
- ret = stream_read_partial(stream, buf, size);
- priv->stream_pos = priv->init_fragment.len + stream_tell(stream);
- }
+ int ret = stream_read_partial(stream, buf, size);
MP_TRACE(demuxer, "%d=mp_read(%p, %p, %d), pos: %"PRId64", eof:%d\n",
ret, stream, buf, size, stream_tell(stream), stream->eof);
@@ -311,12 +301,11 @@ static int64_t mp_seek(void *opaque, int64_t pos, int whence)
int64_t end = stream_get_size(stream);
if (end < 0)
return -1;
- end += priv->init_fragment.len;
if (whence == AVSEEK_SIZE)
return end;
pos += end;
} else if (whence == SEEK_CUR) {
- pos += priv->stream_pos;
+ pos += stream_tell(stream);
} else if (whence != SEEK_SET) {
return -1;
}
@@ -324,23 +313,12 @@ static int64_t mp_seek(void *opaque, int64_t pos, int whence)
if (pos < 0)
return -1;
- int64_t stream_target = pos - priv->init_fragment.len;
- bool seek_before = stream_target < 0;
- if (seek_before)
- stream_target = 0; // within init segment - seek real stream to 0
-
int64_t current_pos = stream_tell(stream);
- if (stream_seek(stream, stream_target) == 0) {
+ if (stream_seek(stream, pos) == 0) {
stream_seek(stream, current_pos);
return -1;
}
- if (seek_before) {
- priv->stream_pos = pos;
- } else {
- priv->stream_pos = priv->init_fragment.len + stream_tell(stream);
- }
-
return pos;
}
@@ -478,10 +456,6 @@ static int lavf_check_file(demuxer_t *demuxer, enum demux_check check)
int nsize = av_clip(avpd.buf_size * 2, INITIAL_PROBE_SIZE,
PROBE_BUF_SIZE);
bstr buf = stream_peek(s, nsize);
- if (demuxer->params && demuxer->params->init_fragment.len) {
- buf = demuxer->params->init_fragment;
- buf.len = MPMIN(buf.len, nsize);
- }
if (buf.len <= avpd.buf_size)
final_probe = true;
memcpy(avpd.buf, buf.start, buf.len);
@@ -933,9 +907,6 @@ static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check)
if (lavf_check_file(demuxer, check) < 0)
return -1;
- if (demuxer->params)
- priv->init_fragment = bstrdup(priv, demuxer->params->init_fragment);
-
avfc = avformat_alloc_context();
if (!avfc)
return -1;