From: Marcus Glocker Subject: Re: sys/uvideo: H264 use correct structures To: "Kirill A. Korinsky" Cc: tech@openbsd.org Date: Tue, 26 Aug 2025 06:29:21 +0200 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; >