diff options
author | Torsten Jager <t.jager@gmx.de> | 2012-08-29 09:38:24 +0300 |
---|---|---|
committer | Torsten Jager <t.jager@gmx.de> | 2012-08-29 09:38:24 +0300 |
commit | 6cad9134463bc234e64805d38afe6a20b52877df (patch) | |
tree | 2cac21748104a542092bd6fee9a257323abbb369 | |
parent | 972525259631802d6cc970a0e02e017777c42943 (diff) | |
download | xine-lib-6cad9134463bc234e64805d38afe6a20b52877df.tar.gz xine-lib-6cad9134463bc234e64805d38afe6a20b52877df.tar.bz2 |
color_matrix: recognize cropped letterbox HD (eg 1280x540)
-rw-r--r-- | src/video_out/color_matrix.c | 3 | ||||
-rw-r--r-- | src/xine-engine/video_out.c | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/video_out/color_matrix.c b/src/video_out/color_matrix.c index 7047559ad..f807a0e92 100644 --- a/src/video_out/color_matrix.c +++ b/src/video_out/color_matrix.c @@ -166,7 +166,8 @@ static int cm_from_frame (vo_frame_t *frame) { int cm = VO_GET_FLAGS_CM (frame->flags); int cf = this->cm_state; - cm_m[10] = (frame->height - frame->crop_top - frame->crop_bottom) >= 720 ? 1 : 5; + cm_m[10] = (frame->height - frame->crop_top - frame->crop_bottom >= 720) || + (frame->width - frame->crop_left - frame->crop_right >= 1280) ? 1 : 5; cm_r[0] = cm & 1; return ((cm_m[((cf >> 2) << 3) | (cm >> 1)] << 1) | cm_r[cf & 2]); } diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c index c934578ce..4fc54e922 100644 --- a/src/xine-engine/video_out.c +++ b/src/xine-engine/video_out.c @@ -544,7 +544,9 @@ static int vo_grab_grab_video_frame (xine_grab_video_frame_t *frame_gen) { return -1; /* error happened */ } if ((cm >> 1) == 2) /* color matrix undefined */ - cm = (cm & 1) | (vo_frame->height - vo_frame->crop_top - vo_frame->crop_bottom >= 720 ? 2 : 10); + cm = (cm & 1) | + ((vo_frame->height - vo_frame->crop_top - vo_frame->crop_bottom >= 720) || + (vo_frame->width - vo_frame->crop_left - vo_frame->crop_right >= 1280) ? 2 : 10); else if ((cm >> 1) == 0) /* converted RGB source, always ITU 601 */ cm = (cm & 1) | 10; frame->yuv2rgb_factory->set_csc_levels (frame->yuv2rgb_factory, 0, 128, 128, cm); |