summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Jager <t.jager@gmx.de>2012-08-29 09:38:24 +0300
committerTorsten Jager <t.jager@gmx.de>2012-08-29 09:38:24 +0300
commit6cad9134463bc234e64805d38afe6a20b52877df (patch)
tree2cac21748104a542092bd6fee9a257323abbb369
parent972525259631802d6cc970a0e02e017777c42943 (diff)
downloadxine-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.c3
-rw-r--r--src/xine-engine/video_out.c4
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);