Message ID | 20230828170308.119613-1-steinar+ffmpeg@gunderson.no |
---|---|
State | Accepted |
Commit | 69c308a6d1f6027bc3328cd8f4d38fb516ee10b8 |
Headers | show |
Series | [FFmpeg-devel] avformat/matroskaenc: Fix writing of markers | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On Mon, 28 Aug 2023, Steinar H. Gunderson wrote: > When the marker writing code was merged from libav to FFmpeg > in dc62016c, it failed to take into account that the meaning of > cluster_pos had changed in bda5b662; in particular, the special > value for “I'm not currently working on a cluster” had changed > from 0 to -1. This makes the avio_write_marker() call never > be called. Update the if statement to fix it. > > Fixes: Ticket9843 > Signed-off-by: Steinar H. Gunderson <steinar+ffmpeg@gunderson.no> > --- > libavformat/matroskaenc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c > index e813ef86cf7..1dfcf763e2d 100644 > --- a/libavformat/matroskaenc.c > +++ b/libavformat/matroskaenc.c > @@ -3027,7 +3027,7 @@ static int mkv_write_packet(AVFormatContext *s, const AVPacket *pkt) > } > } > > - if (!mkv->cluster_pos) > + if (mkv->cluster_pos == -1) > avio_write_marker(s->pb, > av_rescale_q(pkt->dts, s->streams[pkt->stream_index]->time_base, AV_TIME_BASE_Q), > keyframe && (mkv->have_video ? codec_type == AVMEDIA_TYPE_VIDEO : 1) ? AVIO_DATA_MARKER_SYNC_POINT : AVIO_DATA_MARKER_BOUNDARY_POINT); > -- > 2.39.2 LGTM, thanks, this sounds reasonable to me. I'll push it tomorrow or so. // Martin
On Mon, 28 Aug 2023, Martin Storsjö wrote: > On Mon, 28 Aug 2023, Steinar H. Gunderson wrote: > >> When the marker writing code was merged from libav to FFmpeg >> in dc62016c, it failed to take into account that the meaning of >> cluster_pos had changed in bda5b662; in particular, the special >> value for “I'm not currently working on a cluster” had changed >> from 0 to -1. This makes the avio_write_marker() call never >> be called. Update the if statement to fix it. >> >> Fixes: Ticket9843 >> Signed-off-by: Steinar H. Gunderson <steinar+ffmpeg@gunderson.no> >> --- >> libavformat/matroskaenc.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c >> index e813ef86cf7..1dfcf763e2d 100644 >> --- a/libavformat/matroskaenc.c >> +++ b/libavformat/matroskaenc.c >> @@ -3027,7 +3027,7 @@ static int mkv_write_packet(AVFormatContext *s, const >> AVPacket *pkt) >> } >> } >> >> - if (!mkv->cluster_pos) >> + if (mkv->cluster_pos == -1) >> avio_write_marker(s->pb, >> av_rescale_q(pkt->dts, >> s->streams[pkt->stream_index]->time_base, AV_TIME_BASE_Q), >> keyframe && (mkv->have_video ? codec_type == >> AVMEDIA_TYPE_VIDEO : 1) ? AVIO_DATA_MARKER_SYNC_POINT : >> AVIO_DATA_MARKER_BOUNDARY_POINT); >> -- >> 2.39.2 > > LGTM, thanks, this sounds reasonable to me. > > I'll push it tomorrow or so. Pushed now, thanks for the contribution! // Martin
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index e813ef86cf7..1dfcf763e2d 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -3027,7 +3027,7 @@ static int mkv_write_packet(AVFormatContext *s, const AVPacket *pkt) } } - if (!mkv->cluster_pos) + if (mkv->cluster_pos == -1) avio_write_marker(s->pb, av_rescale_q(pkt->dts, s->streams[pkt->stream_index]->time_base, AV_TIME_BASE_Q), keyframe && (mkv->have_video ? codec_type == AVMEDIA_TYPE_VIDEO : 1) ? AVIO_DATA_MARKER_SYNC_POINT : AVIO_DATA_MARKER_BOUNDARY_POINT);
When the marker writing code was merged from libav to FFmpeg in dc62016c, it failed to take into account that the meaning of cluster_pos had changed in bda5b662; in particular, the special value for “I'm not currently working on a cluster” had changed from 0 to -1. This makes the avio_write_marker() call never be called. Update the if statement to fix it. Fixes: Ticket9843 Signed-off-by: Steinar H. Gunderson <steinar+ffmpeg@gunderson.no> --- libavformat/matroskaenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)