mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +00:00
set colour masks for video/x-raw-rgb in rtpvrawdepay
This commit is contained in:
parent
4d3ee9005c
commit
98075ad70d
1 changed files with 36 additions and 0 deletions
|
@ -125,6 +125,7 @@ gst_rtp_vraw_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps)
|
||||||
GstCaps *srccaps;
|
GstCaps *srccaps;
|
||||||
guint32 fourcc = 0;
|
guint32 fourcc = 0;
|
||||||
gboolean res;
|
gboolean res;
|
||||||
|
gint rmask = 0, gmask = 0, bmask = 0, amask = 0, bpp = 0, depth = 0;
|
||||||
|
|
||||||
rtpvrawdepay = GST_RTP_VRAW_DEPAY (depayload);
|
rtpvrawdepay = GST_RTP_VRAW_DEPAY (depayload);
|
||||||
|
|
||||||
|
@ -159,24 +160,46 @@ gst_rtp_vraw_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps)
|
||||||
ystride = GST_ROUND_UP_4 (width * 3);
|
ystride = GST_ROUND_UP_4 (width * 3);
|
||||||
outsize = ystride * height;
|
outsize = ystride * height;
|
||||||
type = "video/x-raw-rgb";
|
type = "video/x-raw-rgb";
|
||||||
|
rmask = 0x00ff0000;
|
||||||
|
gmask = 0x0000ff00;
|
||||||
|
bmask = 0x000000ff;
|
||||||
|
depth = 24;
|
||||||
|
bpp = 24;
|
||||||
} else if (!strcmp (str, "RGBA")) {
|
} else if (!strcmp (str, "RGBA")) {
|
||||||
format = GST_VIDEO_FORMAT_RGBA;
|
format = GST_VIDEO_FORMAT_RGBA;
|
||||||
pgroup = 4;
|
pgroup = 4;
|
||||||
ystride = width * 4;
|
ystride = width * 4;
|
||||||
outsize = ystride * height;
|
outsize = ystride * height;
|
||||||
type = "video/x-raw-rgb";
|
type = "video/x-raw-rgb";
|
||||||
|
rmask = 0xff000000;
|
||||||
|
gmask = 0x00ff0000;
|
||||||
|
bmask = 0x0000ff00;
|
||||||
|
amask = 0x000000ff;
|
||||||
|
depth = 32;
|
||||||
|
bpp = 32;
|
||||||
} else if (!strcmp (str, "BGR")) {
|
} else if (!strcmp (str, "BGR")) {
|
||||||
format = GST_VIDEO_FORMAT_BGR;
|
format = GST_VIDEO_FORMAT_BGR;
|
||||||
pgroup = 3;
|
pgroup = 3;
|
||||||
ystride = GST_ROUND_UP_4 (width * 3);
|
ystride = GST_ROUND_UP_4 (width * 3);
|
||||||
outsize = ystride * height;
|
outsize = ystride * height;
|
||||||
type = "video/x-raw-rgb";
|
type = "video/x-raw-rgb";
|
||||||
|
rmask = 0x000000ff;
|
||||||
|
gmask = 0x0000ff00;
|
||||||
|
bmask = 0x00ff0000;
|
||||||
|
depth = 24;
|
||||||
|
bpp = 24;
|
||||||
} else if (!strcmp (str, "BGRA")) {
|
} else if (!strcmp (str, "BGRA")) {
|
||||||
format = GST_VIDEO_FORMAT_BGRA;
|
format = GST_VIDEO_FORMAT_BGRA;
|
||||||
pgroup = 4;
|
pgroup = 4;
|
||||||
ystride = width * 4;
|
ystride = width * 4;
|
||||||
outsize = ystride * height;
|
outsize = ystride * height;
|
||||||
type = "video/x-raw-rgb";
|
type = "video/x-raw-rgb";
|
||||||
|
rmask = 0x0000ff00;
|
||||||
|
gmask = 0x00ff0000;
|
||||||
|
bmask = 0xff000000;
|
||||||
|
amask = 0x000000ff;
|
||||||
|
depth = 32;
|
||||||
|
bpp = 32;
|
||||||
} else if (!strcmp (str, "YCbCr-4:4:4")) {
|
} else if (!strcmp (str, "YCbCr-4:4:4")) {
|
||||||
format = GST_VIDEO_FORMAT_AYUV;
|
format = GST_VIDEO_FORMAT_AYUV;
|
||||||
pgroup = 3;
|
pgroup = 3;
|
||||||
|
@ -236,6 +259,19 @@ gst_rtp_vraw_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps)
|
||||||
"format", GST_TYPE_FOURCC, fourcc,
|
"format", GST_TYPE_FOURCC, fourcc,
|
||||||
"framerate", GST_TYPE_FRACTION, 0, 1, NULL);
|
"framerate", GST_TYPE_FRACTION, 0, 1, NULL);
|
||||||
|
|
||||||
|
if (!strcmp (type, "video/x-raw-rgb")) {
|
||||||
|
gst_caps_set_simple (srccaps,
|
||||||
|
"endianness", G_TYPE_INT, BIG_ENDIAN,
|
||||||
|
"red_mask", G_TYPE_INT, rmask,
|
||||||
|
"green_mask", G_TYPE_INT, gmask,
|
||||||
|
"blue_mask", G_TYPE_INT, bmask,
|
||||||
|
"bpp", G_TYPE_INT, bpp, "depth", G_TYPE_INT, depth, NULL);
|
||||||
|
|
||||||
|
if (amask > 0) {
|
||||||
|
gst_caps_set_simple (srccaps, "alpha_mask", G_TYPE_INT, amask, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
res = gst_pad_set_caps (GST_BASE_RTP_DEPAYLOAD_SRCPAD (depayload), srccaps);
|
res = gst_pad_set_caps (GST_BASE_RTP_DEPAYLOAD_SRCPAD (depayload), srccaps);
|
||||||
gst_caps_unref (srccaps);
|
gst_caps_unref (srccaps);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue