diff options
Diffstat (limited to 'src/plugins/wmf/player/mfplayersession.cpp')
-rw-r--r-- | src/plugins/wmf/player/mfplayersession.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index 24bfda833..1d145edc4 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -56,7 +56,7 @@ #include "mfplayersession.h" #include "mfplayerservice.h" #include "mfmetadatacontrol.h" -#include <Mferror.h> +#include <mferror.h> #include <nserror.h> #include "sourceresolver.h" #include "samplegrabber.h" @@ -277,10 +277,13 @@ MFPlayerSession::MediaType MFPlayerSession::getStreamType(IMFStreamDescriptor *s if (!stream) return Unknown; - IMFMediaTypeHandler *typeHandler = NULL; - if (SUCCEEDED(stream->GetMediaTypeHandler(&typeHandler))) { + struct SafeRelease { + IMFMediaTypeHandler *ptr = nullptr; + ~SafeRelease() { if (ptr) ptr->Release(); } + } typeHandler; + if (SUCCEEDED(stream->GetMediaTypeHandler(&typeHandler.ptr))) { GUID guidMajorType; - if (SUCCEEDED(typeHandler->GetMajorType(&guidMajorType))) { + if (SUCCEEDED(typeHandler.ptr->GetMajorType(&guidMajorType))) { if (guidMajorType == MFMediaType_Audio) return Audio; else if (guidMajorType == MFMediaType_Video) @@ -288,9 +291,6 @@ MFPlayerSession::MediaType MFPlayerSession::getStreamType(IMFStreamDescriptor *s } } - if (typeHandler) - typeHandler->Release(); - return Unknown; } |