Opened 7 years ago
Closed 7 years ago
#6695 closed defect (invalid)
avformat_new_stream() and cur_dts
| Reported by: | Jon Smirl | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avformat |
| Version: | git-master | Keywords: | regression |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description (last modified by )
avformat_new_stream() is not initializing AVStream->cur_dts. This causes problems down in av_interleaved_write_frame(), compute_muxer_pkt_fields() on this test since cur_dts is randomly set.
if (st->cur_dts && st->cur_dts != AV_NOPTS_VALUE &&
((!(s->oformat->flags & AVFMT_TS_NONSTRICT) &&
st->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE &&
st->codecpar->codec_type != AVMEDIA_TYPE_DATA &&
st->cur_dts >= pkt->dts) || st->cur_dts > pkt->dts)) {
av_log(s, AV_LOG_ERROR,
"Application provided invalid, non monotonically increasing dts to muxer in stream %d: %s >= %s\n",
st->index, av_ts2str(st->cur_dts), av_ts2str(pkt->dts));
return AVERROR(EINVAL);
}
Changing my code like this makes it work as expected.
out_stream = avformat_new_stream(ofmt_ctx, NULL);
out_stream->cur_dts = AV_NOPTS_VALUE;
I'm using git head from 9/24. This is a recent change since my code worked on older versions of ffmpeg.
Change History (2)
comment:1 by , 7 years ago
| Component: | undetermined → avformat |
|---|---|
| Description: | modified (diff) |
| Keywords: | regression added |
| Priority: | normal → important |
comment:2 by , 7 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
When I was making a patch for this I noticed what changed in ffmpeg. That led me to look at our code. Our code was mis-using the iformat field to pass a 'this' pointer to the file/open close callbacks since there wasn't any other way to pass the pointer. Apparently we can't mis-use that field anymore.
We were trying to avoid writing a full custom IO implementation since all we needed was to track the file opens. I guess we have to figure out how to write the full custom IO code now.



Please send your patch - made with
git format-patch- to the development mailing list.