]> git.sesse.net Git - casparcg/commitdiff
2.0. ffmpeg_producer: Can't use YUV as separate alpha, convert it to BGRA until suppo...
authorRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sat, 13 Aug 2011 15:47:32 +0000 (15:47 +0000)
committerRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sat, 13 Aug 2011 15:47:32 +0000 (15:47 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1159 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/producer/frame/pixel_format.h
modules/ffmpeg/producer/util.cpp

index 3cbf8938ce58f888db76ca899d2872a40ae7279e..523cd683c3bde8b70d878f08bd6931e01099e8f2 100644 (file)
@@ -34,6 +34,7 @@ struct pixel_format
                abgr,\r
                ycbcr,\r
                ycbcra,\r
+               luma,\r
                count,\r
                invalid\r
        };\r
index 493203fe6619a09f34b5a8ed638f4aac7da321ef..8019ab3e8061014cb85a362d93b004794f5e895f 100644 (file)
@@ -164,7 +164,7 @@ core::pixel_format_desc get_pixel_format_desc(PixelFormat pix_fmt, size_t width,
 bool try_make_gray(const safe_ptr<AVFrame>& frame)\r
 {\r
        auto pix_fmt = get_pixel_format(static_cast<PixelFormat>(frame->format));\r
-       if(pix_fmt != core::pixel_format::invalid)\r
+       if(pix_fmt == PIX_FMT_RGBA || pix_fmt == PIX_FMT_BGRA)\r
                frame->format = PIX_FMT_GRAY8;\r
 \r
        return pix_fmt != core::pixel_format::invalid;\r
@@ -178,6 +178,10 @@ safe_ptr<core::write_frame> make_write_frame(const void* tag, const safe_ptr<AVF
        const auto height = decoded_frame->height;\r
        auto desc                 = get_pixel_format_desc(static_cast<PixelFormat>(decoded_frame->format), width, height);\r
        \r
+       // TODO: Can't handle YUV as alpha\r
+       if(hints & core::frame_producer::ALPHA_HINT && (desc.pix_fmt == core::pixel_format::ycbcr || desc.pix_fmt == core::pixel_format::ycbcra))\r
+               desc.pix_fmt = core::pixel_format::invalid;\r
+\r
        if(desc.pix_fmt == core::pixel_format::invalid)\r
        {\r
                auto pix_fmt = static_cast<PixelFormat>(decoded_frame->format);\r