[PATCH 3/4] winegstreamer: Use the "format" field to determine the subtype and bit depth.
Jan Schmidt
jan at widgetgrove.com.au
Sat Sep 14 04:51:21 CDT 2019
On 14/9/19 7:37 am, Zebediah Figura wrote:
> The "bits" field does not directly describe the total bit depth.
>
> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
> ---
> dlls/winegstreamer/gstdemux.c | 27 +++++++++++++++++----------
> 1 file changed, 17 insertions(+), 10 deletions(-)
>
> diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
> index e76ceda0fe6..b92bdfd7e49 100644
> --- a/dlls/winegstreamer/gstdemux.c
> +++ b/dlls/winegstreamer/gstdemux.c
> @@ -207,16 +207,23 @@ 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_BGRx:
> + amt->subtype = MEDIASUBTYPE_RGB32;
> + bih->biBitCount = 32;
> + break;
> + case GST_VIDEO_FORMAT_BGR:
> + amt->subtype = MEDIASUBTYPE_RGB24;
> + bih->biBitCount = 24;
> + break;
> + default:
> + FIXME("Unhandled type %u.\n", vinfo.finfo->format);
> + heap_free(vih);
> + return FALSE;
This seems generally correct - a 32-bit format could be RGB32, or
*MEDIASUBTYPE_ARGB32.*
*You seem to have dropped the 16-bit format handling though? Not so
common any more, but used to be more popular in older games and things.*
*- Jan.
*
*
*
*
*
> }
> bih->biCompression = BI_RGB;
> } else {
More information about the wine-devel
mailing list