kenmerk MF_DEVSOURCE_ATTRIBUTE_FRAMESERVER_SHARE_MODES
Hiermee configureert u een cameraapparaatbron die wordt vertegenwoordigd door een exemplaar van IMFMEdiaSource in de besturingsmodus of de modus voor delen.
Gegevenstype
UINT32-
Ophalen/instellen
Als u dit kenmerk wilt ophalen, roept u IMFAttributes::GetUINT32aan.
Als u dit kenmerk wilt instellen, roept u IMFAttributes::SetUINT32aan.
Opmerkingen
Wanneer dit kenmerk niet is ingesteld of ingesteld op 0, wordt de bron van het cameraapparaat geconfigureerd in de besturingsmodus. Dit is de standaardmodus voor camerabronnen. In de besturingsmodus zijn alle camerabewerkingen beschikbaar en kan de toepassing mediatypen en/of uitgebreide camerabesturingselementen wijzigen.
Slechts één controlemodusexemplaren van IMFMediaSource- kunnen op elk gewenst moment actief zijn. Een IMFMediaSource- wordt niet als actief beschouwd nadat deze is gemaakt. De mediabron wordt pas actief nadat de stream is gestart, met een aanroep naar IMFMediaSource::Start, of nadat een cameracontrolewaarde is ingesteld door de uitgifte van een camerabesturingselement door IKsControl::KsProperty- aan te roepen met de eigenschap ingesteld KSPROPERTYSETID_ExtendedCameraControl of met behulp van de IMFExtendedCameraControl interface. Zie IMFExtendedCameraController voor meer informatie over het ophalen van exemplaren van IMFExtendedCameraControl
Als u een IMFMediaSource exemplaar actief probeert te maken wanneer een ander exemplaar van de controlemodus al actief is, leidt dit tot een schending van het delen.
Er kunnen op elk gewenst moment een willekeurig aantal exemplaren van de actieve deelmodus van IMFMediaSource- en nieuw gemaakte exemplaren van de deelmodus worden geactiveerd terwijl een exemplaar van de controlemodus actief is. Exemplaren van de deelmodus kunnen geen mediatypen wijzigen en moeten het huidige mediatype gebruiken. Exemplaren van de deelmodus kunnen KSPROPERTYSETID_ExtendedCameraControl besturingselementen niet wijzigen. Verouderde camerabesturingselementen, zoals PROPSETID_VIDCAP_CAMERACONTROL en PROPSETID_VIDCAP_VIDEOPROCAMP en OEM/IHV-specifieke besturingselementen, kunnen worden gewijzigd door exemplaren van de deelmodus.
Als u een camerabron wilt configureren in de modus Delen, moet het kenmerk worden ingesteld op het moment van IMFMediaSource maken.
De modus voor delen configureren met MFCreateDeviceSource
Het volgende codevoorbeeld illustreert het maken van een exemplaar in de deelmodus met behulp van MFCreateDeviceSource.
HRESULT
SampleCreateSharedModeCamera(
_In_z_ LPCWSTR cameraSymbolicName,
_COM_Outptr_ IMFMediaSource** cameraSource
)
{
wil::com_ptr_nothrow<IMFAttributes> initAttributes;
RETURN_HR_IF_NULL (E_INVALIDARG, cameraSymbolicName);
RETURN_HR_IF_NULL (E_POINTER, cameraSource);
*cameraSource = nullptr;
RETURN_IF_FAILED (MFCreateAttributes(&initAttributes, 3));
RETURN_IF_FAILED (initAttributes->SetGUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID));
RETURN_IF_FAILED (initAttributes->SetString(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, cameraSymbolicName));
RETURN_IF_FAILED (initAttributes->SetUINT32(MF_DEVSOURCE_ATTRIBUTE_FRAMESERVER_SHARE_MODE, 1));
RETURN_IF_FAILED (MFCreateDeviceSource(initAttributes.get(), cameraSource));
return S_OK;
}
De deelmodus configureren met BEHULP van IMFActivate
In het volgende voorbeeld ziet u hoe u een exemplaar van IMFMediaSource maakt met behulp van IMFActivate. Houd er rekening mee dat het IMFActivate-object intern een zojuist gemaakte IMFMediaSource- van de aanroep naar ActivateObject-in de cache opgeslagen. Dus als ActivateObject opnieuw wordt aangeroepen voordat een aanroep naar DetachObject wordt gemaakt, wordt het exemplaar in de cache geretourneerd en worden eventuele wijzigingen in de kenmerken genegeerd.
HRESULT
SampleCreateSharedModeCameraFromActivate(
_In_ IMFActivate* activate,
_COM_Outptr_ IMFMediaSource** cameraSource
)
{
RETURN_HR_IF_NULL (E_INVALIDARG, activate);
RETURN_HR_IF_NULL (E_POINTER, cameraSource);
*cameraSource = nullptr;
RETURN_IF_FAILED (activate->SetUINT32(MF_DEVSOURCE_ATTRIBUTE_FRAMESERVER_SHARE_MODE, 1));
RETURN_IF_FAILED (activate->ActivateObject(IID_PPV_ARGS(cameraSource)));
return S_OK;
}
De deelmodus configureren met behulp van IMFCaptureEngine
Als u de IMFMediaSource- wilt activeren in de modus delen met behulp van IMFCaptureEngine-, moet de IMFActivate doorgegeven voor de camerabron het kenmerk MF_DEVSOURCE_ATTRIBUTE_FRAMESERVER_SHARE_MODE hebben. Zoals hierboven vermeld, moet IMFActivate::ActivateObject worden aangeroepen, DetachObject moet worden aangeroepen om eventuele kenmerkwijzigingen in het geactiveerde object weer te geven.
De modus voor delen configureren met MediaCapture
Wanneer u de camera opent met behulp van de klasse MediaCapture, stelt u de modus voor delen in met behulp van de eigenschap MediaCaptureInitializationSettings.SharingMode.
Eisen
Eis | Waarde |
---|---|
Minimaal ondersteunde client |
Windows 11, build 26100 |
Minimaal ondersteunde server |
Windows Server |
Rubriek |
|
Zie ook