summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gst/ffmpegcolorspace/imgconvert.c49
-rw-r--r--gst/ffmpegcolorspace/imgconvert_template.h104
2 files changed, 153 insertions, 0 deletions
diff --git a/gst/ffmpegcolorspace/imgconvert.c b/gst/ffmpegcolorspace/imgconvert.c
index 16740a19c..244513820 100644
--- a/gst/ffmpegcolorspace/imgconvert.c
+++ b/gst/ffmpegcolorspace/imgconvert.c
@@ -2532,2 +2532,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_RGB24, PIX_FMT_GRAY8, rgb24_to_gray},
+ {PIX_FMT_RGB24, PIX_FMT_GRAY16_L, rgb24_to_gray16_l},
+ {PIX_FMT_RGB24, PIX_FMT_GRAY16_B, rgb24_to_gray16_b},
{PIX_FMT_RGB24, PIX_FMT_PAL8, rgb24_to_pal8},
@@ -2546,2 +2548,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_RGB32, PIX_FMT_GRAY8, rgb32_to_gray},
+ {PIX_FMT_RGB32, PIX_FMT_GRAY16_L, rgb32_to_gray16_l},
+ {PIX_FMT_RGB32, PIX_FMT_GRAY16_B, rgb32_to_gray16_b},
@@ -2553,2 +2557,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_xRGB32, PIX_FMT_GRAY8, xrgb32_to_gray},
+ {PIX_FMT_xRGB32, PIX_FMT_GRAY16_L, xrgb32_to_gray16_l},
+ {PIX_FMT_xRGB32, PIX_FMT_GRAY16_B, xrgb32_to_gray16_b},
@@ -2567,2 +2573,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_RGBA32, PIX_FMT_GRAY8, rgba32_to_gray},
+ {PIX_FMT_RGBA32, PIX_FMT_GRAY16_L, rgba32_to_gray16_l},
+ {PIX_FMT_RGBA32, PIX_FMT_GRAY16_B, rgba32_to_gray16_b},
{PIX_FMT_RGBA32, PIX_FMT_AYUV4444, rgba32_to_ayuv4444},
@@ -2574,2 +2582,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_BGR24, PIX_FMT_GRAY8, bgr24_to_gray},
+ {PIX_FMT_BGR24, PIX_FMT_GRAY16_L, bgr24_to_gray16_l},
+ {PIX_FMT_BGR24, PIX_FMT_GRAY16_B, bgr24_to_gray16_b},
@@ -2581,2 +2591,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_BGR32, PIX_FMT_GRAY8, bgr32_to_gray},
+ {PIX_FMT_BGR32, PIX_FMT_GRAY16_L, bgr32_to_gray16_l},
+ {PIX_FMT_BGR32, PIX_FMT_GRAY16_B, bgr32_to_gray16_b},
@@ -2588,2 +2600,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_BGRx32, PIX_FMT_GRAY8, bgrx32_to_gray},
+ {PIX_FMT_BGRx32, PIX_FMT_GRAY16_L, bgrx32_to_gray16_l},
+ {PIX_FMT_BGRx32, PIX_FMT_GRAY16_B, bgrx32_to_gray16_b},
@@ -2595,2 +2609,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_BGRA32, PIX_FMT_GRAY8, bgra32_to_gray},
+ {PIX_FMT_BGRA32, PIX_FMT_GRAY16_L, bgra32_to_gray16_l},
+ {PIX_FMT_BGRA32, PIX_FMT_GRAY16_B, bgra32_to_gray16_b},
{PIX_FMT_BGRA32, PIX_FMT_AYUV4444, bgra32_to_ayuv4444},
@@ -2603,2 +2619,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_ABGR32, PIX_FMT_GRAY8, abgr32_to_gray},
+ {PIX_FMT_ABGR32, PIX_FMT_GRAY16_L, abgr32_to_gray16_l},
+ {PIX_FMT_ABGR32, PIX_FMT_GRAY16_B, abgr32_to_gray16_b},
@@ -2610,2 +2628,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_ARGB32, PIX_FMT_GRAY8, argb32_to_gray},
+ {PIX_FMT_ARGB32, PIX_FMT_GRAY16_L, argb32_to_gray16_l},
+ {PIX_FMT_ARGB32, PIX_FMT_GRAY16_B, argb32_to_gray16_b},
@@ -2618,2 +2638,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_RGB555, PIX_FMT_GRAY8, rgb555_to_gray},
+ {PIX_FMT_RGB555, PIX_FMT_GRAY16_L, rgb555_to_gray16_l},
+ {PIX_FMT_RGB555, PIX_FMT_GRAY16_B, rgb555_to_gray16_b},
@@ -2624,2 +2646,4 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_RGB565, PIX_FMT_GRAY8, rgb565_to_gray},
+ {PIX_FMT_RGB565, PIX_FMT_GRAY16_L, rgb565_to_gray16_l},
+ {PIX_FMT_RGB565, PIX_FMT_GRAY16_B, rgb565_to_gray16_b},
@@ -2647,4 +2671,29 @@ static ConvertEntry convert_table[] = {
{PIX_FMT_GRAY16_L, PIX_FMT_GRAY8, gray16_l_to_gray},
+ {PIX_FMT_GRAY16_L, PIX_FMT_RGB555, gray16_l_to_rgb555},
+ {PIX_FMT_GRAY16_L, PIX_FMT_RGB565, gray16_l_to_rgb565},
+ {PIX_FMT_GRAY16_L, PIX_FMT_BGR24, gray16_l_to_bgr24},
+ {PIX_FMT_GRAY16_L, PIX_FMT_RGB24, gray16_l_to_rgb24},
+ {PIX_FMT_GRAY16_L, PIX_FMT_BGR32, gray16_l_to_bgr32},
+ {PIX_FMT_GRAY16_L, PIX_FMT_RGB32, gray16_l_to_rgb32},
+ {PIX_FMT_GRAY16_L, PIX_FMT_xRGB32, gray16_l_to_xrgb32},
+ {PIX_FMT_GRAY16_L, PIX_FMT_BGRx32, gray16_l_to_bgrx32},
+ {PIX_FMT_GRAY16_L, PIX_FMT_ABGR32, gray16_l_to_abgr32},
+ {PIX_FMT_GRAY16_L, PIX_FMT_ARGB32, gray16_l_to_argb32},
+ {PIX_FMT_GRAY16_L, PIX_FMT_BGRA32, gray16_l_to_bgra32},
+ {PIX_FMT_GRAY16_L, PIX_FMT_RGBA32, gray16_l_to_rgba32},
{PIX_FMT_GRAY16_L, PIX_FMT_GRAY16_B, gray16_b_to_gray16_l},
+
{PIX_FMT_GRAY16_B, PIX_FMT_GRAY8, gray16_b_to_gray},
+ {PIX_FMT_GRAY16_B, PIX_FMT_RGB555, gray16_b_to_rgb555},
+ {PIX_FMT_GRAY16_B, PIX_FMT_RGB565, gray16_b_to_rgb565},
+ {PIX_FMT_GRAY16_B, PIX_FMT_BGR24, gray16_b_to_bgr24},
+ {PIX_FMT_GRAY16_B, PIX_FMT_RGB24, gray16_b_to_rgb24},
+ {PIX_FMT_GRAY16_B, PIX_FMT_BGR32, gray16_b_to_bgr32},
+ {PIX_FMT_GRAY16_B, PIX_FMT_RGB32, gray16_b_to_rgb32},
+ {PIX_FMT_GRAY16_B, PIX_FMT_xRGB32, gray16_b_to_xrgb32},
+ {PIX_FMT_GRAY16_B, PIX_FMT_BGRx32, gray16_b_to_bgrx32},
+ {PIX_FMT_GRAY16_B, PIX_FMT_ABGR32, gray16_b_to_abgr32},
+ {PIX_FMT_GRAY16_B, PIX_FMT_ARGB32, gray16_b_to_argb32},
+ {PIX_FMT_GRAY16_B, PIX_FMT_BGRA32, gray16_b_to_bgra32},
+ {PIX_FMT_GRAY16_B, PIX_FMT_RGBA32, gray16_b_to_rgba32},
{PIX_FMT_GRAY16_B, PIX_FMT_GRAY16_L, gray16_b_to_gray16_l},
diff --git a/gst/ffmpegcolorspace/imgconvert_template.h b/gst/ffmpegcolorspace/imgconvert_template.h
index b495e605b..0ade4fa90 100644
--- a/gst/ffmpegcolorspace/imgconvert_template.h
+++ b/gst/ffmpegcolorspace/imgconvert_template.h
@@ -753,2 +753,106 @@ static void glue(gray_to_, RGB_NAME)(AVPicture *dst, const AVPicture *src,
+static void glue(RGB_NAME, _to_gray16_l)(AVPicture *dst, const AVPicture *src,
+ int width, int height)
+{
+ const unsigned char *p;
+ unsigned char *q;
+ int r, g, b, dst_wrap, src_wrap;
+ int x, y;
+
+ p = src->data[0];
+ src_wrap = src->linesize[0] - BPP * width;
+
+ q = dst->data[0];
+ dst_wrap = dst->linesize[0] - 2 * width;
+
+ for(y=0;y<height;y++) {
+ for(x=0;x<width;x++) {
+ RGB_IN(r, g, b, p);
+ GST_WRITE_UINT16_LE (q, RGB_TO_Y(r, g, b) << 8);
+ q += 2;
+ p += BPP;
+ }
+ p += src_wrap;
+ q += dst_wrap;
+ }
+}
+
+static void glue(gray16_l_to_, RGB_NAME)(AVPicture *dst, const AVPicture *src,
+ int width, int height)
+{
+ const unsigned char *p;
+ unsigned char *q;
+ int r, dst_wrap, src_wrap;
+ int x, y;
+
+ p = src->data[0];
+ src_wrap = src->linesize[0] - 2 * width;
+
+ q = dst->data[0];
+ dst_wrap = dst->linesize[0] - BPP * width;
+
+ for(y=0;y<height;y++) {
+ for(x=0;x<width;x++) {
+ r = GST_READ_UINT16_LE (p) >> 8;
+ RGB_OUT(q, r, r, r);
+ q += BPP;
+ p += 2;
+ }
+ p += src_wrap;
+ q += dst_wrap;
+ }
+}
+
+static void glue(RGB_NAME, _to_gray16_b)(AVPicture *dst, const AVPicture *src,
+ int width, int height)
+{
+ const unsigned char *p;
+ unsigned char *q;
+ int r, g, b, dst_wrap, src_wrap;
+ int x, y;
+
+ p = src->data[0];
+ src_wrap = src->linesize[0] - BPP * width;
+
+ q = dst->data[0];
+ dst_wrap = dst->linesize[0] - 2 * width;
+
+ for(y=0;y<height;y++) {
+ for(x=0;x<width;x++) {
+ RGB_IN(r, g, b, p);
+ GST_WRITE_UINT16_BE (q, RGB_TO_Y(r, g, b) << 8);
+ q += 2;
+ p += BPP;
+ }
+ p += src_wrap;
+ q += dst_wrap;
+ }
+}
+
+static void glue(gray16_b_to_, RGB_NAME)(AVPicture *dst, const AVPicture *src,
+ int width, int height)
+{
+ const unsigned char *p;
+ unsigned char *q;
+ int r, dst_wrap, src_wrap;
+ int x, y;
+
+ p = src->data[0];
+ src_wrap = src->linesize[0] - 2 * width;
+
+ q = dst->data[0];
+ dst_wrap = dst->linesize[0] - BPP * width;
+
+ for(y=0;y<height;y++) {
+ for(x=0;x<width;x++) {
+ r = GST_READ_UINT16_BE (p) >> 8;
+ RGB_OUT(q, r, r, r);
+ q += BPP;
+ p += 2;
+ }
+ p += src_wrap;
+ q += dst_wrap;
+ }
+}
+
static void glue(pal8_to_, RGB_NAME)(AVPicture *dst, const AVPicture *src,