* [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API
@ 2022-04-13 14:43 Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 2/4] avcodec/avcodec: Avoid av_frame_unref(NULL) Andreas Rheinhardt
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Andreas Rheinhardt @ 2022-04-13 14:43 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andreas Rheinhardt
FFCodec.cb is a union.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
libavcodec/encode.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavcodec/encode.c b/libavcodec/encode.c
index 6ae47b736c..e7ae2cd4c1 100644
--- a/libavcodec/encode.c
+++ b/libavcodec/encode.c
@@ -589,7 +589,7 @@ int ff_encode_preinit(AVCodecContext *avctx)
if (avctx->codec_descriptor->props & AV_CODEC_PROP_INTRA_ONLY)
avctx->internal->intra_only_flag = AV_PKT_FLAG_KEY;
- if (ffcodec(avctx->codec)->cb.encode) {
+ if (ffcodec(avctx->codec)->cb_type == FF_CODEC_CB_TYPE_ENCODE) {
avci->in_frame = av_frame_alloc();
if (!avci->in_frame)
return AVERROR(ENOMEM);
--
2.32.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
* [FFmpeg-devel] [PATCH 2/4] avcodec/avcodec: Avoid av_frame_unref(NULL)
2022-04-13 14:43 [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API Andreas Rheinhardt
@ 2022-04-13 14:49 ` Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 4/4] avcodec/avcodec: Simplify accessing AVSubtitleRect via dedicated pointer Andreas Rheinhardt
2 siblings, 0 replies; 8+ messages in thread
From: Andreas Rheinhardt @ 2022-04-13 14:49 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andreas Rheinhardt
It works, but it is not documented to work.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
libavcodec/avcodec.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index e0f38ac42a..ded6b5b307 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -420,6 +420,8 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
"that doesn't support it\n");
return;
}
+ if (avci->in_frame)
+ av_frame_unref(avci->in_frame);
}
avci->draining = 0;
@@ -432,7 +434,6 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
av_packet_unref(avci->last_pkt_props);
- av_frame_unref(avci->in_frame);
av_packet_unref(avci->in_pkt);
if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME)
--
2.32.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
* [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing
2022-04-13 14:43 [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 2/4] avcodec/avcodec: Avoid av_frame_unref(NULL) Andreas Rheinhardt
@ 2022-04-13 14:49 ` Andreas Rheinhardt
2022-04-13 15:48 ` Anton Khirnov
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 4/4] avcodec/avcodec: Simplify accessing AVSubtitleRect via dedicated pointer Andreas Rheinhardt
2 siblings, 1 reply; 8+ messages in thread
From: Andreas Rheinhardt @ 2022-04-13 14:49 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
Needs to be applied before
https://ffmpeg.org/pipermail/ffmpeg-devel/2022-March/294507.html
or flushing an encoder will segfault.
Btw: All this stuff is unused by subtitle decoders,
so one could condition the else on that and avoid the allocations.
libavcodec/avcodec.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index ded6b5b307..0d971a61d4 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -422,6 +422,17 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
}
if (avci->in_frame)
av_frame_unref(avci->in_frame);
+ } else {
+ av_packet_unref(avci->last_pkt_props);
+ while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
+ av_packet_unref(avci->last_pkt_props);
+
+ av_packet_unref(avci->in_pkt);
+
+ avctx->pts_correction_last_pts =
+ avctx->pts_correction_last_dts = INT64_MIN;
+
+ av_bsf_flush(avci->bsf);
}
avci->draining = 0;
@@ -430,22 +441,10 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
av_frame_unref(avci->buffer_frame);
av_packet_unref(avci->buffer_pkt);
- av_packet_unref(avci->last_pkt_props);
- while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
- av_packet_unref(avci->last_pkt_props);
-
- av_packet_unref(avci->in_pkt);
-
if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME)
ff_thread_flush(avctx);
else if (ffcodec(avctx->codec)->flush)
ffcodec(avctx->codec)->flush(avctx);
-
- avctx->pts_correction_last_pts =
- avctx->pts_correction_last_dts = INT64_MIN;
-
- if (avci->bsf)
- av_bsf_flush(avci->bsf);
}
void avsubtitle_free(AVSubtitle *sub)
--
2.32.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
* [FFmpeg-devel] [PATCH 4/4] avcodec/avcodec: Simplify accessing AVSubtitleRect via dedicated pointer
2022-04-13 14:43 [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 2/4] avcodec/avcodec: Avoid av_frame_unref(NULL) Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing Andreas Rheinhardt
@ 2022-04-13 14:49 ` Andreas Rheinhardt
2 siblings, 0 replies; 8+ messages in thread
From: Andreas Rheinhardt @ 2022-04-13 14:49 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
libavcodec/avcodec.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index 0d971a61d4..d11f035481 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -452,12 +452,15 @@ void avsubtitle_free(AVSubtitle *sub)
int i;
for (i = 0; i < sub->num_rects; i++) {
- av_freep(&sub->rects[i]->data[0]);
- av_freep(&sub->rects[i]->data[1]);
- av_freep(&sub->rects[i]->data[2]);
- av_freep(&sub->rects[i]->data[3]);
- av_freep(&sub->rects[i]->text);
- av_freep(&sub->rects[i]->ass);
+ AVSubtitleRect *const rect = sub->rects[i];
+
+ av_freep(&rect->data[0]);
+ av_freep(&rect->data[1]);
+ av_freep(&rect->data[2]);
+ av_freep(&rect->data[3]);
+ av_freep(&rect->text);
+ av_freep(&rect->ass);
+
av_freep(&sub->rects[i]);
}
--
2.32.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing
@ 2022-04-13 15:48 ` Anton Khirnov
2022-04-13 15:58 ` Andreas Rheinhardt
2022-04-13 16:01 ` Anton Khirnov
0 siblings, 2 replies; 8+ messages in thread
From: Anton Khirnov @ 2022-04-13 15:48 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Andreas Rheinhardt
Quoting Andreas Rheinhardt (2022-04-13 16:49:51)
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
> Needs to be applied before
> https://ffmpeg.org/pipermail/ffmpeg-devel/2022-March/294507.html
> or flushing an encoder will segfault.
> Btw: All this stuff is unused by subtitle decoders,
> so one could condition the else on that and avoid the allocations.
>
> libavcodec/avcodec.c | 23 +++++++++++------------
> 1 file changed, 11 insertions(+), 12 deletions(-)
>
> diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
> index ded6b5b307..0d971a61d4 100644
> --- a/libavcodec/avcodec.c
> +++ b/libavcodec/avcodec.c
> @@ -422,6 +422,17 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
> }
> if (avci->in_frame)
> av_frame_unref(avci->in_frame);
> + } else {
> + av_packet_unref(avci->last_pkt_props);
> + while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
> + av_packet_unref(avci->last_pkt_props);
> +
> + av_packet_unref(avci->in_pkt);
> +
> + avctx->pts_correction_last_pts =
> + avctx->pts_correction_last_dts = INT64_MIN;
> +
> + av_bsf_flush(avci->bsf);
> }
>
> avci->draining = 0;
> @@ -430,22 +441,10 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
> av_frame_unref(avci->buffer_frame);
> av_packet_unref(avci->buffer_pkt);
>
> - av_packet_unref(avci->last_pkt_props);
> - while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
> - av_packet_unref(avci->last_pkt_props);
> -
> - av_packet_unref(avci->in_pkt);
> -
> if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME)
> ff_thread_flush(avctx);
> else if (ffcodec(avctx->codec)->flush)
> ffcodec(avctx->codec)->flush(avctx);
> -
> - avctx->pts_correction_last_pts =
> - avctx->pts_correction_last_dts = INT64_MIN;
> -
> - if (avci->bsf)
did you drop this check on purpose?
--
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing
2022-04-13 15:48 ` Anton Khirnov
@ 2022-04-13 15:58 ` Andreas Rheinhardt
2022-04-13 16:01 ` Anton Khirnov
1 sibling, 0 replies; 8+ messages in thread
From: Andreas Rheinhardt @ 2022-04-13 15:58 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Anton Khirnov:
> Quoting Andreas Rheinhardt (2022-04-13 16:49:51)
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>> ---
>> Needs to be applied before
>> https://ffmpeg.org/pipermail/ffmpeg-devel/2022-March/294507.html
>> or flushing an encoder will segfault.
>> Btw: All this stuff is unused by subtitle decoders,
>> so one could condition the else on that and avoid the allocations.
>>
>> libavcodec/avcodec.c | 23 +++++++++++------------
>> 1 file changed, 11 insertions(+), 12 deletions(-)
>>
>> diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
>> index ded6b5b307..0d971a61d4 100644
>> --- a/libavcodec/avcodec.c
>> +++ b/libavcodec/avcodec.c
>> @@ -422,6 +422,17 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
>> }
>> if (avci->in_frame)
>> av_frame_unref(avci->in_frame);
>> + } else {
>> + av_packet_unref(avci->last_pkt_props);
>> + while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
>> + av_packet_unref(avci->last_pkt_props);
>> +
>> + av_packet_unref(avci->in_pkt);
>> +
>> + avctx->pts_correction_last_pts =
>> + avctx->pts_correction_last_dts = INT64_MIN;
>> +
>> + av_bsf_flush(avci->bsf);
>> }
>>
>> avci->draining = 0;
>> @@ -430,22 +441,10 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
>> av_frame_unref(avci->buffer_frame);
>> av_packet_unref(avci->buffer_pkt);
>>
>> - av_packet_unref(avci->last_pkt_props);
>> - while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
>> - av_packet_unref(avci->last_pkt_props);
>> -
>> - av_packet_unref(avci->in_pkt);
>> -
>> if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME)
>> ff_thread_flush(avctx);
>> else if (ffcodec(avctx->codec)->flush)
>> ffcodec(avctx->codec)->flush(avctx);
>> -
>> - avctx->pts_correction_last_pts =
>> - avctx->pts_correction_last_dts = INT64_MIN;
>> -
>> - if (avci->bsf)
>
> did you drop this check on purpose?
>
Yes. We currently open bsfs for all decoders (even if it is a null-bsf).
- Andreas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing
2022-04-13 15:48 ` Anton Khirnov
2022-04-13 15:58 ` Andreas Rheinhardt
@ 2022-04-13 16:01 ` Anton Khirnov
1 sibling, 0 replies; 8+ messages in thread
From: Anton Khirnov @ 2022-04-13 16:01 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Quoting Andreas Rheinhardt (2022-04-13 17:58:08)
> Anton Khirnov:
> > Quoting Andreas Rheinhardt (2022-04-13 16:49:51)
> >> -
> >> - avctx->pts_correction_last_pts =
> >> - avctx->pts_correction_last_dts = INT64_MIN;
> >> -
> >> - if (avci->bsf)
> >
> > did you drop this check on purpose?
> >
>
> Yes. We currently open bsfs for all decoders (even if it is a null-bsf).
Then patch lgtm
--
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API
@ 2022-04-13 15:57 Anton Khirnov
0 siblings, 0 replies; 8+ messages in thread
From: Anton Khirnov @ 2022-04-13 15:57 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Andreas Rheinhardt
Quoting Andreas Rheinhardt (2022-04-13 16:43:28)
> FFCodec.cb is a union.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
> libavcodec/encode.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/encode.c b/libavcodec/encode.c
> index 6ae47b736c..e7ae2cd4c1 100644
> --- a/libavcodec/encode.c
> +++ b/libavcodec/encode.c
> @@ -589,7 +589,7 @@ int ff_encode_preinit(AVCodecContext *avctx)
> if (avctx->codec_descriptor->props & AV_CODEC_PROP_INTRA_ONLY)
> avctx->internal->intra_only_flag = AV_PKT_FLAG_KEY;
>
> - if (ffcodec(avctx->codec)->cb.encode) {
> + if (ffcodec(avctx->codec)->cb_type == FF_CODEC_CB_TYPE_ENCODE) {
> avci->in_frame = av_frame_alloc();
> if (!avci->in_frame)
> return AVERROR(ENOMEM);
> --
> 2.32.0
Patches 1, 2, 4 look good.
Thank you and sorry for the breakage.
--
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-04-13 16:01 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-13 14:43 [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 2/4] avcodec/avcodec: Avoid av_frame_unref(NULL) Andreas Rheinhardt
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing Andreas Rheinhardt
2022-04-13 15:48 ` Anton Khirnov
2022-04-13 15:58 ` Andreas Rheinhardt
2022-04-13 16:01 ` Anton Khirnov
2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 4/4] avcodec/avcodec: Simplify accessing AVSubtitleRect via dedicated pointer Andreas Rheinhardt
2022-04-13 15:57 [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API Anton Khirnov
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git