Download raw body.
sys/uvideo: H264 use correct structures
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;
>
sys/uvideo: H264 use correct structures