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: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
9ef5825941
commit
450d443b89
|
@ -207,14 +207,33 @@ 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;
|
||||
|
||||
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("Unknown bpp %u\n", bih->biBitCount);
|
||||
FIXME("Unhandled type %s.\n", vinfo.finfo->name);
|
||||
heap_free(vih);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue