2017-06-30 5 views
0

Nous utilisons le wrapper .NET SharpDX pour que Mediafoundation décode une vidéo MP4 en une texture DirectX9. Cela fonctionne bien, sauf qu'il se bloque sur certaines cartes NVIDIA par exemple le 940MX. Par exemple, la même machine avec une carte graphique Intel HD décode bien le flux vidéo.Mediafoundation ne peut pas décoder la vidéo sur certaines cartes NVIDIA

Malheureusement, nous ne pouvons pas obtenir d'autres détails qu'une erreur E_FAIL/Unspecified de SharpDX. Même avec la couche de débogage activée. Des idées pour savoir pourquoi il se bloque?

VideoMediaType outputVideoFormat; 
MediaFactory.CreateVideoMediaTypeFromSubtype(mFormatYv12Guid, out outputVideoFormat); 

if (outputVideoFormat == null) 
{ 
    Trace.WriteLine("Error: create output video format failed."); 
    return false; 
} 
outputVideoFormat.Set(MediaTypeAttributeKeys.Subtype, mFormatYv12Guid); 

outputVideoFormat.Set(MediaTypeAttributeKeys.FrameSize, size); 
sourceReader.SetCurrentMediaType(mVideoStreamIndex, outputVideoFormat); 

outputVideoFormat.Dispose(); 

IntPtr transformPointer = sourceReader.GetServiceForStream(mVideoStreamIndex, Guid.Empty, typeof(Transform).GUID); 
if (transformPointer.ToInt64() <= 0) 
{ 
    Trace.WriteLine("Error: videoDecoderPointer is null"); 
    return false; 
} 

Transform videoDecoder = new Transform(transformPointer); 

// crashing here with E_FAIL/Unspecified error 
videoDecoder.ProcessMessage(TMessageType.SetD3DManager, deviceManager.NativePointer); 

videoDecoder.Dispose(); 
+0

Voici comment vous pouvez trouver: https://msdn.microsoft.com/fr-fr/library/windows/desktop/ff685370%28v=vs.85%29.aspx – Soonts

Répondre

0

Il est probable que ce soit une configuration MX (puce mobile). Vous devez accéder au panneau de configuration nVidia et ajouter une règle explicite que votre application doit utiliser spécifiquement le GPU Intel ou nVidia plutôt que de procéder à un autodétection.

+0

oui, je peux basculer entre l'intel et nvidia GPU. et ça marche bien avec l'intel mais quand je passe à la nvidia j'obtiens le crash mentionné ci-dessus. – oleole

+0

Je sais que cela semble être la chose la plus évidente, mais pour mon bénéfice, les pilotes nVidia sont-ils à jour? ShadowPlay est également activé? – PhonicUK

+0

oui, les pilotes sont à jour. En effet, nous avons essayé plusieurs versions de pilotes différents. y compris les retirer totalement avec un nettoyeur de conducteur et une nouvelle réinstallation. Je ne sais pas ce que ShadowPlay est, mais je ne pouvais rien trouver à ce sujet dans les paramètres du pilote, donc je suppose que ce n'est pas activé. – oleole