Partager via


Interfaces et interactions (profil d’appareil photo V2)

En fonction de votre fonctionnalité, tenez compte de chacune des options ci-dessous et décrivez si cela est pertinent.

Ajout ou modification de l’API publique (Win32)

SENSORPROFILEID

La structure SENSORPROFILEID représente un ID unique pour chaque profil. Il se compose du type de profil KSCAMERAPROFILE_* déclaré dans OEMCameraProfileVersion (voir Conception détaillée pour les IMV et les oem) et d’un index de profil.

typedef struct
{
    GUID    Type;
    UINT32  Index;
    UINT32  Unused;
} SENSORPROFILEID;

IMFSensorProfileCollection

IMFSensorProfileCollection représente une collection de profils. Les IHV/OEM doivent utiliser l’API MFCreateSensorProfileCollection pour obtenir une nouvelle interface de collection de profils.

[
    object,
    uuid(C95EA55B-0187-48BE-9353-8D2507662351),
    helpstring("IMFSensorProfileCollection Interface"),
    local
]
interface IMFSensorProfileCollection : IUnknown
{
    DWORD GetProfileCount(
        );

    HRESULT GetProfile(
        [in, annotation("_In_")] DWORD Index,
        [out, annotation("_COM_Outptr_")] IMFSensorProfile** ppProfile
        );

    HRESULT AddProfile(
        [in, annotation("_In_")] IMFSensorProfile* pProfile
        );

    HRESULT FindProfile(
        [in, annotation("_In_")] SENSORPROFILEID* ProfileId, 
        [out, annotation("_COM_Outptr_")] IMFSensorProfile** ppProfile
        );

    void RemoveProfileByIndex(
        [in, annotation("_In_")] DWORD Index
        );

    void RemoveProfile(
        [in, annotation("_In_")] SENSORPROFILEID* ProfileId
        );
 };

STDAPI
MFCreateSensorProfileCollection(
    _COM_Outptr_ IMFSensorProfileCollection** ppSensorProfile
    );

IMFSensorProfile

L’objet IMFSensorProfile implémente également l’interface IMFAttributes. Le magasin d’attributs est en lecture seule pour les développeurs d’applications, mais en lecture/écriture pour le composant Transformation de groupe de capteurs/DMFT.

[
    object,
    uuid(22F765D1-8DAB-4107-846D-56BAF72215E7),
    helpstring("IMFSensorProfile Interface"),
    local
]
interface IMFSensorProfile : IUnknown
{
    HRESULT GetProfileId(
        [out, annotation("_Out_")] SENSORPROFILEID* pId
        );

    HRESULT AddProfileFilter(
        [in, annotation("_In_")] UINT32 StreamId, 
        [in, annotation("_In_z_")] LPCWSTR wzFilterSetString
        );

    HRESULT IsMediaTypeSupported(
        [in, annotation("_In_")] UINT32 StreamId, 
        [in, annotation("_In_")] IMFMediaType* pMediaType, 
        [out, annotation("_Out_")] BOOL* pfSupported
        );

    HRESULT AddBlockedControl(
        [in, annotation("_In_z_")] LPCWSTR wzBlockedControl
        );
 };

STDAPI
MFCreateSensorProfile(
    _In_ REFGUID ProfileType,
    _In_ UINT32 ProfileIndex,
    _In_opt_z_ LPCWSTR Constraints,
    _COM_Outptr_ IMFSensorProfile** ppProfile
    );

Ajout ou modification de l’API publique (WinRT)

[contract(Windows.Foundation.UniversalApiContract, 1)]
typedef enum KnownVideoProfile
{
    VideoRecording = 0,
    HighQualityPhoto,
    BalancedVideoAndPhoto,
    VideoConferencing,
    PhotoSequence
    PhotoSequence,
    
    [contract(Windows.Foundation.UniversalApiContract, 6)]
    HighFrameRate,
    [contract(Windows.Foundation.UniversalApiContract, 6)]
    VariablePhotoSequence
    [contract(Windows.Foundation.UniversalApiContract, 6)]
    HDRWithWCGVideo,
    [contract(Windows.Foundation.UniversalApiContract, 6)]
    HDRWithWCGPhoto,
    [contract(Windows.Foundation.UniversalApiContract, 6)]
    VideoHDR8
    
} KnownVideoProfile;


[uuid(8012AFEF-B691-49FF-83F2-C1E76EAAEA1B)]
[exclusiveto(MediaCaptureVideoProfileMediaDescription)]
[contract(Windows.Foundation.UniversalApiContract, 1)]
interface IMediaCaptureVideoProfileMediaDescription : IInspectable
{
    [propget] HRESULT Width([out, retval] UINT32* value);
    [propget] HRESULT Height([out, retval] UINT32* value);
    [propget] HRESULT FrameRate([out, retval] double* value);
    
    [deprecated("IsVariablePhotoSequenceSupported might not be available in future versions of Windows. Starting with Windows RS4", deprecate, Windows.Foundation.UniversalApiContract, 6)]
    [propget] HRESULT IsVariablePhotoSequenceSupported([out, retval] boolean* value);

    [deprecated("IsHdrVideoSupported might not be available in future versions of Windows. Starting with Windows RS4", deprecate, Windows.Foundation.UniversalApiContract, 6)]
    [propget] HRESULT IsHdrVideoSupported([out, retval] boolean* value);
}

[uuid(C6A6EF13-322D-413A-B85A-68A88E02F4E9)]
[contract(Windows.Foundation.UniversalApiContract, 6)]
[exclusiveto(MediaCaptureVideoProfileMediaDescription)]
interface IMediaCaptureVideoProfileMediaDescription2 : IInspectable
{
    [propget] HRESULT Subtype([out, retval] HSTRING* value);
    [propget] HRESULT Properties([out, retval] Windows.Foundation.Collections.IMapView<GUID, IInspectable*>** value);
}


[uuid(97DDC95F-94CE-468F-9316-FC5BC2638F6B)]
[contract(Windows.Foundation.UniversalApiContract, 6)]
[exclusiveto(MediaCaptureVideoProfile)]
interface IMediaCaptureVideoProfile2 : IInspectable
{
    [propget] HRESULT FrameSourceInfos([out, retval] IVectorView<Windows.Media.Capture.Frames.MediaFrameSourceInfo*>** value);
    [propget] HRESULT Properties([out, retval] Windows.Foundation.Collections.IMapView<GUID, IInspectable*>** value);
}

[uuid(195A7855-6457-42C6-A769-19B65BD32E6E)]
[contract(Windows.Foundation.UniversalApiContract, 6)]
[exclusiveto(MediaFrameSourceInfo)]
interface IMediaFrameSourceInfo2 : IInspectable
{
    [propget] HRESULT ProfileId(
    [out, retval] HSTRING* value);
    
    [propget] HRESULT VideoProfileMediaDescription(
    [out, retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.MediaCaptureVideoProfileMediaDescription*>** value);
}

RUNTIMECLASS_CONTRACT_WIN10_RS1
runtimeclass MediaFrameSourceInfo
{
    [default] interface IMediaFrameSourceInfo;
    
    [contract(Windows.Foundation.UniversalApiContract, 6)]
    interface IMediaFrameSourceInfo2;
}

Spécification du développeur Du profil d’appareil photo V2