From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E04FE4456E for ; Fri, 19 May 2023 06:05:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 57F8C68C10E; Fri, 19 May 2023 09:05:29 +0300 (EEST) Received: from out162-62-57-137.mail.qq.com (out162-62-57-137.mail.qq.com [162.62.57.137]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8FAD168BAC7 for ; Fri, 19 May 2023 09:05:22 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1684476318; bh=2o4THCbVHlyifzlRlGxrC6teFyNRrfLnRfL5qbH4QYg=; h=From:To:Cc:Subject:Date; b=adxrf5SuRNhFN3FzCQbWxDdPllVrhiXwD9PdPBTiAjUgnTGCFo/440cAZstFXjG40 f4BhdA0LP8u14vqpuNi+VfRi+7Z/fWeKy8QazAtsXcyUBST3jub/B8uEe0blVDmQLl TS61aZZirx1vafPZ9TNW8mof311jXLcmcE7NunW0= Received: from localhost.localdomain ([113.66.217.3]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 151392ED; Fri, 19 May 2023 14:05:17 +0800 X-QQ-mid: xmsmtpt1684476317tdf2oa1zg Message-ID: X-QQ-XMAILINFO: NQR8mRxMnur95VvYuZwiG5bCfr3rqPlpnA5bImK2cu4CHqpj3CClThXE5sqNcp lQUQJZQocLmusS9vpsfD4DMm4efTm/2ZQYTFpptxVar5mAqiJ0DNyaWSRIjYGa33b5nOMcsUx1Xt EtV0DA8NGFwue7AEV4YtD6IqUE3ow4daNpx0NcC1GcwnQDWLI5yDskXP02DPU6XBFPBGWBsAPrLG zyKiJppj49ZQ+uhNfVC/W7RV3NR3OytpuOFIazX/Q0JzwgDKXXmMiE1fSh7cCMFYqPh8T4GmpU1o IDsUEuxa6EUxE2igT7bYC2akpll+fGP7vOVkx92MCsbgQmcq1FdRVS5sjIL8MZlqGTKVKSGkRspj 00sSJ7sN4vb3qE7zyoIzkDYWYiCHt1/o9XQwzDAAfbFJz3noIalHVUIp0o44dCYrQTd+UhjrC2Ye zJ8CB/UFQK5rzkbOo5rhOwwY+ylkC4QMX5gw+LjoZCloRNo5ioVJdwiPhVe+gYBm7ETsnMCX6be/ T1WKuCeqIgFSPPr/ny13rFvTDIJF6kGKkqmhUNuyo4ElZwTvxK+FGZxwgMfxFPz6b85S6nwx58JE efcH8YCs6pPBZ74ZP8/x02Z3orMGqskrE0HzVl6DO6UClIx5hM+0qmSVYw7RxiqHZKkIk1DMIDdG aGFL6+PP8izRzlnKNdyqQxsIiqYtw6qBF62720G603zUoTDoNc7yHGEhPtRUzZSHx3nh3A4UUgzx uv6uMLV0GLOPvsOrEGgkyDFg1z8X2843tSWYYKmDTg62KF8xa1UI45uFHHgx85xH3IH6PEdBMMDa jMgTDPrj/d/Sl+CY1knr93iAGdlevgNTjFVIFTQxbCB0j/c4Iwl5MAzlpWN8Ghw1qH6UxOSLUhYW 2Mo9GfvJnQ7yVLr48ztGsKME8xWXjtcHa7uSeIhgYGqK1kQsoVR9y7KuJXH9fxQfV3lE9ssI31L7 l2g4xDu1dxToH0mqeu0UWopFfwI9fQB4IdimaYLA9jjYIyOwI6UA6AbNrWoJTTc8Ql3OvpVL7lkz 0PpJ2KF5tIYkl6zzU4QDimCNUc4fDVrcS1pSPtDw== From: xufuji456 <839789740@qq.com> To: ffmpeg-devel@ffmpeg.org Date: Fri, 19 May 2023 14:05:14 +0800 X-OQ-MSGID: <20230519060514.23106-1-839789740@qq.com> X-Mailer: git-send-email 2.32.0 (Apple Git-132) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: xufuji456 <839789740@qq.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: When using low-latency mode, it eliminates frame reordering and follows a one-in-one-out encoding mode Signed-off-by: xufuji456 <839789740@qq.com> --- libavcodec/videotoolboxenc.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index c6f22723d6..e91d17c132 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -105,6 +105,7 @@ static struct{ CFStringRef kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder; CFStringRef kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder; + CFStringRef kVTVideoEncoderSpecification_EnableLowLatencyRateControl; getParameterSetAtIndex CMVideoFormatDescriptionGetHEVCParameterSetAtIndex; } compat_keys; @@ -171,6 +172,8 @@ static void loadVTEncSymbols(void){ "EnableHardwareAcceleratedVideoEncoder"); GET_SYM(kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder, "RequireHardwareAcceleratedVideoEncoder"); + GET_SYM(kVTVideoEncoderSpecification_EnableLowLatencyRateControl, + "EnableLowLatencyRateControl"); } typedef enum VT_H264Profile { @@ -1441,6 +1444,17 @@ static int vtenc_create_encoder(AVCodecContext *avctx, } } + // low-latency mode: eliminate frame reordering, follow a one-in-one-out encoding mode + if ((avctx->flags & AV_CODEC_FLAG_LOW_DELAY) && avctx->codec_id == AV_CODEC_ID_H264) { + status = VTSessionSetProperty(vtctx->session, + compat_keys.kVTVideoEncoderSpecification_EnableLowLatencyRateControl, + kCFBooleanTrue); + + if (status) { + av_log(avctx, AV_LOG_ERROR, "Error setting low latency property: %d\n", status); + } + } + status = VTCompressionSessionPrepareToEncodeFrames(vtctx->session); if (status) { av_log(avctx, AV_LOG_ERROR, "Error: cannot prepare encoder: %d\n", status); -- 2.32.0 (Apple Git-132) _______________________________________________ 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".