Commit 450d443b authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

winegstreamer: Use the "format" field to determine the subtype and bit depth.

The "bits" field does not directly describe the total bit depth. Signed-off-by: 's avatarZebediah Figura <z.figura12@gmail.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent 9ef58259
......@@ -207,16 +207,35 @@ static gboolean amt_from_gst_caps_video(GstCaps *caps, AM_MEDIA_TYPE *amt)
amt->pUnk = NULL;
ZeroMemory(vih, sizeof(*vih));
amt->majortype = MEDIATYPE_Video;
if (GST_VIDEO_INFO_IS_RGB(&vinfo)) {
bih->biBitCount = GST_VIDEO_FORMAT_INFO_BITS(vinfo.finfo);
switch (bih->biBitCount) {
case 16: amt->subtype = MEDIASUBTYPE_RGB555; break;
case 24: amt->subtype = MEDIASUBTYPE_RGB24; break;
case 32: amt->subtype = MEDIASUBTYPE_RGB32; break;
default:
FIXME("Unknown bpp %u\n", bih->biBitCount);
heap_free(vih);
return FALSE;
if (GST_VIDEO_INFO_IS_RGB(&vinfo))
{
switch (vinfo.finfo->format)
{
case GST_VIDEO_FORMAT_BGRA:
amt->subtype = MEDIASUBTYPE_ARGB32;
bih->biBitCount = 32;
break;
case GST_VIDEO_FORMAT_BGRx:
amt->subtype = MEDIASUBTYPE_RGB32;
bih->biBitCount = 32;
break;
case GST_VIDEO_FORMAT_BGR:
amt->subtype = MEDIASUBTYPE_RGB24;
bih->biBitCount = 24;
break;
case GST_VIDEO_FORMAT_BGR16:
amt->subtype = MEDIASUBTYPE_RGB565;
bih->biBitCount = 16;
break;
case GST_VIDEO_FORMAT_BGR15:
amt->subtype = MEDIASUBTYPE_RGB555;
bih->biBitCount = 16;
break;
default:
FIXME("Unhandled type %s.\n", vinfo.finfo->name);
heap_free(vih);
return FALSE;
}
bih->biCompression = BI_RGB;
} else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment