refresh frame fix, dblclk proxy viewer fix, vicon refresh fix for awdw resize, fix...
[goodguy/history.git] / cinelerra-5.1 / guicast / bccmodels.C
index 6fe12cbbe5b1bdc66e1bfb70823ef5b9d49da80d..5d3da1ec5e058aa8333fbce24581b55860b77fef 100644 (file)
@@ -29,10 +29,12 @@ int BC_CModels::is_planar(int colormodel)
        case BC_YUV420PI:
        case BC_YUV422P:
        case BC_YUV444P:
+       case BC_GBRP:
        case BC_YUV411P:
        case BC_YUV410P:
        case BC_RGB_FLOATP:
-       case BC_RGBA_FLOATP:  return 1;
+       case BC_RGBA_FLOATP:
+               return 1;
        }
        return 0;
 }
@@ -40,24 +42,39 @@ int BC_CModels::is_planar(int colormodel)
 int BC_CModels::components(int colormodel)
 {
        switch(colormodel) {
-       case BC_A8:           return 1;
-       case BC_A16:          return 1;
-       case BC_A_FLOAT:      return 1;
-       case BC_RGB888:       return 3;
-       case BC_RGBA8888:     return 4;
-       case BC_RGB161616:    return 3;
-       case BC_RGBA16161616: return 4;
-       case BC_YUV888:       return 3;
-       case BC_YUVA8888:     return 4;
-       case BC_YUV161616:    return 3;
-       case BC_YUVA16161616: return 4;
-       case BC_AYUV16161616: return 4;
-       case BC_YUV101010:    return 3;
-       case BC_RGB_FLOAT:    return 3;
-       case BC_RGBA_FLOAT:   return 4;
-       case BC_RGB_FLOATP:   return 3;
-       case BC_RGBA_FLOATP:  return 4;
+       case BC_RGB8:
+       case BC_RGB565:
+       case BC_BGR565:
+       case BC_BGR888:
+       case BC_RGB888:
+       case BC_RGB161616:
+       case BC_RGB_FLOAT:
+       case BC_BGR8888:
+       case BC_YUV888:
+       case BC_YUV161616:
+       case BC_UVY422:
+       case BC_YUV422:
+       case BC_YUV101010:
+       case BC_VYU888:
+               return 3;
+       case BC_RGBA8888:
+       case BC_ARGB8888:
+       case BC_ABGR8888:
+       case BC_RGBA16161616:
+       case BC_RGBA_FLOAT:
+       case BC_YUVA8888:
+       case BC_YUVA16161616:
+       case BC_UYVA8888:
+       case BC_AYUV16161616:
+               return 4;
+       case BC_A8:
+       case BC_A16:
+       case BC_A_FLOAT:
+       case BC_GREY8:
+       case BC_GREY16:
+               return 1;
        }
+// planar, compressed, transparent
        return 0;
 }
 
@@ -91,11 +108,14 @@ int BC_CModels::calculate_pixelsize(int colormodel)
        case BC_UYVA8888:     return 4;
        case BC_RGB_FLOAT:    return 12;
        case BC_RGBA_FLOAT:   return 16;
+       case BC_GREY8:        return 1;
+       case BC_GREY16:       return 2;
 // Planar
        case BC_YUV420P:      return 1;
        case BC_YUV420PI:     return 1;
        case BC_YUV422P:      return 1;
        case BC_YUV444P:      return 1;
+       case BC_GBRP:         return 1;
        case BC_YUV422:       return 2;
        case BC_UVY422:       return 2;
        case BC_YUV411P:      return 1;
@@ -126,6 +146,9 @@ int BC_CModels::calculate_max(int colormodel)
        case BC_RGBA_FLOAT:   return 1;
        case BC_RGB_FLOATP:   return 1;
        case BC_RGBA_FLOATP:  return 1;
+       case BC_GREY8:        return 0xff;
+       case BC_GREY16:       return 0xffff;
+       case BC_GBRP:         return 0xff;
        }
        return 0;
 }
@@ -139,6 +162,7 @@ int BC_CModels::calculate_datasize(int w, int h, int bytes_per_line, int color_m
        case BC_YUV411P: return w * h + w * h / 2 + 4;
        case BC_YUV422P: return w * h * 2 + 4;
        case BC_YUV444P: return w * h * 3 + 4;
+       case BC_GBRP:    return w * h * 3 + 4;
        case BC_RGB_FLOATP: return w * h * 3 * sizeof(float) + 4;
        case BC_RGBA_FLOATP: return w * h * 4 * sizeof(float) + 4;
        }
@@ -245,6 +269,8 @@ int BC_CModels::is_yuv(int colormodel)
        case BC_YUV444P:
        case BC_YUV411P:
        case BC_YUV410P:
+       case BC_GREY8:
+       case BC_GREY16:
                return 1;
        }
        return 0;