Quoting Luca Barbato (2016-12-15 19:01:03) > The null demuxer does not have a backing AVIOContext. > --- > avconv.c | 23 ++++++++++++----------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/avconv.c b/avconv.c > index 5c31332..fe60625 100644 > --- a/avconv.c > +++ b/avconv.c > @@ -909,7 +909,7 @@ static void print_report(int is_last_report, int64_t > timer_start) > char buf[1024]; > OutputStream *ost; > AVFormatContext *oc; > - int64_t total_size; > + int64_t total_size = 0; > AVCodecContext *enc; > int frame_number, vid, i; > double bitrate, ti1, pts; > @@ -934,16 +934,17 @@ static void print_report(int is_last_report, int64_t > timer_start) > > > oc = output_files[0]->ctx; > - > - total_size = avio_size(oc->pb); > - if (total_size <= 0) // FIXME improve avio_size() so it works with non > seekable output too > - total_size = avio_tell(oc->pb); > - if (total_size < 0) { > - char errbuf[128]; > - av_strerror(total_size, errbuf, sizeof(errbuf)); > - av_log(NULL, AV_LOG_VERBOSE, "Bitrate not available, " > - "avio_tell() failed: %s\n", errbuf); > - total_size = 0; > + if (oc->pb) { > + total_size = avio_size(oc->pb); > + if (total_size <= 0) // FIXME improve avio_size() so it works with > non seekable output too > + total_size = avio_tell(oc->pb); > + if (total_size < 0) { > + char errbuf[128]; > + av_strerror(total_size, errbuf, sizeof(errbuf)); > + av_log(NULL, AV_LOG_VERBOSE, "Bitrate not available, " > + "avio_tell() failed: %s\n", errbuf); > + total_size = 0; > + } > } > > buf[0] = '\0'; > -- > 2.9.2
The patch is fine with me, but more generally I'd say that as long as the muxer is open, the AVIOContext belongs to it and the caller touching it in any way is invalid. -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel