[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