[vlc-devel] [PATCH] libvlc: rename the aspect ratio setter/getter and use a fraction
Steve Lhomme
robux4 at ycbcr.xyz
Wed May 29 16:35:37 CEST 2019
On 2019-05-29 16:24, Rémi Denis-Courmont wrote:
> Le keskiviikkona 29. toukokuuta 2019, 17.16.00 EEST Steve Lhomme a écrit :
>> Using sample in the name is more accurate than just an "aspect ratio", even
>> though that's probably the one most people know.
>>
>> ---
>> how do we document APIs that are removed ?
>> ---
>> include/vlc/libvlc_media_player.h | 16 ++++++++++++----
>> lib/libvlc.sym | 4 ++--
>> lib/media_player.c | 2 +-
>> lib/video.c | 28 +++++++++++++++++++++-------
>> 4 files changed, 36 insertions(+), 14 deletions(-)
>>
>> diff --git a/include/vlc/libvlc_media_player.h
>> b/include/vlc/libvlc_media_player.h index 10e302529d..179597e80f 100644
>> --- a/include/vlc/libvlc_media_player.h
>> +++ b/include/vlc/libvlc_media_player.h
>> @@ -1486,23 +1486,31 @@ LIBVLC_API float libvlc_video_get_scale(
>> libvlc_media_player_t *p_mi ); */
>> LIBVLC_API void libvlc_video_set_scale( libvlc_media_player_t *p_mi, float
>> f_factor );
>>
>> +typedef struct libvlc_aspect_ratio_t
>> +{
>> + int numerator; /**< aspect ratio numerator */
>> + int denominator; /**< aspect ratio denominator, 0 if the source default
>> is used */
>> +} libvlc_aspect_ratio_t;
>
> AFAIK, denominator is unsigned, and structure seems overkill when there could
> just as well be two parameters.
Looking at the AR presets, it seems negative values are not supported.
I'd rather use unsigned for both.
>> +
>> /**
>> * Get current video aspect ratio.
>> *
>> * \param p_mi the media player
>> - * \return the video aspect ratio or NULL if unspecified
>> + * \param out the video aspect ratio
>> * (the result must be released with free() or libvlc_free()).
>> */
>> -LIBVLC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi
>> );
>> +LIBVLC_API void libvlc_video_get_sample_aspect_ratio(
>> libvlc_media_player_t *p_mi, +
>> libvlc_aspect_ratio_t *out );
>
> How do you communicate unset A/R here?
denominator /**< aspect ratio denominator, 0 if the source default is
used */
>>
>> /**
>> * Set new video aspect ratio.
>> *
>> * \param p_mi the media player
>> - * \param psz_aspect new video aspect-ratio or NULL to reset to default
>> + * \param aspect new video aspect-ratio or NULL to reset to default
>> * \note Invalid aspect ratios are ignored.
>> */
>> -LIBVLC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *p_mi,
>> const char *psz_aspect );
>> +LIBVLC_API void
>> libvlc_video_set_sample_aspect_ratio( libvlc_media_player_t *p_mi, +
>> const libvlc_aspect_ratio_t
>> *aspect );
>>
>> /**
>> * Create a video viewpoint structure.
>> diff --git a/lib/libvlc.sym b/lib/libvlc.sym
>> index 67b8efcba0..1ae26de315 100644
>> --- a/lib/libvlc.sym
>> +++ b/lib/libvlc.sym
>> @@ -218,7 +218,7 @@ libvlc_toggle_fullscreen
>> libvlc_track_description_list_release
>> libvlc_video_get_adjust_float
>> libvlc_video_get_adjust_int
>> -libvlc_video_get_aspect_ratio
>> +libvlc_video_get_sample_aspect_ratio
>> libvlc_video_get_crop_geometry
>> libvlc_video_get_size
>> libvlc_video_get_cursor
>> @@ -236,7 +236,7 @@ libvlc_video_get_track_count
>> libvlc_video_get_track_description
>> libvlc_video_set_adjust_float
>> libvlc_video_set_adjust_int
>> -libvlc_video_set_aspect_ratio
>> +libvlc_video_set_sample_aspect_ratio
>> libvlc_video_set_callbacks
>> libvlc_video_set_crop_geometry
>> libvlc_video_set_deinterlace
>> diff --git a/lib/media_player.c b/lib/media_player.c
>> index fd085c3793..ee7ff2e050 100644
>> --- a/lib/media_player.c
>> +++ b/lib/media_player.c
>> @@ -618,7 +618,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, "zoom", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
>> - var_Create (mp, "aspect-ratio", VLC_VAR_STRING);
>> + var_Create (mp, "aspect-ratio", VLC_VAR_COORDS);
>> var_Create (mp, "crop", VLC_VAR_STRING);
>> var_Create (mp, "deinterlace", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
>> var_Create (mp, "deinterlace-mode", VLC_VAR_STRING |
>> VLC_VAR_DOINHERIT); diff --git a/lib/video.c b/lib/video.c
>> index a318df0098..278c75eb9f 100644
>> --- a/lib/video.c
>> +++ b/lib/video.c
>> @@ -229,18 +229,31 @@ 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 )
>> +void libvlc_video_get_sample_aspect_ratio( libvlc_media_player_t *p_mi,
>> + libvlc_aspect_ratio_t *out )
>> {
>> - return var_GetNonEmptyString (p_mi, "aspect-ratio");
>> + int32_t num,den;
>> + var_GetCoords(p_mi, "aspect-ratio", &num, &den);
>> + out->numerator = num;
>> + out->denominator = den;
>> }
>>
>> -void libvlc_video_set_aspect_ratio( libvlc_media_player_t *p_mi,
>> - const char *psz_aspect )
>> +void libvlc_video_set_sample_aspect_ratio( libvlc_media_player_t *p_mi,
>> + const libvlc_aspect_ratio_t
>> *aspect ) {
>> - if (psz_aspect == NULL)
>> - psz_aspect = "";
>> - var_SetString (p_mi, "aspect-ratio", psz_aspect);
>>
>> + char *psz_aspect;
>> + if (aspect == NULL)
>> + {
>> + var_SetCoords(p_mi, "aspect-ratio", 0, 0);
>> + psz_aspect = "";
>> + }
>> + else
>> + {
>> + if (asprintf(&psz_aspect, "%d:%d", aspect->numerator,
>> aspect->denominator) == -1 ) + return;
>> + var_SetCoords(p_mi, "aspect-ratio", aspect->numerator,
>> aspect->denominator); + }
>> size_t n;
>> vout_thread_t **pp_vouts = GetVouts (p_mi, &n);
>> for (size_t i = 0; i < n; i++)
>> @@ -251,6 +264,7 @@ void libvlc_video_set_aspect_ratio(
>> libvlc_media_player_t *p_mi, vout_Release(p_vout);
>> }
>> free (pp_vouts);
>> + free(psz_aspect);
>> }
>>
>> libvlc_video_viewpoint_t *libvlc_video_new_viewpoint(void)
>
>
> --
> Реми Дёни-Курмон
> http://www.remlab.net/
>
>
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
>
More information about the vlc-devel
mailing list