On Mon, Sep 2, 2019 at 9:53 AM Limin Wang <[email protected]> wrote:

> On Tue, Aug 27, 2019 at 10:56:42AM -0400, Richard Kern wrote:
>
> > I’ll look at it this weekend.
> ping
>
>
It shows error kVTParameterErr when using the software encoder:

Error setting profile/level property: -12902

I used the following command for testing: ffmpeg -i "$mediaFile" -c:v
h264_videotoolbox -profile:v extended -y -require_sw 1 h264.ts


It defaults to High profile in the output.



The hardware encoder also fails to encode using Extended profile, but the
OS complains the parameter isn't supported. It also defaults to High
profile in the output, which seems like a good default.



Can you try both hardware and software encodes on your end? If you're
seeing Extended profile using ffprobe on either output file, I'll push the
changes.



>
> > > On Aug 27, 2019, at 10:40 AM, Limin Wang <[email protected]>
> wrote:
> > >
> > >
> > > ping the patchset.
> > >
> > >> On Tue, Aug 20, 2019 at 07:04:29PM +0800, [email protected]
> wrote:
> > >> From: Limin Wang <[email protected]>
> > >>
> > >> Signed-off-by: Limin Wang <[email protected]>
> > >> ---
> > >> libavcodec/videotoolboxenc.c | 14 ++++++++++++++
> > >> 1 file changed, 14 insertions(+)
> > >>
> > >> diff --git a/libavcodec/videotoolboxenc.c
> b/libavcodec/videotoolboxenc.c
> > >> index d76bb7f646..b16b056f6c 100644
> > >> --- a/libavcodec/videotoolboxenc.c
> > >> +++ b/libavcodec/videotoolboxenc.c
> > >> @@ -80,6 +80,8 @@ static struct{
> > >>     CFStringRef kVTProfileLevel_H264_High_5_1;
> > >>     CFStringRef kVTProfileLevel_H264_High_5_2;
> > >>     CFStringRef kVTProfileLevel_H264_High_AutoLevel;
> > >> +    CFStringRef kVTProfileLevel_H264_Extended_5_0;
> > >> +    CFStringRef kVTProfileLevel_H264_Extended_AutoLevel;
> > >>
> > >>     CFStringRef kVTProfileLevel_HEVC_Main_AutoLevel;
> > >>     CFStringRef kVTProfileLevel_HEVC_Main10_AutoLevel;
> > >> @@ -137,6 +139,8 @@ static void loadVTEncSymbols(){
> > >>     GET_SYM(kVTProfileLevel_H264_High_5_1,           "H264_High_5_1");
> > >>     GET_SYM(kVTProfileLevel_H264_High_5_2, "H264_High_5_2");
> > >>     GET_SYM(kVTProfileLevel_H264_High_AutoLevel,
>  "H264_High_AutoLevel");
> > >> +    GET_SYM(kVTProfileLevel_H264_Extended_5_0,
>  "H264_Extended_5_0");
> > >> +    GET_SYM(kVTProfileLevel_H264_Extended_AutoLevel,
> "H264_Extended_AutoLevel");
> > >>
> > >>     GET_SYM(kVTProfileLevel_HEVC_Main_AutoLevel,
>  "HEVC_Main_AutoLevel");
> > >>     GET_SYM(kVTProfileLevel_HEVC_Main10_AutoLevel,
>  "HEVC_Main10_AutoLevel");
> > >> @@ -154,6 +158,7 @@ typedef enum VT_H264Profile {
> > >>     H264_PROF_BASELINE,
> > >>     H264_PROF_MAIN,
> > >>     H264_PROF_HIGH,
> > >> +    H264_PROF_EXTENDED,
> > >>     H264_PROF_COUNT
> > >> } VT_H264Profile;
> > >>
> > >> @@ -704,6 +709,14 @@ static bool
> get_vt_h264_profile_level(AVCodecContext *avctx,
> > >>
>  compat_keys.kVTProfileLevel_H264_High_5_2;       break;
> > >>             }
> > >>             break;
> > >> +        case H264_PROF_EXTENDED:
> > >> +            switch (vtctx->level) {
> > >> +                case  0: *profile_level_val =
> > >> +
> compat_keys.kVTProfileLevel_H264_Extended_AutoLevel; break;
> > >> +                case 50: *profile_level_val =
> > >> +
> compat_keys.kVTProfileLevel_H264_Extended_5_0;       break;
> > >> +            }
> > >> +            break;
> > >>     }
> > >>
> > >>     if (!*profile_level_val) {
> > >> @@ -2531,6 +2544,7 @@ static const AVOption h264_options[] = {
> > >>     { "baseline", "Baseline Profile", 0, AV_OPT_TYPE_CONST, { .i64 =
> H264_PROF_BASELINE }, INT_MIN, INT_MAX, VE, "profile" },
> > >>     { "main",     "Main Profile",     0, AV_OPT_TYPE_CONST, { .i64 =
> H264_PROF_MAIN     }, INT_MIN, INT_MAX, VE, "profile" },
> > >>     { "high",     "High Profile",     0, AV_OPT_TYPE_CONST, { .i64 =
> H264_PROF_HIGH     }, INT_MIN, INT_MAX, VE, "profile" },
> > >> +    { "extended", "Extend Profile",   0, AV_OPT_TYPE_CONST, { .i64 =
> H264_PROF_EXTENDED }, INT_MIN, INT_MAX, VE, "profile" },
> > >>
> > >>     { "level", "Level", OFFSET(level), AV_OPT_TYPE_INT, { .i64 = 0 },
> 0, 52, VE, "level" },
> > >>     { "1.3", "Level 1.3, only available with Baseline Profile", 0,
> AV_OPT_TYPE_CONST, { .i64 = 13 }, INT_MIN, INT_MAX, VE, "level" },
> > >> --
> > >> 2.21.0
> > >>
> > > _______________________________________________
> > > ffmpeg-devel mailing list
> > > [email protected]
> > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > >
> > > To unsubscribe, visit link above, or email
> > > [email protected] with subject "unsubscribe".
> > _______________________________________________
> > ffmpeg-devel mailing list
> > [email protected]
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > [email protected] with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> [email protected]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> [email protected] with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to