diff mbox series

[FFmpeg-devel] avformat/matroskaenc: Fix writing of markers

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

Checks

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

Commit Message

Steinar H. Gunderson Aug. 28, 2023, 5:03 p.m. UTC
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(-)

Comments

Martin Storsjö Aug. 28, 2023, 8:08 p.m. UTC | #1
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
Martin Storsjö Aug. 29, 2023, 8:39 p.m. UTC | #2
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 mbox series

Patch

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);