Index | Thread | Search

From:
Marcus Glocker <marcus@nazgul.ch>
Subject:
Re: sys/uvideo: H264 use correct structures
To:
"Kirill A. Korinsky" <kirill@korins.ky>
Cc:
tech@openbsd.org
Date:
Tue, 26 Aug 2025 06:29:21 +0200

Download raw body.

Thread
On Sat, Aug 23, 2025 at 01:59:20PM +0200, Kirill A. Korinsky wrote:

> 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?

ok mglocker@
 
> 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;
>