From b104dee54c97e5710ee8be977ef38588b655af2a Mon Sep 17 00:00:00 2001 From: Jarvis Date: Tue, 27 May 2025 11:21:10 +0800 Subject: [PATCH 1/5] Add ROI Encoder Interface Signed-off-by: Jarvis --- multimedia/av_codec/native_avcodec_base.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/multimedia/av_codec/native_avcodec_base.h b/multimedia/av_codec/native_avcodec_base.h index 609dc238e..363901292 100644 --- a/multimedia/av_codec/native_avcodec_base.h +++ b/multimedia/av_codec/native_avcodec_base.h @@ -1031,6 +1031,22 @@ extern const char *OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_FRAME_AFTER; * @since 18 */ extern const char *OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_MAX_COUNT; +/** + * @brief Key to set the region of interest(ROI) as QpOffset-Rects, value type is string in the format + * "Top1,Left1-Bottom1,Right1=Offset1;Top2,Left2-Bottom2,Right2=Offset2;". Each "Top,Left-Bottom,Right=Offset" + * represents the coordinate information and quantization parameter of one ROI. Each "=Offset" in the string + * can be omitted, like "Top1,Left1-Bottom1,Right1;Top2,Left2-Bottom2,Right2=Offset2;", the encoder + * will use the default quantization parameter to perform the ROI encoding on the first ROI and + * use Offset2 on the second ROI. + * + * This is an optional key that applies only to video encoder. + * It is used in running process and is set with each frame. + * In surface mode, it is used in {@link OH_VideoEncoder_OnNeedInputParameter}. + * In buffer mode, it is configured via {@link OH_AVBuffer_SetParameter}. + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 20 + */ +extern const char *OH_MD_KEY_VIDEO_ENCODER_ROI_PARAMS; /** * @brief Media type. -- Gitee From 0edf7f7e081cb20b1f21e8bf43d03e8715efdd83 Mon Sep 17 00:00:00 2001 From: Jarvis Date: Thu, 29 May 2025 20:52:21 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9json?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E6=B7=BB=E5=8A=A0ROI=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=9B=B8=E5=85=B3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jarvis --- .../av_codec/codec_base/libnative_media_codecbase.ndk.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json b/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json index 8077a4119..b985b076e 100644 --- a/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json +++ b/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json @@ -423,6 +423,10 @@ "first_introduced": "18", "name": "OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_MAX_COUNT" }, + { + "first_introduced": "20", + "name": "OH_MD_KEY_VIDEO_ENCODER_ROI_PARAMS" + }, { "first_introduced": "10", "name": "OH_AVCodec_GetCapability" -- Gitee From a36498824a1d2bc3d6a51879d7ed0a7ecb36a7d9 Mon Sep 17 00:00:00 2001 From: Yanghaolong Date: Thu, 29 May 2025 13:31:48 +0000 Subject: [PATCH 3/5] add sqr to json Signed-off-by: Yanghaolong --- .../codec_base/libnative_media_codecbase.ndk.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json b/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json index b985b076e..5da23bba5 100644 --- a/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json +++ b/multimedia/av_codec/codec_base/libnative_media_codecbase.ndk.json @@ -427,6 +427,14 @@ "first_introduced": "20", "name": "OH_MD_KEY_VIDEO_ENCODER_ROI_PARAMS" }, + { + "first_introduced": "20", + "name": "OH_MD_KEY_SQR_FACTOR" + }, + { + "first_introduced": "20", + "name": "OH_MD_KEY_MAX_BITRATE" + }, { "first_introduced": "10", "name": "OH_AVCodec_GetCapability" -- Gitee From 7cb82420f185af539a89913d3c0ab0c5265014e6 Mon Sep 17 00:00:00 2001 From: Yanghaolong Date: Thu, 29 May 2025 13:32:56 +0000 Subject: [PATCH 4/5] add sqr bitrate mode Signed-off-by: Yanghaolong --- multimedia/av_codec/native_avcodec_base.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/multimedia/av_codec/native_avcodec_base.h b/multimedia/av_codec/native_avcodec_base.h index 363901292..3069712f6 100644 --- a/multimedia/av_codec/native_avcodec_base.h +++ b/multimedia/av_codec/native_avcodec_base.h @@ -1047,6 +1047,22 @@ extern const char *OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_MAX_COUNT; * @since 20 */ extern const char *OH_MD_KEY_VIDEO_ENCODER_ROI_PARAMS; +/** + * @brief Key for the desired encoding quality, value type is int32_t, this key is only + * supported for encoders that are configured in Stable Quality RateControl, the higher + * values generally result in more efficient(smaller-sized) encoding. + * + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 20 + */ +extern const char *OH_MD_KEY_SQR_FACTOR; +/** + * @brief Key for maximum bitrate, value type is int64_t. + * + * @syscap SystemCapability.Multimedia.Media.CodecBase + * @since 20 + */ +extern const char *OH_MD_KEY_MAX_BITRATE; /** * @brief Media type. -- Gitee From 4bcce198e365e43a6483525fa8527b6ae687c7f9 Mon Sep 17 00:00:00 2001 From: Yanghaolong Date: Thu, 29 May 2025 13:33:58 +0000 Subject: [PATCH 5/5] add sqr bitrate mode Signed-off-by: Yanghaolong --- multimedia/av_codec/native_avcodec_base.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/multimedia/av_codec/native_avcodec_base.h b/multimedia/av_codec/native_avcodec_base.h index 3069712f6..705b0d651 100644 --- a/multimedia/av_codec/native_avcodec_base.h +++ b/multimedia/av_codec/native_avcodec_base.h @@ -1594,7 +1594,11 @@ typedef enum OH_BitrateMode { /** Variable Bit rate mode. */ BITRATE_MODE_VBR = 1, /** Constant Quality mode. */ - BITRATE_MODE_CQ = 2 + BITRATE_MODE_CQ = 2, + /** Stable Quality Rate Control mode. + * @since 20 + */ + BITRATE_MODE_SQR = 3 } OH_BitrateMode; #ifdef __cplusplus -- Gitee