44 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
						|
From: amazingfate <liujianfeng1994@gmail.com>
 | 
						|
Date: Fri, 21 Jun 2024 16:32:55 +0800
 | 
						|
Subject: media: v4l2-core: Initialize h264 frame_mbs_only_flag as 1
 | 
						|
 | 
						|
---
 | 
						|
 drivers/media/v4l2-core/v4l2-ctrls-core.c | 13 ++++++++++
 | 
						|
 1 file changed, 13 insertions(+)
 | 
						|
 | 
						|
diff --git a/drivers/media/v4l2-core/v4l2-ctrls-core.c b/drivers/media/v4l2-core/v4l2-ctrls-core.c
 | 
						|
index 111111111111..222222222222 100644
 | 
						|
--- a/drivers/media/v4l2-core/v4l2-ctrls-core.c
 | 
						|
+++ b/drivers/media/v4l2-core/v4l2-ctrls-core.c
 | 
						|
@@ -111,6 +111,7 @@ static void std_init_compound(const struct v4l2_ctrl *ctrl, u32 idx,
 | 
						|
 	struct v4l2_ctrl_vp9_frame *p_vp9_frame;
 | 
						|
 	struct v4l2_ctrl_fwht_params *p_fwht_params;
 | 
						|
 	struct v4l2_ctrl_h264_scaling_matrix *p_h264_scaling_matrix;
 | 
						|
+	struct v4l2_ctrl_h264_sps *p_h264_sps;
 | 
						|
 	struct v4l2_ctrl_av1_sequence *p_av1_sequence;
 | 
						|
 	void *p = ptr.p + idx * ctrl->elem_size;
 | 
						|
 
 | 
						|
@@ -179,6 +180,18 @@ static void std_init_compound(const struct v4l2_ctrl *ctrl, u32 idx,
 | 
						|
 		 */
 | 
						|
 		memset(p_h264_scaling_matrix, 16, sizeof(*p_h264_scaling_matrix));
 | 
						|
 		break;
 | 
						|
+	case V4L2_CTRL_TYPE_H264_SPS:
 | 
						|
+		p_h264_sps = p;
 | 
						|
+		/*
 | 
						|
+		 * Without V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY,
 | 
						|
+		 * frame_mbs_only_flag set to 0 will translate to a miniumum
 | 
						|
+		 * height of 32 (see H.264 specification 7-8). Some driver may
 | 
						|
+		 * have a minimum size lower then 32, which would fail
 | 
						|
+		 * validation with the SPS value. Set this flag, so that there
 | 
						|
+		 * is now doubling in the height, allowing a valid default.
 | 
						|
+		*/
 | 
						|
+		p_h264_sps->flags = V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY;
 | 
						|
+		break;
 | 
						|
 	}
 | 
						|
 }
 | 
						|
 
 | 
						|
-- 
 | 
						|
Armbian
 | 
						|
 |