[vlc-devel] [PATCH 15/15] lib: media: Expose attached pictures

Thomas Guillem thomas at gllm.fr
Thu Nov 12 17:32:20 CET 2020


Hello,

On Tue, Nov 10, 2020, at 18:40, Hugo Beauzée-Luyssen wrote:
> ---
>  include/vlc/libvlc_media.h |  5 +++++
>  lib/libvlc.sym             |  1 +
>  lib/media.c                | 38 ++++++++++++++++++++++++++++++++++++++
>  3 files changed, 44 insertions(+)
> 
> diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h
> index 904e265561..148b6e43a6 100644
> --- a/include/vlc/libvlc_media.h
> +++ b/include/vlc/libvlc_media.h
> @@ -807,6 +807,11 @@ libvlc_media_thumbnail_request_cancel( 
> libvlc_media_thumbnail_request_t *p_req )
>  LIBVLC_API void
>  libvlc_media_thumbnail_request_destroy( 
> libvlc_media_thumbnail_request_t *p_req );
>  
Missing documentation
> +LIBVLC_API size_t
> +libvlc_media_get_attached_pictures( libvlc_media_t *md,
> +                                    libvlc_picture_t*** thumbnails );
> +
Extra space

Otherwise, patch 1-14 LGTM

> +
>  /**
>   * Add a slave to the current media.
>   *
> diff --git a/lib/libvlc.sym b/lib/libvlc.sym
> index ebdd2db629..5c93e8f70d 100644
> --- a/lib/libvlc.sym
> +++ b/lib/libvlc.sym
> @@ -71,6 +71,7 @@ libvlc_media_discoverer_start
>  libvlc_media_discoverer_stop
>  libvlc_media_duplicate
>  libvlc_media_event_manager
> +libvlc_media_get_attached_pictures
>  libvlc_media_get_codec_description
>  libvlc_media_get_duration
>  libvlc_media_get_meta
> diff --git a/lib/media.c b/lib/media.c
> index 7ab98de7c1..540b7c1642 100644
> --- a/lib/media.c
> +++ b/lib/media.c
> @@ -1301,3 +1301,41 @@ void libvlc_media_slaves_release( 
> libvlc_media_slave_t **pp_slaves,
>      }
>      free( pp_slaves );
>  }
> +
> +size_t
> +libvlc_media_get_attached_pictures( libvlc_media_t *md,
> +                                    libvlc_picture_t*** pictures_out )
> +{
> +    assert( md && pictures_out );
> +    input_item_attachment_t **attachments;
> +    int res = input_item_GetAttachments( md->p_input_item, 
> &attachments );
> +    if( res <= 0 )
> +    {
> +        *pictures_out = NULL;
> +        return 0;
> +    }
> +    libvlc_picture_t** pictures = *pictures_out =
> +            malloc( res * sizeof( *pictures ) );
> +    if( !pictures )
> +    {
> +        for ( int i = 0; i < res; ++i )
> +            vlc_input_attachment_Release( attachments[i] );
> +        free( attachments );
> +        return 0;
> +    }
> +
> +    size_t nb_pictures = 0;
> +    for( int i = 0; i < res; ++i )
> +    {
> +        input_item_attachment_t* a = attachments[i];
> +        libvlc_picture_t *pic = libvlc_picture_from_attachment( a );
> +        vlc_input_attachment_Release( a );
> +        if( !pic )
> +            continue;
> +        pictures[nb_pictures] = pic;
> +        nb_pictures++;
> +    }
> +    free( attachments );
> +
> +    return nb_pictures;
> +}
> -- 
> 2.28.0
> 
> _______________________________________________
> 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