media: mediatek: vcodec: Skip unsupported h264 encoder profile

Message ID 20220926093501.26466-1-irui.wang@mediatek.com (mailing list archive)
State Accepted
Delegated to: Hans Verkuil
Headers
Series media: mediatek: vcodec: Skip unsupported h264 encoder profile |

Commit Message

Irui Wang Sept. 26, 2022, 9:35 a.m. UTC
  The encoder driver support h264 baseline, main, high encoder
profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
the unsupported profile.

get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
        0: Baseline
        2: Main
        4: High

Signed-off-by: Irui Wang <irui.wang@mediatek.com>
---
 drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
  

Comments

Allen-KH Cheng Sept. 28, 2022, 1:38 p.m. UTC | #1
Hi Irui,

Tested-by: Allen-KH Cheng <allen-kh.cheng@mediatek.com>

Tested for CTS cases on the mt8186 corsola board.

Thanks,
Allen

On Mon, 2022-09-26 at 17:35 +0800, Irui Wang wrote:
> The encoder driver support h264 baseline, main, high encoder
> profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
> the unsupported profile.
> 
> get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
> h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
>         0: Baseline
>         2: Main
>         4: High
> 
> Signed-off-by: Irui Wang <irui.wang@mediatek.com>
> ---
>  drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> index d810a78dde51..d65800a3b89d 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> @@ -1397,7 +1397,10 @@ int mtk_vcodec_enc_ctrls_setup(struct
> mtk_vcodec_ctx *ctx)
>  			0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
>  	v4l2_ctrl_new_std_menu(handler, ops,
> V4L2_CID_MPEG_VIDEO_H264_PROFILE,
>  			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
> -			0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
> +			~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE)
> |
> +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
> +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
> +			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
>  	v4l2_ctrl_new_std_menu(handler, ops,
> V4L2_CID_MPEG_VIDEO_H264_LEVEL,
>  			       h264_max_level,
>  			       0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);
  
Yunfei Dong (董云飞) Sept. 29, 2022, 1:54 a.m. UTC | #2
Hi Irui,

Reviewed-by: Yunfei Dong <yunfei.dong@mediatek.com>

Thanks
Yunfei Dong

On Wed, 2022-09-28 at 21:38 +0800, Allen-KH Cheng (程冠勳) wrote:
> Hi Irui,
> 
> Tested-by: Allen-KH Cheng <allen-kh.cheng@mediatek.com>
> 
> Tested for CTS cases on the mt8186 corsola board.
> 
> Thanks,
> Allen
> 
> On Mon, 2022-09-26 at 17:35 +0800, Irui Wang wrote:
> > The encoder driver support h264 baseline, main, high encoder
> > profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
> > the unsupported profile.
> > 
> > get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
> > h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
> >         0: Baseline
> >         2: Main
> >         4: High
> > 
> > Signed-off-by: Irui Wang <irui.wang@mediatek.com>
> > ---
> >  drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git
> > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > index d810a78dde51..d65800a3b89d 100644
> > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > @@ -1397,7 +1397,10 @@ int mtk_vcodec_enc_ctrls_setup(struct
> > mtk_vcodec_ctx *ctx)
> >  			0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
> >  	v4l2_ctrl_new_std_menu(handler, ops,
> > V4L2_CID_MPEG_VIDEO_H264_PROFILE,
> >  			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
> > -			0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
> > +			~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE)
> > > 
> > 
> > +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
> > +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
> > +			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
> >  	v4l2_ctrl_new_std_menu(handler, ops,
> > V4L2_CID_MPEG_VIDEO_H264_LEVEL,
> >  			       h264_max_level,
> >  			       0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);
  
AngeloGioacchino Del Regno Sept. 29, 2022, 8:32 a.m. UTC | #3
Il 26/09/22 11:35, Irui Wang ha scritto:
> The encoder driver support h264 baseline, main, high encoder
> profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
> the unsupported profile.
> 
> get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
> h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
>          0: Baseline
>          2: Main
>          4: High
> 
> Signed-off-by: Irui Wang <irui.wang@mediatek.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
  
Irui Wang Oct. 19, 2022, 10:07 a.m. UTC | #4
Dear Hans,

Gently ping for this patch, could you help to review this patch?

Thanks
Best Regards

On Mon, 2022-09-26 at 17:35 +0800, Irui Wang wrote:
> The encoder driver support h264 baseline, main, high encoder
> profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
> the unsupported profile.
> 
> get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
> h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
>         0: Baseline
>         2: Main
>         4: High
> 
> Signed-off-by: Irui Wang <irui.wang@mediatek.com>
> ---
>  drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> index d810a78dde51..d65800a3b89d 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> @@ -1397,7 +1397,10 @@ int mtk_vcodec_enc_ctrls_setup(struct
> mtk_vcodec_ctx *ctx)
>  			0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
>  	v4l2_ctrl_new_std_menu(handler, ops,
> V4L2_CID_MPEG_VIDEO_H264_PROFILE,
>  			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
> -			0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
> +			~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE)
> |
> +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
> +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
> +			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
>  	v4l2_ctrl_new_std_menu(handler, ops,
> V4L2_CID_MPEG_VIDEO_H264_LEVEL,
>  			       h264_max_level,
>  			       0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);
  
Irui Wang Nov. 15, 2022, 11:40 a.m. UTC | #5
Dear Hans,

Gently ping for this patch.
May I know this patch current status? It seems is under your reviewing
state?

Thanks
Best Regards

On Mon, 2022-09-26 at 17:35 +0800, Irui Wang wrote:
> The encoder driver support h264 baseline, main, high encoder
> profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
> the unsupported profile.
> 
> get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
> h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
>         0: Baseline
>         2: Main
>         4: High
> 
> Signed-off-by: Irui Wang <irui.wang@mediatek.com>
> ---
>  drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> index d810a78dde51..d65800a3b89d 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> @@ -1397,7 +1397,10 @@ int mtk_vcodec_enc_ctrls_setup(struct
> mtk_vcodec_ctx *ctx)
>  			0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
>  	v4l2_ctrl_new_std_menu(handler, ops,
> V4L2_CID_MPEG_VIDEO_H264_PROFILE,
>  			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
> -			0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
> +			~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE)
> |
> +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
> +			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
> +			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
>  	v4l2_ctrl_new_std_menu(handler, ops,
> V4L2_CID_MPEG_VIDEO_H264_LEVEL,
>  			       h264_max_level,
>  			       0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);
  
Hans Verkuil Nov. 15, 2022, 11:49 a.m. UTC | #6
Hi Irui,

On 11/15/22 12:40, Irui Wang (王瑞) wrote:
> Dear Hans,
> 
> Gently ping for this patch.
> May I know this patch current status? It seems is under your reviewing
> state?

Mauro was on vacation last week, but he said that he hopes to merge
the pending PRs tomorrow. Fingers crossed...

Regards,

	Hans

> 
> Thanks
> Best Regards
> 
> On Mon, 2022-09-26 at 17:35 +0800, Irui Wang wrote:
>> The encoder driver support h264 baseline, main, high encoder
>> profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
>> the unsupported profile.
>> 
>> get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
>> h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
>>         0: Baseline
>>         2: Main
>>         4: High
>> 
>> Signed-off-by: Irui Wang <irui.wang@mediatek.com>
>> ---
>>  drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
>> b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
>> index d810a78dde51..d65800a3b89d 100644
>> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
>> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
>> @@ -1397,7 +1397,10 @@ int mtk_vcodec_enc_ctrls_setup(struct
>> mtk_vcodec_ctx *ctx)
>>  0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
>>  v4l2_ctrl_new_std_menu(handler, ops,
>> V4L2_CID_MPEG_VIDEO_H264_PROFILE,
>>  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
>> -0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
>> +~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE)
>> |
>> +  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
>> +  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
>> +V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
>>  v4l2_ctrl_new_std_menu(handler, ops,
>> V4L2_CID_MPEG_VIDEO_H264_LEVEL,
>>         h264_max_level,
>>         0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);
> 
> ************* MEDIATEK Confidentiality Notice
>  ********************
> The information contained in this e-mail message (including any 
> attachments) may be confidential, proprietary, privileged, or otherwise
> exempt from disclosure under applicable laws. It is intended to be 
> conveyed only to the designated recipient(s). Any use, dissemination, 
> distribution, printing, retaining or copying of this e-mail (including its 
> attachments) by unintended recipient(s) is strictly prohibited and may 
> be unlawful. If you are not an intended recipient of this e-mail, or believe
>  
> that you have received this e-mail in error, please notify the sender 
> immediately (by replying to this e-mail), delete any and all copies of 
> this e-mail (including any attachments) from your system, and do not
> disclose the content of this e-mail to any other person. Thank you!
  
Irui Wang Nov. 15, 2022, 11:57 a.m. UTC | #7
Dear Hans,

Got it, thank you very much.

Best Regards
On Tue, 2022-11-15 at 12:49 +0100, Hans Verkuil wrote:
> Hi Irui,
> 
> On 11/15/22 12:40, Irui Wang (王瑞) wrote:
> > Dear Hans,
> > 
> > Gently ping for this patch.
> > May I know this patch current status? It seems is under your
> > reviewing
> > state?
> 
> Mauro was on vacation last week, but he said that he hopes to merge
> the pending PRs tomorrow. Fingers crossed...
> 
> Regards,
> 
> 	Hans
> 
> > 
> > Thanks
> > Best Regards
> > 
> > On Mon, 2022-09-26 at 17:35 +0800, Irui Wang wrote:
> > > The encoder driver support h264 baseline, main, high encoder
> > > profile, set mask for V4L2_CID_MPEG_VIDEO_H264_PROFILE to skip
> > > the unsupported profile.
> > > 
> > > get supported h264_profile by command: v4l2-ctl -d /dev/videoX -L
> > > h264_profile 0x00990a6b (menu) : min=0 max=4 default=4 value=4
> > >         0: Baseline
> > >         2: Main
> > >         4: High
> > > 
> > > Signed-off-by: Irui Wang <irui.wang@mediatek.com>
> > > ---
> > >  drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c | 5
> > > ++++-
> > >  1 file changed, 4 insertions(+), 1 deletion(-)
> > > 
> > > diff --git
> > > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > > index d810a78dde51..d65800a3b89d 100644
> > > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
> > > @@ -1397,7 +1397,10 @@ int mtk_vcodec_enc_ctrls_setup(struct
> > > mtk_vcodec_ctx *ctx)
> > >  0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
> > >  v4l2_ctrl_new_std_menu(handler, ops,
> > > V4L2_CID_MPEG_VIDEO_H264_PROFILE,
> > >  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
> > > -0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
> > > +~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE)
> > > > 
> > > 
> > > +  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
> > > +  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
> > > +V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
> > >  v4l2_ctrl_new_std_menu(handler, ops,
> > > V4L2_CID_MPEG_VIDEO_H264_LEVEL,
> > >         h264_max_level,
> > >         0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);
> > 
> > ************* MEDIATEK Confidentiality Notice
> >  ********************
> > The information contained in this e-mail message (including any 
> > attachments) may be confidential, proprietary, privileged, or
> > otherwise
> > exempt from disclosure under applicable laws. It is intended to be 
> > conveyed only to the designated recipient(s). Any use,
> > dissemination, 
> > distribution, printing, retaining or copying of this e-mail
> > (including its 
> > attachments) by unintended recipient(s) is strictly prohibited and
> > may 
> > be unlawful. If you are not an intended recipient of this e-mail,
> > or believe
> >  
> > that you have received this e-mail in error, please notify the
> > sender 
> > immediately (by replying to this e-mail), delete any and all copies
> > of 
> > this e-mail (including any attachments) from your system, and do
> > not
> > disclose the content of this e-mail to any other person. Thank you!
> 
>
  

Patch

diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
index d810a78dde51..d65800a3b89d 100644
--- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
+++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc.c
@@ -1397,7 +1397,10 @@  int mtk_vcodec_enc_ctrls_setup(struct mtk_vcodec_ctx *ctx)
 			0, V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE);
 	v4l2_ctrl_new_std_menu(handler, ops, V4L2_CID_MPEG_VIDEO_H264_PROFILE,
 			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
-			0, V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
+			~((1 << V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
+			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
+			  (1 << V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)),
+			V4L2_MPEG_VIDEO_H264_PROFILE_HIGH);
 	v4l2_ctrl_new_std_menu(handler, ops, V4L2_CID_MPEG_VIDEO_H264_LEVEL,
 			       h264_max_level,
 			       0, V4L2_MPEG_VIDEO_H264_LEVEL_4_0);