[vlc-devel] [PATCH] libvlc: add a function to release a viewpoint

Steve Lhomme robux4 at ycbcr.xyz
Mon Jun 3 15:18:55 CEST 2019


On 2019-06-03 15:07, Hugo Beauzée-Luyssen wrote:
> On Mon, Jun 3, 2019, at 3:01 PM, Steve Lhomme wrote:
>> Allocated by libvlc_video_new_viewpoint()
>>
>> And deprecate the one that said free() could be used.
>> ---
>>   include/vlc/deprecated.h          | 13 +++++++++++++
>>   include/vlc/libvlc_media.h        |  4 ++--
>>   include/vlc/libvlc_media_player.h | 16 ++++++++++++----
>>   lib/libvlc.sym                    |  2 ++
>>   lib/video.c                       |  7 ++++++-
>>   5 files changed, 35 insertions(+), 7 deletions(-)
>>
>> diff --git a/include/vlc/deprecated.h b/include/vlc/deprecated.h
>> index 82ac660f94..71b11d97ef 100644
>> --- a/include/vlc/deprecated.h
>> +++ b/include/vlc/deprecated.h
>> @@ -110,6 +110,19 @@ LIBVLC_DEPRECATED LIBVLC_API bool
>>   LIBVLC_DEPRECATED LIBVLC_API
>>   void libvlc_playlist_play( libvlc_instance_t *p_instance );
>>   
>> +/**
>> + * Create a video viewpoint structure.
>> + *
>> + * \deprecated Use libvlc_video_create_viewpoint() instead
>> + *
>> + * \version LibVLC 3.0.0 and later
>> + *
>> + * \return video viewpoint or NULL
>> + *         (it result must be released with free()).
>> + */
>> +LIBVLC_DEPRECATED LIBVLC_API
>> +libvlc_video_viewpoint_t *libvlc_video_new_viewpoint(void);
>> +
>>   /** @}*/
>>   
>>   # ifdef __cplusplus
>> diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h
>> index cd335a6e08..c705125233 100644
>> --- a/include/vlc/libvlc_media.h
>> +++ b/include/vlc/libvlc_media.h
>> @@ -169,7 +169,7 @@ typedef enum libvlc_video_projection_t
>>   /**
>>    * Viewpoint
>>    *
>> - * \warning allocate using libvlc_video_new_viewpoint()
>> + * \warning allocate using libvlc_video_create_viewpoint()
>>    */
>>   typedef struct libvlc_video_viewpoint_t
>>   {
>> @@ -737,7 +737,7 @@ LIBVLC_API void
>>    * Get media descriptor's user_data. user_data is specialized data
>>    * accessed by the host application, VLC.framework uses it as a
>> pointer to
>>    * an native object that references a libvlc_media_t pointer
>> - *
>> + *
>>    * \see libvlc_media_set_user_data
>>    *
>>    * \param p_md media descriptor object
>> diff --git a/include/vlc/libvlc_media_player.h
>> b/include/vlc/libvlc_media_player.h
>> index 8b8941c2de..e9b31ab29e 100644
>> --- a/include/vlc/libvlc_media_player.h
>> +++ b/include/vlc/libvlc_media_player.h
>> @@ -1501,12 +1501,20 @@ LIBVLC_API void
>> libvlc_video_set_sample_aspect_ratio( libvlc_media_player_t *p_m
>>   /**
>>    * Create a video viewpoint structure.
>>    *
>> - * \version LibVLC 3.0.0 and later
>> + * \version LibVLC 4.0.0 and later
>>    *
>>    * \return video viewpoint or NULL
>> - *         (the result must be released with free()).
>> + *         (it result must be released with
>> libvlc_video_release_viewpoint()).
>> + */
>> +LIBVLC_API libvlc_video_viewpoint_t
>> *libvlc_video_create_viewpoint(void);
>> +
>> +/**
>> + * Release a viewpoint returned by libvlc_video_create_viewpoint()
>> + *
>> + * \param p_viewpoint viewpoint to release
>> + * \version LibVLC 4.0.0 and later
>>    */
>> -LIBVLC_API libvlc_video_viewpoint_t *libvlc_video_new_viewpoint(void);
>> +LIBVLC_API void
>> libvlc_video_release_viewpoint(libvlc_video_viewpoint_t *p_viewpoint);
>>   
>>   /**
>>    * Update the video viewpoint information.
>> @@ -1516,7 +1524,7 @@ LIBVLC_API libvlc_video_viewpoint_t
>> *libvlc_video_new_viewpoint(void);
>>    * \version LibVLC 3.0.0 and later
>>    *
>>    * \param p_mi the media player
>> - * \param p_viewpoint video viewpoint allocated via
>> libvlc_video_new_viewpoint()
>> + * \param p_viewpoint video viewpoint allocated via
>> libvlc_video_create_viewpoint()
>>    * \param b_absolute if true replace the old viewpoint with the new
>> one. If
>>    * false, increase/decrease it.
>>    * \return -1 in case of error, 0 otherwise
>> diff --git a/lib/libvlc.sym b/lib/libvlc.sym
>> index 58c5221a47..547d8010f8 100644
>> --- a/lib/libvlc.sym
>> +++ b/lib/libvlc.sym
>> @@ -255,6 +255,8 @@ libvlc_video_set_teletext
>>   libvlc_video_set_track
>>   libvlc_video_take_snapshot
>>   libvlc_video_new_viewpoint
>> +libvlc_video_create_viewpoint
>> +libvlc_video_release_viewpoint
>>   libvlc_video_update_viewpoint
>>   libvlc_set_exit_handler
>>   libvlc_audio_filter_list_get
>> diff --git a/lib/video.c b/lib/video.c
>> index fa6985c012..427987cb13 100644
>> --- a/lib/video.c
>> +++ b/lib/video.c
>> @@ -256,7 +256,7 @@ void libvlc_video_set_sample_aspect_ratio(
>> libvlc_media_player_t *p_mi,
>>       free(psz_aspect);
>>   }
>>   
>> -libvlc_video_viewpoint_t *libvlc_video_new_viewpoint(void)
>> +libvlc_video_viewpoint_t *libvlc_video_create_viewpoint(void)
>>   {
>>       libvlc_video_viewpoint_t *p_vp = malloc(sizeof *p_vp);
>>       if (unlikely(p_vp == NULL))
>> @@ -265,6 +265,11 @@ libvlc_video_viewpoint_t *libvlc_video_new_viewpoint(void)
>>       return p_vp;
>>   }
>>   
>> +void libvlc_video_release_viewpoint(libvlc_video_viewpoint_t *p_viewpoint)
>> +{
>> +    free(p_viewpoint);
>> +}
>> +
>>   int libvlc_video_update_viewpoint( libvlc_media_player_t *p_mi,
>>                                      const libvlc_video_viewpoint_t *p_viewpoint,
>>                                      bool b_absolute )
> 
> Hi,
> 
> Do we really have to keep the deprecated version? Since we're breaking the API might as well remove the old variants at once no?

I'm fine with that. Although that could be said of everything in 
deprecated.h.

BTW I forgot to add the redirection of the old API to the new one.


More information about the vlc-devel mailing list