Browse Source

libvlc: add API to get/set the video fit mode

pull/162/head
Steve Lhomme 2 years ago
parent
commit
ffd9f613a7
  1. 28
      include/vlc/libvlc_media_player.h
  2. 2
      lib/libvlc.sym
  3. 1
      lib/media_player.c
  4. 22
      lib/video.c

28
include/vlc/libvlc_media_player.h

@ -147,6 +147,17 @@ typedef enum libvlc_position_t {
libvlc_position_bottom_right
} libvlc_position_t;
/**
* Enumeration of values used to set the video fitting inside the display area.
*/
typedef enum libvlc_video_fit_mode_t {
libvlc_video_fit_none, /**< Explicit zoom set by \ref libvlc_video_set_scale */
libvlc_video_fit_smaller, /**< Fit inside / to smallest display dimension */
libvlc_video_fit_larger, /**< Fit outside / to largest display dimension */
libvlc_video_fit_width, /**< Fit to display width */
libvlc_video_fit_height, /**< Fit to display height */
} libvlc_video_fit_mode_t;
/**
* Enumeration of teletext keys than can be passed via
* libvlc_video_set_teletext()
@ -1881,6 +1892,23 @@ LIBVLC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi );
*/
LIBVLC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *p_mi, const char *psz_aspect );
/**
* Get current video display fit mode.
*
* \param p_mi the media player
* \return the video display fit mode.
*/
LIBVLC_API libvlc_video_fit_mode_t libvlc_video_get_display_fit( libvlc_media_player_t *p_mi );
/**
* Set new video display fit.
*
* \param p_mi the media player
* \param fit new display fit mode
* \note Invalid fit mode are ignored.
*/
LIBVLC_API void libvlc_video_set_display_fit( libvlc_media_player_t *p_mi, libvlc_video_fit_mode_t fit );
/**
* Create a video viewpoint structure.
*

2
lib/libvlc.sym

@ -251,6 +251,8 @@ libvlc_video_set_callbacks
libvlc_video_set_crop_ratio
libvlc_video_set_crop_window
libvlc_video_set_crop_border
libvlc_video_get_display_fit
libvlc_video_set_display_fit
libvlc_video_set_deinterlace
libvlc_video_set_format
libvlc_video_set_format_callbacks

1
lib/media_player.c

@ -689,6 +689,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
var_Create (mp, "fullscreen", VLC_VAR_BOOL);
var_Create (mp, "autoscale", VLC_VAR_BOOL | VLC_VAR_DOINHERIT);
var_Create (mp, "fit", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
var_Create (mp, "zoom", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
var_Create (mp, "aspect-ratio", VLC_VAR_STRING);
var_Create (mp, "crop", VLC_VAR_STRING);

22
lib/video.c

@ -252,6 +252,28 @@ void libvlc_video_set_aspect_ratio( libvlc_media_player_t *p_mi,
free (pp_vouts);
}
libvlc_video_fit_mode_t libvlc_video_get_display_fit( libvlc_media_player_t *p_mi )
{
return var_GetInteger (p_mi, "fit");
}
void libvlc_video_set_display_fit( libvlc_media_player_t *p_mi, libvlc_video_fit_mode_t fit )
{
var_SetInteger (p_mi, "fit", fit);
size_t n;
vout_thread_t **pp_vouts = GetVouts (p_mi, &n);
for (size_t i = 0; i < n; i++)
{
vout_thread_t *p_vout = pp_vouts[i];
var_SetInteger (p_vout, "fit", fit);
vout_Release(p_vout);
}
free (pp_vouts);
}
libvlc_video_viewpoint_t *libvlc_video_new_viewpoint(void)
{
libvlc_video_viewpoint_t *p_vp = malloc(sizeof *p_vp);

Loading…
Cancel
Save