* [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding
@ 2023-05-18 10:15 xufuji456
2023-05-18 11:36 ` James Almer
0 siblings, 1 reply; 10+ messages in thread
From: xufuji456 @ 2023-05-18 10:15 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: xufuji456
Signed-off-by: xufuji456 <839789740@qq.com>
---
libavcodec/videotoolboxenc.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index c6f22723d6..88334f1851 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -251,6 +251,8 @@ typedef struct VTEncContext {
/* can't be bool type since AVOption will access it as int */
int a53_cc;
+
+ int low_latency;
} VTEncContext;
static int vtenc_populate_extradata(AVCodecContext *avctx,
@@ -1441,6 +1443,16 @@ static int vtenc_create_encoder(AVCodecContext *avctx,
}
}
+ if (vtctx->low_latency) {
+ status = VTSessionSetProperty(vtctx->session,
+ 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".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding
2023-05-18 10:15 [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding xufuji456
@ 2023-05-18 11:36 ` James Almer
2023-05-19 1:57 ` =?gb18030?B?0Oy4o8Kh?=
0 siblings, 1 reply; 10+ messages in thread
From: James Almer @ 2023-05-18 11:36 UTC (permalink / raw)
To: ffmpeg-devel
On 5/18/2023 7:15 AM, xufuji456 wrote:
> Signed-off-by: xufuji456 <839789740@qq.com>
> ---
> libavcodec/videotoolboxenc.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
> index c6f22723d6..88334f1851 100644
> --- a/libavcodec/videotoolboxenc.c
> +++ b/libavcodec/videotoolboxenc.c
> @@ -251,6 +251,8 @@ typedef struct VTEncContext {
>
> /* can't be bool type since AVOption will access it as int */
> int a53_cc;
> +
> + int low_latency;
> } VTEncContext;
>
> static int vtenc_populate_extradata(AVCodecContext *avctx,
> @@ -1441,6 +1443,16 @@ static int vtenc_create_encoder(AVCodecContext *avctx,
> }
> }
>
> + if (vtctx->low_latency) {
Nothing seems to set this?
Also, you should check the existing AV_CODEC_FLAG_LOW_DELAY flag instead.
> + status = VTSessionSetProperty(vtctx->session,
> + 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);
_______________________________________________
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] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding
2023-05-18 11:36 ` James Almer
@ 2023-05-19 1:57 ` =?gb18030?B?0Oy4o8Kh?=
0 siblings, 0 replies; 10+ messages in thread
From: =?gb18030?B?0Oy4o8Kh?= @ 2023-05-19 1:57 UTC (permalink / raw)
To: =?gb18030?B?RkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVz?=
Cc: =?gb18030?B?amFtcmlhbA==?=
Thank you for your review, James.
I will use AV_CODEC_FLAG_LOW_DELAY flag instead, and submit a new patch.
------------------ Original ------------------
From: "FFmpeg development discussions and patches" <jamrial@gmail.com>;
Date: Thu, May 18, 2023 07:36 PM
To: "ffmpeg-devel"<ffmpeg-devel@ffmpeg.org>;
Subject: Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding
On 5/18/2023 7:15 AM, xufuji456 wrote:
> Signed-off-by: xufuji456 <839789740@qq.com>
> ---
> libavcodec/videotoolboxenc.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
> index c6f22723d6..88334f1851 100644
> --- a/libavcodec/videotoolboxenc.c
> +++ b/libavcodec/videotoolboxenc.c
> @@ -251,6 +251,8 @@ typedef struct VTEncContext {
>
> /* can't be bool type since AVOption will access it as int */
> int a53_cc;
> +
> + int low_latency;
> } VTEncContext;
>
> static int vtenc_populate_extradata(AVCodecContext *avctx,
> @@ -1441,6 +1443,16 @@ static int vtenc_create_encoder(AVCodecContext *avctx,
> }
> }
>
> + if (vtctx->low_latency) {
Nothing seems to set this?
Also, you should check the existing AV_CODEC_FLAG_LOW_DELAY flag instead.
> + status = VTSessionSetProperty(vtctx->session,
> + 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);
_______________________________________________
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".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding
2023-05-20 15:00 ` Rick Kern
@ 2023-05-20 16:54 ` Zhao Zhili
0 siblings, 0 replies; 10+ messages in thread
From: Zhao Zhili @ 2023-05-20 16:54 UTC (permalink / raw)
To: 'FFmpeg development discussions and patches'
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Rick Kern
> Sent: 2023年5月20日 23:01
> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding
>
> On Fri, May 19, 2023 at 2:06 PM Zhao Zhili <quinkblack@foxmail.com> wrote:
>
> >
> > > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Rick
> > Kern
> > > Sent: 2023年5月19日 21:37
> > > To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> > > Cc: zhilizhao(赵志立) <quinkblack@foxmail.com>
> > > Subject: Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add
> > low-latency encoding
> > >
> > > On Fri, May 19, 2023 at 1:56 AM 徐福隆 <839789740@qq.com> wrote:
> > >
> > > > Thank you for your review, and point out the details.
> > > > Actually, I have also considered this issue.
> > > > I see that some keys are used directly, some are used by compatibility.
> > > >
> > >
> > > The compat_keys are used for symbols that might not exist. For constants
> > > available in the earliest version of VideoToolbox, compat_keys doesn't
> > need
> > > to be used.
> >
> > I curious to know what's the minimum supported version of macOS which
> > doesn't need dynamic loading symbols. I can't find such information. The
> > question
> > applies to other OS too. It's not clear from configure, and I can't find
> > the relevant
> > documentation.
> >
> VideoToolbox was released in MacOS 10.8 and iOS 8.0. I'll update the
> compat_keys docs with this info.
Maybe it's off-topic, but besides than the first version of MacOS which has
videotoolbox supports, I'm considering the strategy from FFmpeg's side: how
to decide when to bump the minimum supported version of OS, like
"[RFC] [Vote] Drop Windows XP support".
https://ffmpeg.org/pipermail/ffmpeg-devel/2017-December/222354.html
I'm not saying it's time to bump the required version of macOS now, but as
time goes by, we might need to do that in the future for other OS, to relief the
maintaining burden.
>
>
> > >
> > > Your patch looks good - I'll push it shortly.
> > >
> > >
> > > > I will use compat_key instead, and submit a new patch.
> > > >
> > > >
> > > > ------------------ 原始邮件 ------------------
> > > > 发件人:
> > > > ""zhilizhao(赵志立)""
> > > >
> > > > <quinkblack@foxmail.com>;
> > > > 发送时间: 2023年5月19日(星期五) 中午11:34
> > > > 收件人: "FFmpeg development discussions and patches"<
> > > > ffmpeg-devel@ffmpeg.org>;
> > > > 抄送: "徐福隆"<839789740@qq.com>;
> > > > 主题: Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add
> > > > low-latency encoding
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > > On May 19, 2023, at 11:17, xufuji456 <839789740@qq.com> wrote:
> > > > >
> > > > > 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 | 11 +++++++++++
> > > > > 1 file changed, 11 insertions(+)
> > > > >
> > > > > diff --git a/libavcodec/videotoolboxenc.c
> > > > b/libavcodec/videotoolboxenc.c
> > > > > index c6f22723d6..ae1ef32b2d 100644
> > > > > --- a/libavcodec/videotoolboxenc.c
> > > > > +++ b/libavcodec/videotoolboxenc.c
> > > > > @@ -1441,6 +1441,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,
> > > > >
> > > >
> > >
> >
> +  
> > >
> > ;
> > > > kVTVideoEncoderSpecification_EnableLowLatencyRateControl,
> > > > >
> > > >
> > >
> >
> +  
> > >
> > ;
> > > > kCFBooleanTrue);
> > > >
> > > > Please use compat_keys in case of
> > > > kVTVideoEncoderSpecification_EnableLowLatencyRateControl
> > > > isn’t available.
> > > >
> > > > > +
> > > > > + 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".
> > > > _______________________________________________
> > > > 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".
_______________________________________________
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] 10+ messages in thread
* Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding
2023-05-19 18:05 ` Zhao Zhili
@ 2023-05-20 15:00 ` Rick Kern
2023-05-20 16:54 ` Zhao Zhili
0 siblings, 1 reply; 10+ messages in thread
From: Rick Kern @ 2023-05-20 15:00 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Fri, May 19, 2023 at 2:06 PM Zhao Zhili <quinkblack@foxmail.com> wrote:
>
> > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Rick
> Kern
> > Sent: 2023年5月19日 21:37
> > To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> > Cc: zhilizhao(赵志立) <quinkblack@foxmail.com>
> > Subject: Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add
> low-latency encoding
> >
> > On Fri, May 19, 2023 at 1:56 AM 徐福隆 <839789740@qq.com> wrote:
> >
> > > Thank you for your review, and point out the details.
> > > Actually, I have also considered this issue.
> > > I see that some keys are used directly, some are used by compatibility.
> > >
> >
> > The compat_keys are used for symbols that might not exist. For constants
> > available in the earliest version of VideoToolbox, compat_keys doesn't
> need
> > to be used.
>
> I curious to know what's the minimum supported version of macOS which
> doesn't need dynamic loading symbols. I can't find such information. The
> question
> applies to other OS too. It's not clear from configure, and I can't find
> the relevant
> documentation.
>
VideoToolbox was released in MacOS 10.8 and iOS 8.0. I'll update the
compat_keys docs with this info.
> >
> > Your patch looks good - I'll push it shortly.
> >
> >
> > > I will use compat_key instead, and submit a new patch.
> > >
> > >
> > > ------------------ 原始邮件 ------------------
> > > 发件人:
> > > ""zhilizhao(赵志立)""
> > >
> > > <quinkblack@foxmail.com>;
> > > 发送时间: 2023年5月19日(星期五) 中午11:34
> > > 收件人: "FFmpeg development discussions and patches"<
> > > ffmpeg-devel@ffmpeg.org>;
> > > 抄送: "徐福隆"<839789740@qq.com>;
> > > 主题: Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add
> > > low-latency encoding
> > >
> > >
> > >
> > >
> > >
> > > > On May 19, 2023, at 11:17, xufuji456 <839789740@qq.com> wrote:
> > > >
> > > > 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 | 11 +++++++++++
> > > > 1 file changed, 11 insertions(+)
> > > >
> > > > diff --git a/libavcodec/videotoolboxenc.c
> > > b/libavcodec/videotoolboxenc.c
> > > > index c6f22723d6..ae1ef32b2d 100644
> > > > --- a/libavcodec/videotoolboxenc.c
> > > > +++ b/libavcodec/videotoolboxenc.c
> > > > @@ -1441,6 +1441,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,
> > > >
> > >
> >
> +  
> >
> ;
> > > kVTVideoEncoderSpecification_EnableLowLatencyRateControl,
> > > >
> > >
> >
> +  
> >
> ;
> > > kCFBooleanTrue);
> > >
> > > Please use compat_keys in case of
> > > kVTVideoEncoderSpecification_EnableLowLatencyRateControl
> > > isn’t available.
> > >
> > > > +
> > > > + 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".
> > > _______________________________________________
> > > 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".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding
2023-05-19 13:36 ` [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding Rick Kern
@ 2023-05-19 18:05 ` Zhao Zhili
2023-05-20 15:00 ` Rick Kern
0 siblings, 1 reply; 10+ messages in thread
From: Zhao Zhili @ 2023-05-19 18:05 UTC (permalink / raw)
To: 'FFmpeg development discussions and patches'
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Rick Kern
> Sent: 2023年5月19日 21:37
> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> Cc: zhilizhao(赵志立) <quinkblack@foxmail.com>
> Subject: Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding
>
> On Fri, May 19, 2023 at 1:56 AM 徐福隆 <839789740@qq.com> wrote:
>
> > Thank you for your review, and point out the details.
> > Actually, I have also considered this issue.
> > I see that some keys are used directly, some are used by compatibility.
> >
>
> The compat_keys are used for symbols that might not exist. For constants
> available in the earliest version of VideoToolbox, compat_keys doesn't need
> to be used.
I curious to know what's the minimum supported version of macOS which
doesn't need dynamic loading symbols. I can't find such information. The question
applies to other OS too. It's not clear from configure, and I can't find the relevant
documentation.
>
> Your patch looks good - I'll push it shortly.
>
>
> > I will use compat_key instead, and submit a new patch.
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人:
> > ""zhilizhao(赵志立)""
> >
> > <quinkblack@foxmail.com>;
> > 发送时间: 2023年5月19日(星期五) 中午11:34
> > 收件人: "FFmpeg development discussions and patches"<
> > ffmpeg-devel@ffmpeg.org>;
> > 抄送: "徐福隆"<839789740@qq.com>;
> > 主题: Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add
> > low-latency encoding
> >
> >
> >
> >
> >
> > > On May 19, 2023, at 11:17, xufuji456 <839789740@qq.com> wrote:
> > >
> > > 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 | 11 +++++++++++
> > > 1 file changed, 11 insertions(+)
> > >
> > > diff --git a/libavcodec/videotoolboxenc.c
> > b/libavcodec/videotoolboxenc.c
> > > index c6f22723d6..ae1ef32b2d 100644
> > > --- a/libavcodec/videotoolboxenc.c
> > > +++ b/libavcodec/videotoolboxenc.c
> > > @@ -1441,6 +1441,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,
> > >
> >
> +  
> ;
> > kVTVideoEncoderSpecification_EnableLowLatencyRateControl,
> > >
> >
> +  
> ;
> > kCFBooleanTrue);
> >
> > Please use compat_keys in case of
> > kVTVideoEncoderSpecification_EnableLowLatencyRateControl
> > isn’t available.
> >
> > > +
> > > + 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".
> > _______________________________________________
> > 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".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding
2023-05-19 5:55 ` [FFmpeg-devel] =?gb18030?b?u9i4tKO6ICBbUEFUQ0hdIGF2Y29kZWMvdmlk?= =?gb18030?q?eotoolboxenc=3A_add_low-latency_encoding?= =?gb18030?B?0Oy4o8Kh?=
@ 2023-05-19 13:36 ` Rick Kern
2023-05-19 18:05 ` Zhao Zhili
0 siblings, 1 reply; 10+ messages in thread
From: Rick Kern @ 2023-05-19 13:36 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Cc: zhilizhao(赵志立)
On Fri, May 19, 2023 at 1:56 AM 徐福隆 <839789740@qq.com> wrote:
> Thank you for your review, and point out the details.
> Actually, I have also considered this issue.
> I see that some keys are used directly, some are used by compatibility.
>
The compat_keys are used for symbols that might not exist. For constants
available in the earliest version of VideoToolbox, compat_keys doesn't need
to be used.
Your patch looks good - I'll push it shortly.
> I will use compat_key instead, and submit a new patch.
>
>
> ------------------ 原始邮件 ------------------
> 发件人:
> ""zhilizhao(赵志立)""
>
> <quinkblack@foxmail.com>;
> 发送时间: 2023年5月19日(星期五) 中午11:34
> 收件人: "FFmpeg development discussions and patches"<
> ffmpeg-devel@ffmpeg.org>;
> 抄送: "徐福隆"<839789740@qq.com>;
> 主题: Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add
> low-latency encoding
>
>
>
>
>
> > On May 19, 2023, at 11:17, xufuji456 <839789740@qq.com> wrote:
> >
> > 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 | 11 +++++++++++
> > 1 file changed, 11 insertions(+)
> >
> > diff --git a/libavcodec/videotoolboxenc.c
> b/libavcodec/videotoolboxenc.c
> > index c6f22723d6..ae1ef32b2d 100644
> > --- a/libavcodec/videotoolboxenc.c
> > +++ b/libavcodec/videotoolboxenc.c
> > @@ -1441,6 +1441,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,
> >
> +
> kVTVideoEncoderSpecification_EnableLowLatencyRateControl,
> >
> +
> kCFBooleanTrue);
>
> Please use compat_keys in case of
> kVTVideoEncoderSpecification_EnableLowLatencyRateControl
> isn’t available.
>
> > +
> > + 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".
> _______________________________________________
> 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".
^ permalink raw reply [flat|nested] 10+ messages in thread
* [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding
@ 2023-05-19 6:05 xufuji456
0 siblings, 0 replies; 10+ messages in thread
From: xufuji456 @ 2023-05-19 6:05 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: xufuji456
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".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding
2023-05-19 3:17 xufuji456
@ 2023-05-19 3:34 ` "zhilizhao(赵志立)"
2023-05-19 5:55 ` [FFmpeg-devel] =?gb18030?b?u9i4tKO6ICBbUEFUQ0hdIGF2Y29kZWMvdmlk?= =?gb18030?q?eotoolboxenc=3A_add_low-latency_encoding?= =?gb18030?B?0Oy4o8Kh?=
0 siblings, 1 reply; 10+ messages in thread
From: "zhilizhao(赵志立)" @ 2023-05-19 3:34 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: 徐福隆
> On May 19, 2023, at 11:17, xufuji456 <839789740@qq.com> wrote:
>
> 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 | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
> index c6f22723d6..ae1ef32b2d 100644
> --- a/libavcodec/videotoolboxenc.c
> +++ b/libavcodec/videotoolboxenc.c
> @@ -1441,6 +1441,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,
> + kVTVideoEncoderSpecification_EnableLowLatencyRateControl,
> + kCFBooleanTrue);
Please use compat_keys in case of kVTVideoEncoderSpecification_EnableLowLatencyRateControl
isn’t available.
> +
> + 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".
_______________________________________________
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] 10+ messages in thread
* [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding
@ 2023-05-19 3:17 xufuji456
2023-05-19 3:34 ` "zhilizhao(赵志立)"
0 siblings, 1 reply; 10+ messages in thread
From: xufuji456 @ 2023-05-19 3:17 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: xufuji456
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 | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index c6f22723d6..ae1ef32b2d 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -1441,6 +1441,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,
+ 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".
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2023-05-20 16:55 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-18 10:15 [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding xufuji456
2023-05-18 11:36 ` James Almer
2023-05-19 1:57 ` =?gb18030?B?0Oy4o8Kh?=
2023-05-19 3:17 xufuji456
2023-05-19 3:34 ` "zhilizhao(赵志立)"
2023-05-19 5:55 ` [FFmpeg-devel] =?gb18030?b?u9i4tKO6ICBbUEFUQ0hdIGF2Y29kZWMvdmlk?= =?gb18030?q?eotoolboxenc=3A_add_low-latency_encoding?= =?gb18030?B?0Oy4o8Kh?=
2023-05-19 13:36 ` [FFmpeg-devel] 回复: [PATCH] avcodec/videotoolboxenc: add low-latency encoding Rick Kern
2023-05-19 18:05 ` Zhao Zhili
2023-05-20 15:00 ` Rick Kern
2023-05-20 16:54 ` Zhao Zhili
2023-05-19 6:05 [FFmpeg-devel] " xufuji456
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