On Mon, Sep 2, 2019 at 9:53 AM Limin Wang <lance.lmw...@gmail.com> 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 <lance.lmw...@gmail.com> > wrote: > > > > > > > > > ping the patchset. > > > > > >> On Tue, Aug 20, 2019 at 07:04:29PM +0800, lance.lmw...@gmail.com > wrote: > > >> From: Limin Wang <lance.lmw...@gmail.com> > > >> > > >> Signed-off-by: Limin Wang <lance.lmw...@gmail.com> > > >> --- > > >> 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 > > > ffmpeg-devel@ffmpeg.org > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > > > To unsubscribe, visit link above, or email > > > ffmpeg-devel-requ...@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-requ...@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-requ...@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-requ...@ffmpeg.org with subject "unsubscribe".