MÉTHODE IMFMediaEngineExtension::BeginCreateObject (mfmediaengine.h)
Commence une demande asynchrone pour créer un flux d’octets ou une source multimédia.
Syntaxe
HRESULT BeginCreateObject(
[in] BSTR bstrURL,
[in] IMFByteStream *pByteStream,
[in] MF_OBJECT_TYPE type,
[out] IUnknown **ppIUnknownCancelCookie,
[in] IMFAsyncCallback *pCallback,
[in, optional] IUnknown *punkState
);
Paramètres
[in] bstrURL
URL de la ressource multimédia.
[in] pByteStream
Pointeur vers l’interface IMFByteStream .
Si le paramètre de type est égal à MF_OBJECT_BYTESTREAM, ce paramètre a la valeur NULL.
Si type est égal à MF_OBJECT_MEDIASOURCE, ce paramètre contient un pointeur vers un flux d’octets ou a la valeur NULL. Pour plus d'informations, consultez la section Notes.
[in] type
Membre de l’énumération MF_OBJECT_TYPE qui spécifie le type d’objet à créer.
Valeur | Signification |
---|---|
|
Créez un flux d’octets. Le flux d’octets doit prendre en charge l’interface IMFByteStream . |
|
Créez une source multimédia. La source multimédia doit prendre en charge l’interface IMFMediaSource . |
[out] ppIUnknownCancelCookie
Reçoit un pointeur vers l’interface IUnknown . Ce pointeur peut être utilisé pour annuler l’opération asynchrone, en passant le pointeur à la méthode IMFMediaEngineExtension::CancelObjectCreation .
L’appelant doit libérer l’interface. Ce paramètre peut être NULL.
[in] pCallback
Pointeur vers l’interface IMFAsyncCallback . Cette interface est utilisée pour signaler l’achèvement de l’opération asynchrone.
[in, optional] punkState
Pointeur vers l’interface IUnknown d’un objet implémenté par l’appelant. Vous pouvez utiliser cet objet pour stocker des informations d’état pour le rappel. L’objet est retourné à l’appelant lorsque le rappel est appelé. Ce paramètre peut être NULL.
Valeur retournée
Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.
Notes
Cette méthode demande à l’objet de créer un flux d’octets ou une source multimédia, en fonction de la valeur du paramètre de type :
- Si type est MF_OBJECT_BYTESTREAM, la méthode crée un flux d’octets pour l’URL spécifiée dans bstrURL. Dans ce cas, le paramètre pByteStream est NULL.
- Si type est MF_OBJECT_MEDIASOURCE, la méthode crée une source multimédia à l’aide du flux d’octets spécifié dans le paramètre pByteStream . Notez que pByteStream peut également être NULL dans ce cas.
Notes d’implémentation
Une extension Media Engine peut être utilisée pour prendre en charge un objet de flux d’octets personnalisé, une source multimédia personnalisée, ou les deux. Pour un flux d’octets, créez l’objet de flux d’octets lorsque le type est égal à MF_OBJECT_BYTESTREAM. Pour une source multimédia, créez la source lorsque le type est égal à MF_OBJECT_MEDIASOURCE.Pour charger une URL, le moteur multimédia effectue les étapes suivantes :
- Essayez de créer un flux d’octets à partir de l’URL.
- Si un flux d’octets est correctement créé, essayez de créer une source multimédia à partir du flux d’octets.
- Si un flux d’octets ne peut pas être créé, essayez de créer une source multimédia directement à partir de l’URL.
À chaque étape, le moteur multimédia appelle IMFMediaEngineExtension::BeginCreateObject sur l’objet d’extension. Si la méthode BeginCreateObject échoue, le moteur multimédia tente le programme de résolution de source.
Dans votre méthode BeginCreateObject , vous pouvez choisir de gérer l’un des cas suivants :
- Le paramètre type est MF_OBJECT_BYTESTREAM. Créez un flux d’octets à partir de l’URL.
- Le paramètre type est MF_OBJECT_MEDIASOURCE et pByteStream pointe vers un flux d’octets. Utilisez le flux d’octets pour créer une source multimédia.
- Le paramètre type est MF_OBJECT_MEDIASOURCE et pByteStream a la valeur NULL. Créez une source multimédia à partir de l’URL.
Retournez un code d’échec pour tous les cas que vous ne gérez pas.
Exemples :
- Pour prendre en charge un format multimédia personnalisé, implémentez une source multimédia. Si la source multimédia ne nécessite aucune implémentation spéciale de flux d’octets, créez la source multimédia lorsque le type est MF_OBJECT_MEDIASOURCE et que pByteStream n’a pas la valeur NULL. L’implémentation standard du flux d’octets Microsoft Media Foundation sera utilisée dans ce cas.
- Pour prendre en charge un schéma d’URL personnalisé, gérez le cas où le type est MF_OBJECT_BYTESTREAM et retournez un objet de flux d’octets capable de lire l’URL.
Si la méthode BeginCreateObject réussit, l’opération doit être effectuée de manière asynchrone. Une fois l’opération terminée, appelez la méthode IMFAsyncCallback::Invoke sur l’interface de rappel spécifiée dans pCallback. Le moteur multimédia termine l’opération en appelant IMFMediaEngineExtension::EndCreateObject.
Spécifications
Client minimal pris en charge | Windows 8 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | mfmediaengine.h |