diff mbox series

[FFmpeg-devel] avcodec/libaomenc: add init cleanup flag

Message ID 20220825171618.1264-1-jamrial@gmail.com
State Accepted
Commit 5bab794e4aaed55d3146723974ffb5ad792617ab
Headers show
Series [FFmpeg-devel] avcodec/libaomenc: add init cleanup flag | expand

Commit Message

James Almer Aug. 25, 2022, 5:16 p.m. UTC
Signed-off-by: James Almer <jamrial@gmail.com>
---
There doesn't seem to be any proper API to check if an encoder is open.

 libavcodec/libaomenc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

James Zern Aug. 25, 2022, 5:34 p.m. UTC | #1
On Thu, Aug 25, 2022 at 10:16 AM James Almer <jamrial@gmail.com> wrote:
>
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
> There doesn't seem to be any proper API to check if an encoder is open.
>

true.

>  libavcodec/libaomenc.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>

lgtm.

> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
> index 485f554165..fb9a6ff8b2 100644
> --- a/libavcodec/libaomenc.c
> +++ b/libavcodec/libaomenc.c
> @@ -400,7 +400,7 @@ static av_cold int aom_free(AVCodecContext *avctx)
>  #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \
>      defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \
>      defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX)
> -    if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) {
> +    if (ctx->encoder->iface && !(avctx->flags & AV_CODEC_FLAG_PASS1)) {

This check is fine, though the codec control call should fail if iface is null.

>          int num_operating_points;
>          int levels[32];
>          int target_levels[32];
> @@ -1544,6 +1544,7 @@ FFCodec ff_libaom_av1_encoder = {
>      FF_CODEC_ENCODE_CB(aom_encode),
>      .close          = aom_free,
>      .caps_internal  = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
> +                      FF_CODEC_CAP_INIT_CLEANUP |
>                        FF_CODEC_CAP_AUTO_THREADS,
>      .defaults       = defaults,
>      .init_static_data = av1_init_static,
> --
> 2.37.2
>
> _______________________________________________
> 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".
James Almer Aug. 25, 2022, 5:39 p.m. UTC | #2
On 8/25/2022 2:34 PM, James Zern wrote:
> On Thu, Aug 25, 2022 at 10:16 AM James Almer <jamrial@gmail.com> wrote:
>>
>> Signed-off-by: James Almer <jamrial@gmail.com>
>> ---
>> There doesn't seem to be any proper API to check if an encoder is open.
>>
> 
> true.
> 
>>   libavcodec/libaomenc.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
> 
> lgtm.

Will apply, thanks.

> 
>> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
>> index 485f554165..fb9a6ff8b2 100644
>> --- a/libavcodec/libaomenc.c
>> +++ b/libavcodec/libaomenc.c
>> @@ -400,7 +400,7 @@ static av_cold int aom_free(AVCodecContext *avctx)
>>   #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \
>>       defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \
>>       defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX)
>> -    if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) {
>> +    if (ctx->encoder->iface && !(avctx->flags & AV_CODEC_FLAG_PASS1)) {
> 
> This check is fine, though the codec control call should fail if iface is null.
> 
>>           int num_operating_points;
>>           int levels[32];
>>           int target_levels[32];
>> @@ -1544,6 +1544,7 @@ FFCodec ff_libaom_av1_encoder = {
>>       FF_CODEC_ENCODE_CB(aom_encode),
>>       .close          = aom_free,
>>       .caps_internal  = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
>> +                      FF_CODEC_CAP_INIT_CLEANUP |
>>                         FF_CODEC_CAP_AUTO_THREADS,
>>       .defaults       = defaults,
>>       .init_static_data = av1_init_static,
>> --
>> 2.37.2
>>
>> _______________________________________________
>> 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".
> _______________________________________________
> 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".
James Zern Aug. 25, 2022, 7:21 p.m. UTC | #3
On Thu, Aug 25, 2022 at 10:39 AM James Almer <jamrial@gmail.com> wrote:
>
> On 8/25/2022 2:34 PM, James Zern wrote:
> > On Thu, Aug 25, 2022 at 10:16 AM James Almer <jamrial@gmail.com> wrote:
> >>
> >> Signed-off-by: James Almer <jamrial@gmail.com>
> >> ---
> >> There doesn't seem to be any proper API to check if an encoder is open.
> >>
> >
> > true.
> >
> >>   libavcodec/libaomenc.c | 3 ++-
> >>   1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >
> > lgtm.
>
> Will apply, thanks.
>
> >
> >> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
> >> index 485f554165..fb9a6ff8b2 100644
> >> --- a/libavcodec/libaomenc.c
> >> +++ b/libavcodec/libaomenc.c
> >> @@ -400,7 +400,7 @@ static av_cold int aom_free(AVCodecContext *avctx)
> >>   #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \
> >>       defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \
> >>       defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX)
> >> -    if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) {
> >> +    if (ctx->encoder->iface && !(avctx->flags & AV_CODEC_FLAG_PASS1)) {

I missed this, it should be 'ctx->encoder.iface'.

> >
> > This check is fine, though the codec control call should fail if iface is null.
> >
> >>           int num_operating_points;
> >>           int levels[32];
> >>           int target_levels[32];
> >> @@ -1544,6 +1544,7 @@ FFCodec ff_libaom_av1_encoder = {
> >>       FF_CODEC_ENCODE_CB(aom_encode),
> >>       .close          = aom_free,
> >>       .caps_internal  = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
> >> +                      FF_CODEC_CAP_INIT_CLEANUP |
> >>                         FF_CODEC_CAP_AUTO_THREADS,
> >>       .defaults       = defaults,
> >>       .init_static_data = av1_init_static,
> >> --
> >> 2.37.2
> >>
> >> _______________________________________________
> >> 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".
> > _______________________________________________
> > 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".
> _______________________________________________
> 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".
James Almer Aug. 25, 2022, 7:28 p.m. UTC | #4
On 8/25/2022 4:21 PM, James Zern wrote:
> On Thu, Aug 25, 2022 at 10:39 AM James Almer <jamrial@gmail.com> wrote:
>>
>> On 8/25/2022 2:34 PM, James Zern wrote:
>>> On Thu, Aug 25, 2022 at 10:16 AM James Almer <jamrial@gmail.com> wrote:
>>>>
>>>> Signed-off-by: James Almer <jamrial@gmail.com>
>>>> ---
>>>> There doesn't seem to be any proper API to check if an encoder is open.
>>>>
>>>
>>> true.
>>>
>>>>    libavcodec/libaomenc.c | 3 ++-
>>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>
>>> lgtm.
>>
>> Will apply, thanks.
>>
>>>
>>>> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
>>>> index 485f554165..fb9a6ff8b2 100644
>>>> --- a/libavcodec/libaomenc.c
>>>> +++ b/libavcodec/libaomenc.c
>>>> @@ -400,7 +400,7 @@ static av_cold int aom_free(AVCodecContext *avctx)
>>>>    #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \
>>>>        defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \
>>>>        defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX)
>>>> -    if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) {
>>>> +    if (ctx->encoder->iface && !(avctx->flags & AV_CODEC_FLAG_PASS1)) {
> 
> I missed this, it should be 'ctx->encoder.iface'.

Huh. When were those three defines above added? Guess they are not in 
any tagged release?

Fixed in any case. Thanks.

> 
>>>
>>> This check is fine, though the codec control call should fail if iface is null.
>>>
>>>>            int num_operating_points;
>>>>            int levels[32];
>>>>            int target_levels[32];
>>>> @@ -1544,6 +1544,7 @@ FFCodec ff_libaom_av1_encoder = {
>>>>        FF_CODEC_ENCODE_CB(aom_encode),
>>>>        .close          = aom_free,
>>>>        .caps_internal  = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
>>>> +                      FF_CODEC_CAP_INIT_CLEANUP |
>>>>                          FF_CODEC_CAP_AUTO_THREADS,
>>>>        .defaults       = defaults,
>>>>        .init_static_data = av1_init_static,
>>>> --
>>>> 2.37.2
>>>>
>>>> _______________________________________________
>>>> 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".
>>> _______________________________________________
>>> 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".
>> _______________________________________________
>> 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".
> _______________________________________________
> 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".
James Zern Aug. 25, 2022, 7:32 p.m. UTC | #5
On Thu, Aug 25, 2022 at 12:28 PM James Almer <jamrial@gmail.com> wrote:
>
> On 8/25/2022 4:21 PM, James Zern wrote:
> > On Thu, Aug 25, 2022 at 10:39 AM James Almer <jamrial@gmail.com> wrote:
> >>
> >> On 8/25/2022 2:34 PM, James Zern wrote:
> >>> On Thu, Aug 25, 2022 at 10:16 AM James Almer <jamrial@gmail.com> wrote:
> >>>>
> >>>> Signed-off-by: James Almer <jamrial@gmail.com>
> >>>> ---
> >>>> There doesn't seem to be any proper API to check if an encoder is open.
> >>>>
> >>>
> >>> true.
> >>>
> >>>>    libavcodec/libaomenc.c | 3 ++-
> >>>>    1 file changed, 2 insertions(+), 1 deletion(-)
> >>>>
> >>>
> >>> lgtm.
> >>
> >> Will apply, thanks.
> >>
> >>>
> >>>> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
> >>>> index 485f554165..fb9a6ff8b2 100644
> >>>> --- a/libavcodec/libaomenc.c
> >>>> +++ b/libavcodec/libaomenc.c
> >>>> @@ -400,7 +400,7 @@ static av_cold int aom_free(AVCodecContext *avctx)
> >>>>    #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \
> >>>>        defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \
> >>>>        defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX)
> >>>> -    if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) {
> >>>> +    if (ctx->encoder->iface && !(avctx->flags & AV_CODEC_FLAG_PASS1)) {
> >
> > I missed this, it should be 'ctx->encoder.iface'.
>
> Huh. When were those three defines above added? Guess they are not in
> any tagged release?
>
> Fixed in any case. Thanks.
>

Thanks, you beat me to it. You're right, they're not in a tagged
release yet. 3.5.0 will have them.
diff mbox series

Patch

diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index 485f554165..fb9a6ff8b2 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -400,7 +400,7 @@  static av_cold int aom_free(AVCodecContext *avctx)
 #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \
     defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \
     defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX)
-    if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) {
+    if (ctx->encoder->iface && !(avctx->flags & AV_CODEC_FLAG_PASS1)) {
         int num_operating_points;
         int levels[32];
         int target_levels[32];
@@ -1544,6 +1544,7 @@  FFCodec ff_libaom_av1_encoder = {
     FF_CODEC_ENCODE_CB(aom_encode),
     .close          = aom_free,
     .caps_internal  = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
+                      FF_CODEC_CAP_INIT_CLEANUP |
                       FF_CODEC_CAP_AUTO_THREADS,
     .defaults       = defaults,
     .init_static_data = av1_init_static,