atribut MF_DEVSOURCE_ATTRIBUTE_FRAMESERVER_SHARE_MODES

Konfiguruje zdroj zařízení fotoaparátu reprezentovaný instancí MMFMEdiaSource být v režimu řízení nebo režimu sdílení.

Datový typ

UINT32

Získání nebo nastavení

Chcete-li získat tento atribut, zavolejte MMFAttributes::GetUINT32.

Chcete-li nastavit tento atribut, volání MMFAttributes::SetUINT32.

Poznámky

Pokud tento atribut není nastaven nebo nastaven na hodnotu 0, zdroj zařízení fotoaparátu je nakonfigurován v řídicím režimu. Toto je výchozí režim pro zdroje fotoaparátu. Při řízení režimu jsou k dispozici všechny operace fotoaparátu a aplikace může měnit typy médií nebo rozšířené ovládací prvky kamery.

Kdykoli může být aktivní pouze jedna instance režimu MMFMediaSource. MMFMediaSource se po vytvoření inicializovaného objektu nepovažuje za aktivní. Zdroj médií se aktivuje pouze po spuštění datového proudu s voláním MMFMediaSource::Start, nebo po nastavení hodnoty ovládacího prvku kamery vydáním ovládacího prvku kamery voláním IKsControl::KsProperty s nastavenou vlastností KSPROPERTYSETID_ExtendedCameraControl nebo pomocí MMFExtendedCameraControl rozhraní. Informace o získání instance MMFExtendedCameraControlnaleznete v tématu MMFExtendedCameraController

Pokus o vykreslení aktivní instance MMFMediaSource, pokud je již aktivní jiná instance řídicího režimu, způsobí porušení sdílení.

Kdykoli může existovat libovolný počet instancí aktivního režimu sdílení MMFMediaSource a nově vytvořené instance režimu sdílení lze aktivovat, když je aktivní řídicí instance režimu. Instance režimu sdílení nemůžou měnit typy médií a musí používat aktuální typ média, který se používá. Instance režimu sdílení nemůžou měnit KSPROPERTYSETID_ExtendedCameraControl ovládací prvky. Starší ovládací prvky fotoaparátu, jako jsou PROPSETID_VIDCAP_CAMERACONTROL a PROPSETID_VIDCAP_VIDEOPROCAMP a ovládací prvky specifické pro OEM/IHV, je možné změnit instancemi režimu sdílení.

Chcete-li nakonfigurovat zdroj fotoaparátu tak, aby byl v režimu sdílení, musí být atribut nastaven v době VYTVOŘENÍ MMFMediaSource.

Konfigurace režimu sdílení pomocí MFCreateDeviceSource

Následující příklad kódu znázorňuje vytvoření instance v režimu sdílení pomocí 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;
}

Konfigurace režimu sdílení pomocí FUNKCE MMFActivate

Následující příklad znázorňuje vytvoření instance MMFMediaSource pomocí MMFActivate. Všimněte si, že objekt MMFActivate interně uloží do mezipaměti nově vytvořený MMFMediaSource z volání ActivateObject. Takže pokud ActivateObject je volána znovu před voláním DetachObject, vrátí se instance uložená v mezipaměti a všechny změny atributů budou ignorovány.

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;
}

Konfiguracerežimuho

Chcete-li aktivovat MMFMediaSource v režimu sdílení pomocí MMFCaptureEngine, MMFActivate předán pro zdroj fotoaparátu musí mít atribut MF_DEVSOURCE_ATTRIBUTE_FRAMESERVER_SHARE_MODE. Jak je uvedeno výše, po MMFActivate::ActivateObject je volána, DetachObject musí být volána, aby se změny atributů projevily v aktivovaném objektu.

Konfigurace režimu sdílení pomocí MediaCapture

Při přístupu ke kameře pomocí třídy MediaCapture nastavte režim sdílení pomocí vlastnosti MediaCaptureInitializationSettings.SharingMode.

Požadavky

Požadavek Hodnota
Minimální podporovaný klient
Windows 11, build 26100
Minimální podporovaný server
Windows Server
Záhlaví
Mfidl.h

Viz také

abecední seznam atributů Media Foundation

audio/video capture

zachytávání atributů zařízení