添加 KSPROPERTY_CAMERACONTROL_ROLL 到MFT KSPROPERTY

接口名字: KSPROPERTY_CAMERACONTROL_ROLL

接口来源:https://learn.microsoft.com/en-us/windows-hardware/drivers/stream/ksproperty-cameracontrol-roll

功能:通知camera旋转角度【 -180,180】内某一角度。

代码:

MFT收到的入口
HRESULT KsProperty( [in] PKSPROPERTY Property, [in] ULONG PropertyLength, [in, out] LPVOID PropertyData, [in] ULONG DataLength, [in, out] ULONG *BytesReturned );

Property->Set 是 PROPSETID_VIDCAP_CAMERACONTROL
Property->Id 是 KSPROPERTY_CAMERACONTROL_ROLL
以上2点就可以确定收到了 这个KsProperty,然后就是针对性内部处理和回复。内部处理不同驱动各有不同,但是回复有共性。
Flag一般有3种:

KSPROPERTY_TYPE_SET
设置旋转角度
KSPROPERTY_TYPE_GET
获取当前角度
KSPROPERTY_TYPE_BASICSUPPORT
获取支持的旋转角度

 

 

 

 

对于SET和GET,需要获取PropertyData指向的数据,转换成对应接口MSDN上规定的类型,比如这个功能需要转成如下:

PKSPROPERTY_CAMERACONTROL_S pCamcontrol = (PKSPROPERTY_CAMERACONTROL_S)PropertyData

set和get都需要 设置/获取 pCamcontrol->Value,这个字段是旋转的大小。set就拿这个值,get要写进去。

BASICSUPPORT就有点复杂:
//step 1 DataLength, 判断后面有几个header,我这里大小是72, 有3个部分,大小分别为40+16+16
PKSPROPERTY_DESCRIPTION pdesc = (PKSPROPERTY_DESCRIPTION)PropertyData;
pdesc->AccessFlags = KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET;
pdesc->DescriptionSize = sizeof(KSPROPERTY_DESCRIPTION) + sizeof(KSPROPERTY_MEMBERSHEADER) + sizeof(KSPROPERTY_STEPPING_LONG); 
pdesc->MembersListCount = 1;//表明最后我有1个说明范围的结构
pdesc->PropTypeSet.Set = PROPSETID_VIDCAP_CAMERACONTROL;
pdesc->PropTypeSet.Id = KSPROPERTY_CAMERACONTROL_ROLL;
pdesc->PropTypeSet.Flags = KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET;
//step 2 这一部分要说明我最后说明范围的结构是什么类型
PKSPROPERTY_MEMBERSHEADER pheader = (PKSPROPERTY_MEMBERSHEADER)(pdesc + 1);
pheader
->MembersFlags = KSPROPERTY_MEMBER_STEPPEDRANGES; pheader->MembersCount = 1; pheader->MembersSize = sizeof(KSPROPERTY_STEPPING_LONG);
pheader
->Flags = KSPROPERTY_MEMBER_STEPPEDRANGES; //step 3 最后就是我需要返回的范围了 KSPROPERTY_STEPPING_LONG *pval = (KSPROPERTY_STEPPING_LONG *)(pheader + 1); pval->SteppingDelta = 90; //这里我设置范围为{270,0,90,180}所以step是90,也可以按照MSDN的指导设置连续值 pval->Bounds.SignedMinimum = -180;//这只最大最小值 pval->Bounds.SignedMaximum = 180;

最后就可以返回成功了。

 

 

posted @ 2022-11-24 00:05  Joanna-In-Hdu&Hust  阅读(111)  评论(0编辑  收藏  举报