]> git.sesse.net Git - casparcg/commitdiff
2.1.0: Hardware accelerate BGR and RGB.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 22 Mar 2012 19:43:10 +0000 (19:43 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 22 Mar 2012 19:43:10 +0000 (19:43 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.1.0@2714 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

accelerator/ogl/image/image_shader.cpp
core/frame/pixel_format.h
modules/ffmpeg/producer/util/util.cpp

index 1f9b6378b20330020d64a653b24fad504ed01434..39dce431e505666aec71be903bd0f0b76339485f 100644 (file)
@@ -242,6 +242,10 @@ std::string get_fragment(bool blend_modes)
        "                       vec3 y3 = get_sample(plane[0], gl_TexCoord[0].st, plane_size[0]).rrr;   \n"\r
        "                       return vec4((y3-0.065)/0.859, 1.0);                                                                             \n"\r
        "               }                                                                                                                                                       \n"\r
+       "       case 8:         //bgr,                                                                                                                          \n"\r
+       "               return vec4(get_sample(plane[0], gl_TexCoord[0].st, plane_size[0]).bgr, 1.0);\n"\r
+       "       case 9:         //rgb,                                                                                                                          \n"\r
+       "               return vec4(get_sample(plane[0], gl_TexCoord[0].st, plane_size[0]).rgb, 1.0);\n"\r
        "       }                                                                                                                                                               \n"\r
        "       return vec4(0.0, 0.0, 0.0, 0.0);                                                                                                \n"\r
        "}                                                                                                                                                                      \n"\r
index d14d9f2da44864ad8ccc039a7c7651df85f585dc..98469ce6a47ccb58f00c86a159c31057049914d9 100644 (file)
@@ -42,6 +42,8 @@ struct pixel_format_def
                ycbcr,\r
                ycbcra,\r
                luma,\r
+               bgr,\r
+               rgb,\r
                count,\r
                invalid,\r
        };\r
index 1a03aef886bee7a7c47d2c62d83a68a6b7e7aa59..ff5610c0d5d6312e4d536ff67ed66736b639ba5e 100644 (file)
@@ -113,6 +113,8 @@ core::pixel_format get_pixel_format(PixelFormat pix_fmt)
        switch(pix_fmt)\r
        {\r
        case PIX_FMT_GRAY8:                     return core::pixel_format::gray;\r
+       case PIX_FMT_RGB24:                     return core::pixel_format::rgb;\r
+       case PIX_FMT_BGR24:                     return core::pixel_format::bgr;\r
        case PIX_FMT_BGRA:                      return core::pixel_format::bgra;\r
        case PIX_FMT_ARGB:                      return core::pixel_format::argb;\r
        case PIX_FMT_RGBA:                      return core::pixel_format::rgba;\r
@@ -143,6 +145,12 @@ core::pixel_format_desc pixel_format_desc(PixelFormat pix_fmt, int width, int he
                        desc.planes.push_back(core::pixel_format_desc::plane(dummy_pict.linesize[0], height, 1));                                               \r
                        return desc;\r
                }\r
+       case core::pixel_format::bgr:\r
+       case core::pixel_format::rgb:\r
+               {\r
+                       desc.planes.push_back(core::pixel_format_desc::plane(dummy_pict.linesize[0]/3, height, 3));                                             \r
+                       return desc;\r
+               }\r
        case core::pixel_format::bgra:\r
        case core::pixel_format::argb:\r
        case core::pixel_format::rgba:\r
@@ -302,8 +310,15 @@ spl::shared_ptr<AVFrame> make_av_frame(std::array<uint8_t*, 4> data, const core:
                av_frame->data[n]         = data[n];\r
                av_frame->linesize[n] = planes[n].linesize;     \r
        }\r
+\r
        switch(format)\r
        {\r
+       case core::pixel_format::rgb:\r
+               av_frame->format = PIX_FMT_RGB24;\r
+               break;\r
+       case core::pixel_format::bgr:\r
+               av_frame->format = PIX_FMT_BGR24;\r
+               break;\r
        case core::pixel_format::rgba:\r
                av_frame->format = PIX_FMT_RGBA; \r
                break;\r