Message ID | tencent_14AB2B4EA470752D749ABA40209A169F5108@qq.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/2] avcodec/mediacodec_wrapper: get api level via NDK method | 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 |
tis 2023-01-10 klockan 00:36 +0800 skrev Zhao Zhili: > From: Zhao Zhili <zhilizhao@tencent.com> > > Signed-off-by: Zhao Zhili <zhilizhao@tencent.com> > --- > libavcodec/mediacodecdec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c > index 11f655a9aa..6ef23d7369 100644 > --- a/libavcodec/mediacodecdec.c > +++ b/libavcodec/mediacodecdec.c > @@ -415,7 +415,7 @@ static av_cold int > mediacodec_decode_init(AVCodecContext *avctx) > s->ctx->codec_name, ret); > > sdk_int = ff_Build_SDK_INT(avctx); > - if (sdk_int <= 23 && > + if (sdk_int > 0 && sdk_int <= 23 && > strcmp(s->ctx->codec_name, > "OMX.amlogic.mpeg2.decoder.awesome") == 0) { > av_log(avctx, AV_LOG_INFO, "Enabling workaround for %s on > API=%d\n", > s->ctx->codec_name, sdk_int); Maybe it should bail out if it can't figure out the SDK level? /Tomas
> On Jan 9, 2023, at 20:34, Tomas Härdin <git@haerdin.se> wrote: > > tis 2023-01-10 klockan 00:36 +0800 skrev Zhao Zhili: >> From: Zhao Zhili <zhilizhao@tencent.com> >> >> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com> >> --- >> libavcodec/mediacodecdec.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c >> index 11f655a9aa..6ef23d7369 100644 >> --- a/libavcodec/mediacodecdec.c >> +++ b/libavcodec/mediacodecdec.c >> @@ -415,7 +415,7 @@ static av_cold int >> mediacodec_decode_init(AVCodecContext *avctx) >> s->ctx->codec_name, ret); >> >> sdk_int = ff_Build_SDK_INT(avctx); >> - if (sdk_int <= 23 && >> + if (sdk_int > 0 && sdk_int <= 23 && >> strcmp(s->ctx->codec_name, >> "OMX.amlogic.mpeg2.decoder.awesome") == 0) { >> av_log(avctx, AV_LOG_INFO, "Enabling workaround for %s on >> API=%d\n", >> s->ctx->codec_name, sdk_int); > > Maybe it should bail out if it can't figure out the SDK level? ff_Build_SDK_INT always fail when JVM isn’t available and target api level < 24. If there are more usecases of ff_Build_SDK_INT(), we might make it more robust. For current use case: 1. If JVM is available, ff_Build_SDK_INT() should success, nothing changed. 2. If JVM is unavailable, sdk_int > 0 && sdk_int <= 23 should always be false, since android_get_device_api_level() only available after API >= 24. Then amlogic_mpeg2_api23_workaround doesn’t work. Even if we can make ff_Build_SDK_INT() works when API < 24, get codec name doesn’t work, then amlogic_mpeg2_api23_workaround doesn’t work neither. I don’t think it’s a serious issue. Old usecase with JNI works, and this special workaround might not necessary now. The patch fixed a hypothetical case when the codec is OMX.amlogic.mpeg2.decoder.awesome and the device api level >= 28 (get codec name works after API >= 28), amlogic_mpeg2_api23_workaround is enabled (which shouldn’t). > > /Tomas > > _______________________________________________ > 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".
mån 2023-01-09 klockan 21:14 +0800 skrev zhilizhao(赵志立): > > > > On Jan 9, 2023, at 20:34, Tomas Härdin <git@haerdin.se> wrote: > > > > tis 2023-01-10 klockan 00:36 +0800 skrev Zhao Zhili: > > > From: Zhao Zhili <zhilizhao@tencent.com> > > > > > > Signed-off-by: Zhao Zhili <zhilizhao@tencent.com> > > > --- > > > libavcodec/mediacodecdec.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/libavcodec/mediacodecdec.c > > > b/libavcodec/mediacodecdec.c > > > index 11f655a9aa..6ef23d7369 100644 > > > --- a/libavcodec/mediacodecdec.c > > > +++ b/libavcodec/mediacodecdec.c > > > @@ -415,7 +415,7 @@ static av_cold int > > > mediacodec_decode_init(AVCodecContext *avctx) > > > s->ctx->codec_name, ret); > > > > > > sdk_int = ff_Build_SDK_INT(avctx); > > > - if (sdk_int <= 23 && > > > + if (sdk_int > 0 && sdk_int <= 23 && > > > strcmp(s->ctx->codec_name, > > > "OMX.amlogic.mpeg2.decoder.awesome") == 0) { > > > av_log(avctx, AV_LOG_INFO, "Enabling workaround for %s > > > on > > > API=%d\n", > > > s->ctx->codec_name, sdk_int); > > > > Maybe it should bail out if it can't figure out the SDK level? > > ff_Build_SDK_INT always fail when JVM isn’t available and target > api level < 24. If there are more usecases of ff_Build_SDK_INT(), > we might make it more robust. A comment to this effect might be good then > The patch fixed a hypothetical case when the codec is > OMX.amlogic.mpeg2.decoder.awesome > and the device api level >= 28 (get codec name works after API >= > 28), > amlogic_mpeg2_api23_workaround is enabled (which shouldn’t). Fair enough /Tomas
diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c index 11f655a9aa..6ef23d7369 100644 --- a/libavcodec/mediacodecdec.c +++ b/libavcodec/mediacodecdec.c @@ -415,7 +415,7 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx) s->ctx->codec_name, ret); sdk_int = ff_Build_SDK_INT(avctx); - if (sdk_int <= 23 && + if (sdk_int > 0 && sdk_int <= 23 && strcmp(s->ctx->codec_name, "OMX.amlogic.mpeg2.decoder.awesome") == 0) { av_log(avctx, AV_LOG_INFO, "Enabling workaround for %s on API=%d\n", s->ctx->codec_name, sdk_int);