diff --git a/loader/dmo/DMO_VideoDecoder.c b/loader/dmo/DMO_VideoDecoder.c
index d5a56eb..d75e598 100644
--- a/loader/dmo/DMO_VideoDecoder.c
+++ b/loader/dmo/DMO_VideoDecoder.c
@@ -152,7 +152,7 @@ DMO_VideoDecoder * DMO_VideoDecoder_Open(char* dllname, GUID* guid, BITMAPINFOHE
 
 	memset(&this->m_sDestType, 0, sizeof(this->m_sDestType));
 	this->m_sDestType.majortype = MEDIATYPE_Video;
-	this->m_sDestType.subtype = MEDIASUBTYPE_RGB24;
+	this->m_sDestType.subtype = GUID_NULL;
 	this->m_sDestType.formattype = FORMAT_VideoInfo;
 	this->m_sDestType.bFixedSizeSamples = true;
 	this->m_sDestType.bTemporalCompression = false;
diff --git a/loader/dmo/dmo.c b/loader/dmo/dmo.c
index 0e4d2a4..812479d 100644
--- a/loader/dmo/dmo.c
+++ b/loader/dmo/dmo.c
@@ -139,6 +139,7 @@ DMO_Filter* DMO_FilterCreate(const char* dllname, const GUID* id,
 */
 	}
 
+	if (0!=memcmp(&GUID_NULL, &out_fmt->subtype, sizeof(GUID))){
 	hr = This->m_pMedia->vt->SetOutputType(This->m_pMedia, 0, out_fmt, 0);
 	if (hr)
 	{
@@ -153,6 +154,7 @@ DMO_Filter* DMO_FilterCreate(const char* dllname, const GUID* id,
 	// This->m_pMedia->vt->AllocateStreamingResources(This->m_pMedia);
 	hr = This->m_pMedia->vt->GetStreamCount(This->m_pMedia, &inputs, &outputs);
 	Debug printf("StreamCount r=0x%lx  %ld  %ld\n", hr, inputs, outputs);
+	}
 
         break;
     }
