diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-10-05 01:49:25 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-10-05 01:49:25 +0200 |
commit | 684508ba15ca15d5d43f67bbed483ce5b6617f10 (patch) | |
tree | f244a4ea51e43ad58410df12bad85c491c7bea01 /libavformat/img2dec.c | |
parent | 550f3e9df3410b3dd975e590042c0d83e20a8da3 (diff) | |
download | ffmpeg-684508ba15ca15d5d43f67bbed483ce5b6617f10.tar.gz |
avformat/img2dec: Support -loop with pipes
Fixes Ticket3976
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/img2dec.c')
-rw-r--r-- | libavformat/img2dec.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index 5aac5550de..7b3ba49849 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -421,6 +421,8 @@ int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt) infer_size(&codec->width, &codec->height, size[0]); } else { f[0] = s1->pb; + if (avio_feof(f[0]) && s->loop && s->is_pipe) + avio_seek(f[0], 0, SEEK_SET); if (avio_feof(f[0])) return AVERROR_EOF; if (s->frame_size > 0) { @@ -457,6 +459,12 @@ int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt) for (i = 0; i < 3; i++) { if (f[i]) { ret[i] = avio_read(f[i], pkt->data + pkt->size, size[i]); + if (s->loop && s->is_pipe && ret[i] == AVERROR_EOF) { + if (avio_seek(f[i], 0, SEEK_SET) >= 0) { + pkt->pos = 0; + ret[i] = avio_read(f[i], pkt->data + pkt->size, size[i]); + } + } if (!s->is_pipe) avio_close(f[i]); if (ret[i] > 0) |