diff options
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r-- | demux/demux_lavf.c | 35 |
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; |