Browse Source

win-dshow: Fix upside-down RGB DIBs

Fix regression to RGB DIB orientation according to MSDN.
jpark37 5 years ago
parent
commit
9eeef48b5a
1 changed files with 7 additions and 2 deletions
  1. 7 2
      plugins/win-dshow/win-dshow.cpp

+ 7 - 2
plugins/win-dshow/win-dshow.cpp

@@ -539,8 +539,13 @@ void DShowInput::OnVideoData(const VideoConfig &config, unsigned char *data,
 	frame.format = ConvertVideoFormat(config.format);
 	frame.flip = flip;
 
-	if (config.cy_flip)
-		frame.flip = !frame.flip;
+	/* YUV DIBS are always top-down */
+	if (config.format == VideoFormat::XRGB ||
+	    config.format == VideoFormat::ARGB) {
+		/* RGB DIBs are bottom-up by default */
+		if (!config.cy_flip)
+			frame.flip = !frame.flip;
+	}
 
 	if (videoConfig.format == VideoFormat::XRGB ||
 	    videoConfig.format == VideoFormat::ARGB) {