From: ronag Date: Thu, 11 Aug 2011 12:55:19 +0000 (+0000) Subject: 2.0. Optimized YUV conversion. X-Git-Tag: 2.0.1~198 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=09c4788a3d69c07720c6054e394e8011949b0678;p=casparcg 2.0. Optimized YUV conversion. git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1142 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- diff --git a/core/mixer/image/image_kernel.cpp b/core/mixer/image/image_kernel.cpp index 013d6b801..bb6da6b5b 100644 --- a/core/mixer/image/image_kernel.cpp +++ b/core/mixer/image/image_kernel.cpp @@ -177,40 +177,51 @@ struct image_kernel::implementation : boost::noncopyable (compability_mode ? get_simple_blend_color_func() : get_blend_color_func()) + - - " \n" - "// NOTE: YCbCr, ITU-R, http://www.intersil.com/data/an/an9717.pdf \n" - "// TODO: Support for more yuv formats might be needed. \n" + "//http://slouken.blogspot.com/2011/02/mpeg-acceleration-with-glsl.html \n" "vec4 ycbcra_to_rgba_sd(float y, float cb, float cr, float a) \n" "{ \n" - " cb -= 0.5; \n" - " cr -= 0.5; \n" - " y = 1.164*(y-0.0625); \n" + " // YUV offset \n" + " const vec3 offset = vec3(-0.0625, -0.5, -0.5); \n" + " \n" + " // RGB coefficients \n" + " const vec3 Rcoeff = vec3(1.164, 0.000, 1.596); \n" + " const vec3 Gcoeff = vec3(1.164, -0.391, -0.813); \n" + " const vec3 Bcoeff = vec3(1.164, 2.018, 0.000); \n" " \n" - " vec4 color; \n" - " color.r = y + 2.018 * cb; \n" - " color.b = y + 1.596 * cr; \n" - " color.g = y - 0.813 * cr - 0.391 * cb; \n" - " color.a = a; \n" + " vec3 yuv = vec3(y, cr, cb); \n" + " vec4 rgba; \n" " \n" - " return color; \n" + " yuv += offset; \n" + " rgba.r = dot(yuv, Rcoeff); \n" + " rgba.g = dot(yuv, Gcoeff); \n" + " rgba.b = dot(yuv, Bcoeff); \n" + " rgba.a = a; \n" + " \n" + " return rgba; \n" "} \n" " \n" "vec4 ycbcra_to_rgba_hd(float y, float cb, float cr, float a) \n" "{ \n" - " cb -= 0.5; \n" - " cr -= 0.5; \n" - " y = 1.164*(y-0.0625); \n" + " // YUV offset \n" + " const vec3 offset = vec3(-0.0625, -0.5, -0.5); \n" + " \n" + " // RGB coefficients \n" + " const vec3 Rcoeff = vec3(1.164, 0.000, 1.793); \n" + " const vec3 Gcoeff = vec3(1.164, -0.213, -0.534); \n" + " const vec3 Bcoeff = vec3(1.164, 2.115, 0.000); \n" + " \n" + " vec3 yuv = vec3(y, cr, cb); \n" + " vec4 rgba; \n" " \n" - " vec4 color; \n" - " color.r = y + 2.115 * cb; \n" - " color.b = y + 1.793 * cr; \n" - " color.g = y - 0.534 * cr - 0.213 * cb; \n" - " color.a = a; \n" + " yuv += offset; \n" + " rgba.r = dot(yuv, Rcoeff); \n" + " rgba.g = dot(yuv, Gcoeff); \n" + " rgba.b = dot(yuv, Bcoeff); \n" + " rgba.a = a; \n" " \n" - " return color; \n" + " return rgba; \n" "} \n" - " \n" + " \n" "vec4 ycbcra_to_rgba(float y, float cb, float cr, float a) \n" "{ \n" " if(is_hd) \n" diff --git a/shell/casparcg.config b/shell/casparcg.config index 91558aba7..43cce0d66 100644 --- a/shell/casparcg.config +++ b/shell/casparcg.config @@ -45,6 +45,16 @@ + + 1080p5000 + + + 2 + true + true + + + diff --git a/shell/main.cpp b/shell/main.cpp index 98b8a25d7..acca06142 100644 --- a/shell/main.cpp +++ b/shell/main.cpp @@ -179,7 +179,7 @@ int main(int argc, wchar_t* argv[]) tbb_thread_installer(){observe(true);} void on_scheduler_entry(bool is_worker) { - caspar::detail::SetThreadName(GetCurrentThreadId(), "tbb-worker-thread"); + //caspar::detail::SetThreadName(GetCurrentThreadId(), "tbb-worker-thread"); caspar::win32_exception::install_handler(); } } tbb_thread_installer;