From: Kirill A. Korinsky Subject: sys/uvideo: H264 use correct structures To: OpenBSD tech Date: Sat, 23 Aug 2025 13:59:20 +0200 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;