diff options
author | Andreas Auras <yak54@inkennet.de> | 2011-03-02 15:21:01 +0100 |
---|---|---|
committer | Andreas Auras <yak54@inkennet.de> | 2011-03-02 15:21:01 +0100 |
commit | 9500bfd54e85d71a08857709a6c04048dd63403f (patch) | |
tree | 7f82ecda70e1b45f3ae625ef051a528add8f94be | |
parent | 78f834b5f5a4e7eb370296da304e63d4a89a5261 (diff) | |
download | xine-lib-9500bfd54e85d71a08857709a6c04048dd63403f.tar.gz xine-lib-9500bfd54e85d71a08857709a6c04048dd63403f.tar.bz2 |
Recognize changes of cropping parameters within a frame and trigger recalculation of displayed window.
This issue comes up when a post plugin only changes the cropping parameters of a frame without changing width, height or ratio of the frame.
--HG--
extra : rebase_source : 18832d5ec6acdb8ebe7a0d1d10ceaefb2aef663f
-rw-r--r-- | src/video_out/video_out_directfb.c | 10 | ||||
-rw-r--r-- | src/video_out/video_out_vdpau.c | 8 | ||||
-rw-r--r-- | src/video_out/video_out_vidix.c | 10 | ||||
-rw-r--r-- | src/video_out/video_out_xcbxv.c | 6 | ||||
-rw-r--r-- | src/video_out/video_out_xv.c | 6 | ||||
-rw-r--r-- | src/video_out/video_out_xvmc.c | 6 | ||||
-rw-r--r-- | src/video_out/video_out_xxmc.c | 6 |
7 files changed, 41 insertions, 11 deletions
diff --git a/src/video_out/video_out_directfb.c b/src/video_out/video_out_directfb.c index b9a21c179..d004939c2 100644 --- a/src/video_out/video_out_directfb.c +++ b/src/video_out/video_out_directfb.c @@ -701,9 +701,13 @@ static void directfb_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen lprintf ("failed=0x%08x.\n", failed); } - if (this->sc.delivered_width != frame->width || - this->sc.delivered_height != frame->height || - this->sc.delivered_ratio != frame->ratio) + if ( (frame->width != this->sc.delivered_width) + || (frame->height != this->sc.delivered_height) + || (frame->ratio != this->sc.delivered_ratio) + || (frame->vo_frame.crop_left != this->sc.crop_left) + || (frame->vo_frame.crop_right != this->sc.crop_right) + || (frame->vo_frame.crop_top != this->sc.crop_top) + || (frame->vo_frame.crop_bottom != this->sc.crop_bottom) ) { { lprintf ("forcing redraw.\n"); this->sc.force_redraw = 1; diff --git a/src/video_out/video_out_vdpau.c b/src/video_out/video_out_vdpau.c index 0c47417c7..66db3b587 100644 --- a/src/video_out/video_out_vdpau.c +++ b/src/video_out/video_out_vdpau.c @@ -1598,7 +1598,13 @@ static void vdpau_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) uint32_t mix_h = this->video_mixer_height; VdpTime stream_speed; - if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) || (frame->ratio != this->sc.delivered_ratio) ) { + if ( (frame->width != this->sc.delivered_width) || + (frame->height != this->sc.delivered_height) || + (frame->ratio != this->sc.delivered_ratio) || + (frame->vo_frame.crop_left != this->sc.crop_left) || + (frame->vo_frame.crop_right != this->sc.crop_right) || + (frame->vo_frame.crop_top != this->sc.crop_top) || + (frame->vo_frame.crop_bottom != this->sc.crop_bottom) ) { this->sc.force_redraw = 1; /* trigger re-calc of output size */ } diff --git a/src/video_out/video_out_vidix.c b/src/video_out/video_out_vidix.c index 74529ebec..fa476c492 100644 --- a/src/video_out/video_out_vidix.c +++ b/src/video_out/video_out_vidix.c @@ -648,9 +648,13 @@ static void vidix_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { pthread_mutex_lock(&this->mutex); if ( (frame->width != this->sc.delivered_width) - || (frame->height != this->sc.delivered_height) - || (frame->ratio != this->sc.delivered_ratio) - || (frame->format != this->delivered_format ) ) { + || (frame->height != this->sc.delivered_height) + || (frame->ratio != this->sc.delivered_ratio) + || (frame->format != this->delivered_format ) + || (frame->vo_frame.crop_left != this->sc.crop_left) + || (frame->vo_frame.crop_right != this->sc.crop_right) + || (frame->vo_frame.crop_top != this->sc.crop_top) + || (frame->vo_frame.crop_bottom != this->sc.crop_bottom) ) { lprintf("video_out_vidix: change frame format\n"); this->sc.delivered_width = frame->width; diff --git a/src/video_out/video_out_xcbxv.c b/src/video_out/video_out_xcbxv.c index 81a799dca..b10aa8e78 100644 --- a/src/video_out/video_out_xcbxv.c +++ b/src/video_out/video_out_xcbxv.c @@ -591,7 +591,11 @@ static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { */ if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio != this->sc.delivered_ratio) ) { + || (frame->ratio != this->sc.delivered_ratio) + || (frame->vo_frame.crop_left != this->sc.crop_left) + || (frame->vo_frame.crop_right != this->sc.crop_right) + || (frame->vo_frame.crop_top != this->sc.crop_top) + || (frame->vo_frame.crop_bottom != this->sc.crop_bottom) ) { lprintf("frame format changed\n"); this->sc.force_redraw = 1; /* trigger re-calc of output size */ } diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c index 5c994c351..59ba3cbfe 100644 --- a/src/video_out/video_out_xv.c +++ b/src/video_out/video_out_xv.c @@ -679,7 +679,11 @@ static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { */ if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio != this->sc.delivered_ratio) ) { + || (frame->ratio != this->sc.delivered_ratio) + || (frame->vo_frame.crop_left != this->sc.crop_left) + || (frame->vo_frame.crop_right != this->sc.crop_right) + || (frame->vo_frame.crop_top != this->sc.crop_top) + || (frame->vo_frame.crop_bottom != this->sc.crop_bottom) ) { lprintf("frame format changed\n"); this->sc.force_redraw = 1; /* trigger re-calc of output size */ } diff --git a/src/video_out/video_out_xvmc.c b/src/video_out/video_out_xvmc.c index 7a0535818..14961074c 100644 --- a/src/video_out/video_out_xvmc.c +++ b/src/video_out/video_out_xvmc.c @@ -938,7 +938,11 @@ static void xvmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio != this->sc.delivered_ratio) ) { + || (frame->ratio != this->sc.delivered_ratio) + || (frame->vo_frame.crop_left != this->sc.crop_left) + || (frame->vo_frame.crop_right != this->sc.crop_right) + || (frame->vo_frame.crop_top != this->sc.crop_top) + || (frame->vo_frame.crop_bottom != this->sc.crop_bottom) ) { lprintf("frame format changed\n"); /* diff --git a/src/video_out/video_out_xxmc.c b/src/video_out/video_out_xxmc.c index aa47eb2ae..e35ce5f12 100644 --- a/src/video_out/video_out_xxmc.c +++ b/src/video_out/video_out_xxmc.c @@ -1698,7 +1698,11 @@ static void xxmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) */ if ( (frame->width != this->sc.delivered_width) || (frame->height != this->sc.delivered_height) - || (frame->ratio != this->sc.delivered_ratio) ) { + || (frame->ratio != this->sc.delivered_ratio) + || (frame->vo_frame.crop_left != this->sc.crop_left) + || (frame->vo_frame.crop_right != this->sc.crop_right) + || (frame->vo_frame.crop_top != this->sc.crop_top) + || (frame->vo_frame.crop_bottom != this->sc.crop_bottom) ) { lprintf("frame format changed\n"); this->sc.force_redraw = 1; /* trigger re-calc of output size */ } |