diff options
author | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-03-18 12:31:53 +0000 |
---|---|---|
committer | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-03-18 12:31:53 +0000 |
commit | f605cf5f93b441bccd5c8e517bb71a66c71812b1 (patch) | |
tree | 10f114203d2c9198cd1e9e749cab5fadc63f66b6 | |
parent | 01c2a013f89f708176662dbe2761bcb1378cf9c5 (diff) | |
download | mpv-f605cf5f93b441bccd5c8e517bb71a66c71812b1.tar.bz2 mpv-f605cf5f93b441bccd5c8e517bb71a66c71812b1.tar.xz |
fix full range (jpeg yuv) chroma
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22713 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libswscale/swscale.c | 7 | ||||
-rw-r--r-- | libswscale/yuv2rgb.c | 5 | ||||
-rw-r--r-- | libswscale/yuv2rgb_init.c | 5 |
3 files changed, 16 insertions, 1 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c index f034c54071..f6a23425bf 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -1876,7 +1876,12 @@ int sws_setColorspaceDetails(SwsContext *c, const int inv_table[4], int srcRange if(!srcRange){ cy= (cy*255) / 219; oy= 16<<16; - } + }else{ + crv= (crv*224) / 255; + cbu= (cbu*224) / 255; + cgu= (cgu*224) / 255; + cgv= (cgv*224) / 255; + } cy = (cy *contrast )>>16; crv= (crv*contrast * saturation)>>32; diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c index 3e81866498..af7f86f401 100644 --- a/libswscale/yuv2rgb.c +++ b/libswscale/yuv2rgb.c @@ -670,6 +670,11 @@ int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, if(!fullRange){ cy= (cy*255) / 219; oy= 16<<16; + }else{ + crv= (crv*224) / 255; + cbu= (cbu*224) / 255; + cgu= (cgu*224) / 255; + cgv= (cgv*224) / 255; } cy = (cy *contrast )>>16; diff --git a/libswscale/yuv2rgb_init.c b/libswscale/yuv2rgb_init.c index 14c46b0e40..371dce5da2 100644 --- a/libswscale/yuv2rgb_init.c +++ b/libswscale/yuv2rgb_init.c @@ -263,6 +263,11 @@ int yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4], int fullRange, if (fullRange) { cy = 1 << 16; oy = 0; + crv= (crv*224) / 255; + cbu= (cbu*224) / 255; + cgu= (cgu*224) / 255; + cgv= (cgv*224) / 255; + //FIXME maybe its cleaner if the tables where based on full range (*244/255) } else { cy = ((1 << 16) * 255) / 219; oy= 16 << 16; |