Index | Thread | Search

From:
Kirill A. Korinsky <kirill@korins.ky>
Subject:
sys/uvideo: H264 use correct structures
To:
OpenBSD tech <tech@openbsd.org>
Date:
Sat, 23 Aug 2025 13:59:20 +0200

Download raw body.

Thread
tech@,

my original introducing of h264 had used a wrong types and desynced
fields.

I'd like to clear it up.

Tested on my Elgato, ffmpeg/ffplay consumes h264 stream.

Ok?


Index: sys/dev/usb/uvideo.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uvideo.c,v
diff -u -p -r1.262 uvideo.c
--- sys/dev/usb/uvideo.c	23 Aug 2025 10:52:45 -0000	1.262
+++ sys/dev/usb/uvideo.c	23 Aug 2025 11:55:10 -0000
@@ -3458,6 +3458,18 @@ uvideo_dump_desc_format_h264(struct uvid
 	    UGETW(d->wMaxMBperSecOneResolutionNoScalability));
 	printf("wMaxMBperSecTwoResolutionsNoScalability=%d\n",
 	    UGETW(d->wMaxMBperSecTwoResolutionsNoScalability));
+	printf("wMaxMBperSecThreeResolutionsNoScalability=%d\n",
+	    UGETW(d->wMaxMBperSecThreeResolutionsNoScalability));
+	printf("wMaxMBperSecFourResolutionsNoScalability=%d\n",
+	    UGETW(d->wMaxMBperSecFourResolutionsNoScalability));
+	printf("wMaxMBperSecOneResolutionTemporalScalability=%d\n",
+	    UGETW(d->wMaxMBperSecOneResolutionTemporalScalability));
+	printf("wMaxMBperSecTwoResolutionsTemporalScalablility=%d\n",
+	    UGETW(d->wMaxMBperSecTwoResolutionsTemporalScalablility));
+	printf("wMaxMBperSecThreeResolutionsTemporalScalability=%d\n",
+	    UGETW(d->wMaxMBperSecThreeResolutionsTemporalScalability));
+	printf("wMaxMBperSecFourResolutionsTemporalScalability=%d\n",
+	    UGETW(d->wMaxMBperSecFourResolutionsTemporalScalability));
 	printf("wMaxMBperSecOneResolutionTemporalQualityScalability=%d\n",
 	    UGETW(d->wMaxMBperSecOneResolutionTemporalQualityScalability));
 	printf("wMaxMBperSecTwoResolutionsTemporalQualityScalability=%d\n",
@@ -3466,12 +3478,12 @@ uvideo_dump_desc_format_h264(struct uvid
 	    UGETW(d->wMaxMBperSecThreeResolutionsTemporalQualityScalablity));
 	printf("wMaxMBperSecFourResolutionsTemporalQualityScalability=%d\n",
 	    UGETW(d->wMaxMBperSecFourResolutionsTemporalQualityScalability));
-	printf("wMaxMBperSecOneResolutionsTemporalSpatialScalability=%d\n",
-	    UGETW(d->wMaxMBperSecOneResolutionsTemporalSpatialScalability));
+	printf("wMaxMBperSecOneResolutionTemporalSpatialScalability=%d\n",
+	    UGETW(d->wMaxMBperSecOneResolutionTemporalSpatialScalability));
 	printf("wMaxMBperSecTwoResolutionsTemporalSpatialScalability=%d\n",
 	    UGETW(d->wMaxMBperSecTwoResolutionsTemporalSpatialScalability));
-	printf("wMaxMBperSecThreeResolutionsTemporalSpatialScalability=%d\n",
-	    UGETW(d->wMaxMBperSecThreeResolutionsTemporalSpatialScalability));
+	printf("wMaxMBperSecThreeResolutionsTemporalSpatialScalablity=%d\n",
+	    UGETW(d->wMaxMBperSecThreeResolutionsTemporalSpatialScalablity));
 	printf("wMaxMBperSecFourResolutionsTemporalSpatialScalability=%d\n",
 	    UGETW(d->wMaxMBperSecFourResolutionsTemporalSpatialScalability));
 	printf("wMaxMBperSecOneResolutionFullScalability=%d\n",
Index: sys/dev/usb/uvideo.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/uvideo.h,v
diff -u -p -r1.68 uvideo.h
--- sys/dev/usb/uvideo.h	16 Aug 2025 08:13:11 -0000	1.68
+++ sys/dev/usb/uvideo.h	23 Aug 2025 11:55:10 -0000
@@ -568,13 +568,19 @@ struct usb_video_format_h264_desc {
 	uByte	bmSupportedRateControlModes;
 	uWord	wMaxMBperSecOneResolutionNoScalability;
 	uWord	wMaxMBperSecTwoResolutionsNoScalability;
+	uWord	wMaxMBperSecThreeResolutionsNoScalability;
+	uWord	wMaxMBperSecFourResolutionsNoScalability;
+	uWord	wMaxMBperSecOneResolutionTemporalScalability;
+	uWord	wMaxMBperSecTwoResolutionsTemporalScalablility;
+	uWord	wMaxMBperSecThreeResolutionsTemporalScalability;
+	uWord	wMaxMBperSecFourResolutionsTemporalScalability;
 	uWord	wMaxMBperSecOneResolutionTemporalQualityScalability;
 	uWord	wMaxMBperSecTwoResolutionsTemporalQualityScalability;
 	uWord	wMaxMBperSecThreeResolutionsTemporalQualityScalablity;
 	uWord	wMaxMBperSecFourResolutionsTemporalQualityScalability;
-	uWord	wMaxMBperSecOneResolutionsTemporalSpatialScalability;
+	uWord	wMaxMBperSecOneResolutionTemporalSpatialScalability;
 	uWord	wMaxMBperSecTwoResolutionsTemporalSpatialScalability;
-	uWord	wMaxMBperSecThreeResolutionsTemporalSpatialScalability;
+	uWord	wMaxMBperSecThreeResolutionsTemporalSpatialScalablity;
 	uWord	wMaxMBperSecFourResolutionsTemporalSpatialScalability;
 	uWord	wMaxMBperSecOneResolutionFullScalability;
 	uWord	wMaxMBperSecTwoResolutionsFullScalability;
@@ -651,20 +657,26 @@ struct uvideo_format_desc {
 			uByte	bResolutionScaling;
 			uByte	_reserved1;
 			uByte	bmSupportedRateControlModes;
-			uDWord	wMaxMBperSecOneResolutionNoScalability;
-			uDWord	wMaxMBperSecTwoResolutionsNoScalability;
-			uDWord	wMaxMBperSecOneResolutionTemporalQualityScalability;
-			uDWord	wMaxMBperSecTwoResolutionsTemporalQualityScalability;
-			uDWord	wMaxMBperSecThreeResolutionsTemporalQualityScalablity;
-			uDWord	wMaxMBperSecFourResolutionsTemporalQualityScalability;
-			uDWord	wMaxMBperSecOneResolutionsTemporalSpatialScalability;
-			uDWord	wMaxMBperSecTwoResolutionsTemporalSpatialScalability;
-			uDWord	wMaxMBperSecThreeResolutionsTemporalSpatialScalability;
-			uDWord	wMaxMBperSecFourResolutionsTemporalSpatialScalability;
-			uDWord	wMaxMBperSecOneResolutionFullScalability;
-			uDWord	wMaxMBperSecTwoResolutionsFullScalability;
-			uDWord	wMaxMBperSecThreeResolutionsFullScalability;
-			uDWord	wMaxMBperSecFourResolutionsFullScalability;
+			uWord	wMaxMBperSecOneResolutionNoScalability;
+			uWord	wMaxMBperSecTwoResolutionsNoScalability;
+			uWord	wMaxMBperSecThreeResolutionsNoScalability;
+			uWord	wMaxMBperSecFourResolutionsNoScalability;
+			uWord	wMaxMBperSecOneResolutionTemporalScalability;
+			uWord	wMaxMBperSecTwoResolutionsTemporalScalablility;
+			uWord	wMaxMBperSecThreeResolutionsTemporalScalability;
+			uWord	wMaxMBperSecFourResolutionsTemporalScalability;
+			uWord	wMaxMBperSecOneResolutionTemporalQualityScalability;
+			uWord	wMaxMBperSecTwoResolutionsTemporalQualityScalability;
+			uWord	wMaxMBperSecThreeResolutionsTemporalQualityScalablity;
+			uWord	wMaxMBperSecFourResolutionsTemporalQualityScalability;
+			uWord	wMaxMBperSecOneResolutionTemporalSpatialScalability;
+			uWord	wMaxMBperSecTwoResolutionsTemporalSpatialScalability;
+			uWord	wMaxMBperSecThreeResolutionsTemporalSpatialScalablity;
+			uWord	wMaxMBperSecFourResolutionsTemporalSpatialScalability;
+			uWord	wMaxMBperSecOneResolutionFullScalability;
+			uWord	wMaxMBperSecTwoResolutionsFullScalability;
+			uWord	wMaxMBperSecThreeResolutionsFullScalability;
+			uWord	wMaxMBperSecFourResolutionsFullScalability;
 		} h264;
 	} u;
 } __packed;