vlc | branch: master | KO Myung-Hun <[email protected]> | Sat Apr 5 23:59:33 2014 +0900| [52ffdd1c4d40224c129e3960b7c8e0b59428ed22] | committer: Rémi Denis-Courmont
kva: handle rotated movies Signed-off-by: Rémi Denis-Courmont <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=52ffdd1c4d40224c129e3960b7c8e0b59428ed22 --- modules/video_output/kva.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/modules/video_output/kva.c b/modules/video_output/kva.c index 9b149db..d9aee64 100644 --- a/modules/video_output/kva.c +++ b/modules/video_output/kva.c @@ -151,7 +151,8 @@ static void PMThread( void *arg ) ULONG i_kva_mode; /* */ - video_format_t fmt = vd->fmt; + video_format_t fmt; + video_format_ApplyRotation(&fmt, &vd->fmt); /* */ vout_display_info_t info = vd->info; @@ -501,22 +502,27 @@ static int Control( vout_display_t *vd, int query, va_list args ) case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT: case VOUT_DISPLAY_CHANGE_SOURCE_CROP: { - const video_format_t *source = va_arg(args, const video_format_t *); + const video_format_t *src = va_arg(args, const video_format_t *); if( query == VOUT_DISPLAY_CHANGE_SOURCE_ASPECT ) { - sys->kvas.ulAspectWidth = ( int64_t )source->i_width * - source->i_sar_num / source->i_sar_den; - sys->kvas.ulAspectHeight = source->i_height; + vout_display_place_t place; + vout_display_PlacePicture(&place, src, vd->cfg, false); + + sys->kvas.ulAspectWidth = place.width; + sys->kvas.ulAspectHeight = place.height; } else { - sys->kvas.rclSrcRect.xLeft = source->i_x_offset; - sys->kvas.rclSrcRect.yTop = source->i_y_offset; - sys->kvas.rclSrcRect.xRight = source->i_x_offset + - source->i_visible_width; - sys->kvas.rclSrcRect.yBottom = source->i_y_offset + - source->i_visible_height; + video_format_t src_rot; + video_format_ApplyRotation(&src_rot, src); + + sys->kvas.rclSrcRect.xLeft = src_rot.i_x_offset; + sys->kvas.rclSrcRect.yTop = src_rot.i_y_offset; + sys->kvas.rclSrcRect.xRight = src_rot.i_x_offset + + src_rot.i_visible_width; + sys->kvas.rclSrcRect.yBottom = src_rot.i_y_offset + + src_rot.i_visible_height; } kvaSetup( &sys->kvas ); @@ -632,8 +638,8 @@ static int OpenDisplay( vout_display_t *vd, video_format_t *fmt ) msg_Dbg( vd, "output chroma = %4.4s", ( const char * )&fmt->i_chroma ); msg_Dbg( vd, "KVA chroma = %4.4s", ( const char * )&i_kva_fourcc ); - w = vd->source.i_width; - h = vd->source.i_height; + w = fmt->i_width; + h = fmt->i_height; sys->kvas.ulLength = sizeof( KVASETUP ); sys->kvas.szlSrcSize.cx = w; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
