Message ID | 20200202130428.27689-2-onemda@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [FFmpeg-devel,1/2] avformat/tty: make probing strict for first 8 bytes | expand |
Context | Check | Description |
---|---|---|
andriy/ffmpeg-patchwork | success | Make fate finished |
Paul B Mahol: > Signed-off-by: Paul B Mahol <onemda@gmail.com> > --- > libavformat/tty.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/libavformat/tty.c b/libavformat/tty.c > index 61e9f3e95c..2065fc0a53 100644 > --- a/libavformat/tty.c > +++ b/libavformat/tty.c > @@ -150,6 +150,8 @@ static int read_packet(AVFormatContext *avctx, AVPacket *pkt) > n = s->fsize - p; > } > > + pkt->stream_index = 0; > + pkt->pts = pkt->pos / n; > pkt->size = av_get_packet(avctx->pb, pkt, n); > if (pkt->size < 0) > return pkt->size; > @@ -182,4 +184,5 @@ AVInputFormat ff_tty_demuxer = { > .read_packet = read_packet, > .extensions = tty_extensions, > .priv_class = &tty_demuxer_class, > + .flags = AVFMT_GENERIC_INDEX, > }; > The very first thing av_get_packet() does is initializing the packet which resets every field except data and size. In particular, it overwrites what you set in the code you intend to add (where pkt->pos is btw still -1 from the initialization done before the read_packet function is called). So if this is supposed to make sense, you'd need to put this code after av_get_packet(). And I'm curious what happened when you tested seeking with your code. - Andreas
On 2/2/20, Andreas Rheinhardt <andreas.rheinhardt@gmail.com> wrote: > Paul B Mahol: >> Signed-off-by: Paul B Mahol <onemda@gmail.com> >> --- >> libavformat/tty.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/libavformat/tty.c b/libavformat/tty.c >> index 61e9f3e95c..2065fc0a53 100644 >> --- a/libavformat/tty.c >> +++ b/libavformat/tty.c >> @@ -150,6 +150,8 @@ static int read_packet(AVFormatContext *avctx, >> AVPacket *pkt) >> n = s->fsize - p; >> } >> >> + pkt->stream_index = 0; >> + pkt->pts = pkt->pos / n; >> pkt->size = av_get_packet(avctx->pb, pkt, n); >> if (pkt->size < 0) >> return pkt->size; >> @@ -182,4 +184,5 @@ AVInputFormat ff_tty_demuxer = { >> .read_packet = read_packet, >> .extensions = tty_extensions, >> .priv_class = &tty_demuxer_class, >> + .flags = AVFMT_GENERIC_INDEX, >> }; >> > The very first thing av_get_packet() does is initializing the packet > which resets every field except data and size. In particular, it > overwrites what you set in the code you intend to add (where pkt->pos > is btw still -1 from the initialization done before the read_packet > function is called). So if this is supposed to make sense, you'd need > to put this code after av_get_packet(). > And I'm curious what happened when you tested seeking with your code. It worked somehow, locally fixed. > > - Andreas > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff --git a/libavformat/tty.c b/libavformat/tty.c index 61e9f3e95c..2065fc0a53 100644 --- a/libavformat/tty.c +++ b/libavformat/tty.c @@ -150,6 +150,8 @@ static int read_packet(AVFormatContext *avctx, AVPacket *pkt) n = s->fsize - p; } + pkt->stream_index = 0; + pkt->pts = pkt->pos / n; pkt->size = av_get_packet(avctx->pb, pkt, n); if (pkt->size < 0) return pkt->size; @@ -182,4 +184,5 @@ AVInputFormat ff_tty_demuxer = { .read_packet = read_packet, .extensions = tty_extensions, .priv_class = &tty_demuxer_class, + .flags = AVFMT_GENERIC_INDEX, };
Signed-off-by: Paul B Mahol <onemda@gmail.com> --- libavformat/tty.c | 3 +++ 1 file changed, 3 insertions(+)