[vlc-devel] [PATCH 06/10] libvlc: keep the aspect ratio string in the libvlc_media_player_t

Steve Lhomme robux4 at ycbcr.xyz
Mon May 27 15:38:18 CEST 2019


It will be free'd with the media_player
---
 include/vlc/libvlc_media_player.h | 3 +--
 lib/media_player.c                | 2 ++
 lib/media_player_internal.h       | 1 +
 lib/video.c                       | 6 ++++--
 4 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
index 01ad1cf849..68debb083e 100644
--- a/include/vlc/libvlc_media_player.h
+++ b/include/vlc/libvlc_media_player.h
@@ -1491,9 +1491,8 @@ LIBVLC_API void libvlc_video_set_scale( libvlc_media_player_t *p_mi, float f_fac
  *
  * \param p_mi the media player
  * \return the video aspect ratio or NULL if unspecified
- * (the result must be released with free()).
  */
-LIBVLC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi );
+LIBVLC_API const char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi );
 
 /**
  * Set new video aspect ratio.
diff --git a/lib/media_player.c b/lib/media_player.c
index 5e69f410dd..bdf11d3c7e 100644
--- a/lib/media_player.c
+++ b/lib/media_player.c
@@ -697,6 +697,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
     mp->p_md = NULL;
     mp->psz_audio_devid = NULL;
     mp->psz_crop_geometry = NULL;
+    mp->psz_aspect_ratio = NULL;
     mp->p_libvlc_instance = instance;
     /* use a reentrant lock to allow calling libvlc functions from callbacks */
     mp->player = vlc_player_New(VLC_OBJECT(mp), VLC_PLAYER_LOCK_REENTRANT,
@@ -800,6 +801,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
 
     free( p_mi->psz_audio_devid );
     free( p_mi->psz_crop_geometry );
+    free( p_mi->psz_aspect_ratio );
 
     vlc_http_cookie_jar_t *cookies = var_GetAddress( p_mi, "http-cookies" );
     if ( cookies )
diff --git a/lib/media_player_internal.h b/lib/media_player_internal.h
index 23d838682f..7564f46743 100644
--- a/lib/media_player_internal.h
+++ b/lib/media_player_internal.h
@@ -53,6 +53,7 @@ struct libvlc_media_player_t
     /* strings read by the host and released with the media_player */
     char *psz_audio_devid;
     char *psz_crop_geometry;
+    char *psz_aspect_ratio;
 };
 
 libvlc_track_description_t * libvlc_get_track_description(
diff --git a/lib/video.c b/lib/video.c
index 55eae0f049..6c26d33bac 100644
--- a/lib/video.c
+++ b/lib/video.c
@@ -229,9 +229,11 @@ void libvlc_video_set_scale( libvlc_media_player_t *p_mp, float f_scale )
     free (pp_vouts);
 }
 
-char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi )
+const char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi )
 {
-    return var_GetNonEmptyString (p_mi, "aspect-ratio");
+    free( p_mi->psz_aspect_ratio );
+    p_mi->psz_aspect_ratio = var_GetNonEmptyString (p_mi, "aspect-ratio");
+    return p_mi->psz_aspect_ratio;
 }
 
 void libvlc_video_set_aspect_ratio( libvlc_media_player_t *p_mi,
-- 
2.17.1



More information about the vlc-devel mailing list