# HG changeset patch # User rathann # Date 1274830439 0 # Node ID 390fbf2a9602264cac19db9f28f852134e20a2a3 # Parent 3daa43270d2cba8173b9716903efdcab8536ebf2 Provide a way to retrieve video resolution. Needed for correct aspect ratio support in VLC. Patch by Jean-Baptiste Kempf /jb*videolan#org\ diff -r 3daa43270d2c -r 390fbf2a9602 dvdnav.c --- a/dvdnav.c Sun Sep 06 15:26:43 2009 +0000 +++ b/dvdnav.c Tue May 25 23:33:59 2010 +0000 @@ -844,6 +844,22 @@ return retval; } +int dvdnav_get_video_resolution(dvdnav_t *this, uint32_t *width, uint32_t *height) { + int w, h; + + if(!this->started) { + printerr("Virtual DVD machine not started."); + return -1; + } + + pthread_mutex_lock(&this->vm_lock); + vm_get_video_res(this->vm, &w, &h); + pthread_mutex_unlock(&this->vm_lock); + + *width = w; + *height = h; + return 0; +} uint8_t dvdnav_get_video_scale_permission(dvdnav_t *this) { uint8_t retval; diff -r 3daa43270d2c -r 390fbf2a9602 dvdnav/dvdnav.h --- a/dvdnav/dvdnav.h Sun Sep 06 15:26:43 2009 +0000 +++ b/dvdnav/dvdnav.h Tue May 25 23:33:59 2010 +0000 @@ -553,6 +553,11 @@ uint8_t dvdnav_get_video_aspect(dvdnav_t *self); /* + * Get video resolution. + */ +int dvdnav_get_video_resolution(dvdnav_t *self, uint32_t *width, uint32_t *height); + +/* * Get video scaling permissions. * The scaling permission does only change on VTS boundaries. * See the DVDNAV_VTS_CHANGE event. diff -r 3daa43270d2c -r 390fbf2a9602 vm/vm.c --- a/vm/vm.c Sun Sep 06 15:26:43 2009 +0000 +++ b/vm/vm.c Tue May 25 23:33:59 2010 +0000 @@ -858,8 +858,8 @@ break; } } +#endif -/* currently unused */ void vm_get_video_res(vm_t *vm, int *width, int *height) { video_attr_t attr = vm_get_video_attr(vm); @@ -883,7 +883,6 @@ break; } } -#endif int vm_get_video_aspect(vm_t *vm) { int aspect = vm_get_video_attr(vm).display_aspect_ratio; diff -r 3daa43270d2c -r 390fbf2a9602 vm/vm.h --- a/vm/vm.h Sun Sep 06 15:26:43 2009 +0000 +++ b/vm/vm.h Tue May 25 23:33:59 2010 +0000 @@ -159,8 +159,8 @@ /* currently unused */ void vm_get_audio_info(vm_t *vm, int *current, int *num_avail); void vm_get_subp_info(vm_t *vm, int *current, int *num_avail); +#endif void vm_get_video_res(vm_t *vm, int *width, int *height); -#endif int vm_get_video_aspect(vm_t *vm); int vm_get_video_scale_permission(vm_t *vm); video_attr_t vm_get_video_attr(vm_t *vm);