diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h index c2ae654b04..aab025ae28 100644 --- a/include/vlc/libvlc_media.h +++ b/include/vlc/libvlc_media.h @@ -847,7 +847,7 @@ libvlc_media_thumbnail_request_by_time( libvlc_media_t *md, libvlc_time_t time, libvlc_thumbnailer_seek_speed_t speed, unsigned int width, unsigned int height, - libvlc_picture_type_t picture_type, + bool crop, libvlc_picture_type_t picture_type, libvlc_time_t timeout ); /** @@ -877,7 +877,7 @@ libvlc_media_thumbnail_request_by_pos( libvlc_media_t *md, float pos, libvlc_thumbnailer_seek_speed_t speed, unsigned int width, unsigned int height, - libvlc_picture_type_t picture_type, + bool crop, libvlc_picture_type_t picture_type, libvlc_time_t timeout ); /** diff --git a/lib/media.c b/lib/media.c index 02759d5b42..06d02bad8d 100644 --- a/lib/media.c +++ b/lib/media.c @@ -1096,6 +1096,7 @@ struct libvlc_media_thumbnail_request_t libvlc_media_t *md; unsigned int width; unsigned int height; + bool crop; libvlc_picture_type_t type; vlc_thumbnailer_request_t* req; }; @@ -1109,7 +1110,8 @@ static void media_on_thumbnail_ready( void* data, picture_t* thumbnail ) libvlc_picture_t* pic = NULL; if ( thumbnail != NULL ) pic = libvlc_picture_new( VLC_OBJECT(p_media->p_libvlc_instance->p_libvlc_int), - thumbnail, req->type, req->width, req->height ); + thumbnail, req->type, req->width, req->height, + req->crop ); event.u.media_thumbnail_generated.p_thumbnail = pic; libvlc_event_send( &p_media->event_manager, &event ); if ( pic != NULL ) @@ -1122,7 +1124,7 @@ libvlc_media_thumbnail_request_t* libvlc_media_thumbnail_request_by_time( libvlc_media_t *md, libvlc_time_t time, libvlc_thumbnailer_seek_speed_t speed, unsigned int width, unsigned int height, - libvlc_picture_type_t picture_type, + bool crop, libvlc_picture_type_t picture_type, libvlc_time_t timeout ) { assert( md ); @@ -1137,6 +1139,7 @@ libvlc_media_thumbnail_request_by_time( libvlc_media_t *md, libvlc_time_t time, req->width = width; req->height = height; req->type = picture_type; + req->crop = crop; libvlc_media_retain( md ); req->req = vlc_thumbnailer_RequestByTime( p_priv->p_thumbnailer, VLC_TICK_FROM_MS( time ), @@ -1158,7 +1161,7 @@ libvlc_media_thumbnail_request_t* libvlc_media_thumbnail_request_by_pos( libvlc_media_t *md, float pos, libvlc_thumbnailer_seek_speed_t speed, unsigned int width, unsigned int height, - libvlc_picture_type_t picture_type, + bool crop, libvlc_picture_type_t picture_type, libvlc_time_t timeout ) { assert( md ); @@ -1172,6 +1175,7 @@ libvlc_media_thumbnail_request_by_pos( libvlc_media_t *md, float pos, req->md = md; req->width = width; req->height = height; + req->crop = crop; req->type = picture_type; libvlc_media_retain( md ); req->req = vlc_thumbnailer_RequestByPos( priv->p_thumbnailer, pos, diff --git a/lib/picture.c b/lib/picture.c index 5a7d9cb6e6..fc8b769b2a 100644 --- a/lib/picture.c +++ b/lib/picture.c @@ -45,7 +45,8 @@ struct libvlc_picture_t libvlc_picture_t* libvlc_picture_new( vlc_object_t* p_obj, picture_t* input, libvlc_picture_type_t type, - unsigned int width, unsigned int height ) + unsigned int width, unsigned int height, + bool crop ) { libvlc_picture_t *pic = malloc( sizeof( *pic ) ); if ( unlikely( pic == NULL ) ) @@ -69,7 +70,7 @@ libvlc_picture_t* libvlc_picture_new( vlc_object_t* p_obj, picture_t* input, vlc_assert_unreachable(); } if ( picture_Export( p_obj, &pic->converted, &pic->fmt, - input, format, width, height, false ) != VLC_SUCCESS ) + input, format, width, height, crop ) != VLC_SUCCESS ) { free( pic ); return NULL; diff --git a/lib/picture_internal.h b/lib/picture_internal.h index 83b913f0f3..aeb1e3f505 100644 --- a/lib/picture_internal.h +++ b/lib/picture_internal.h @@ -32,6 +32,7 @@ * \param i_type Desired converted picture type * \param i_width Converted picture width * \param i_height Converted picture height + * \param b_crop Should the picture be cropped to preserve aspect ratio * \return An opaque libvlc_picture_t * * The picture refcount is left untouched by this function, but is converted to @@ -40,6 +41,7 @@ */ libvlc_picture_t* libvlc_picture_new( vlc_object_t* p_obj, picture_t* p_pic, libvlc_picture_type_t i_format, - unsigned int i_width, unsigned int i_height ); + unsigned int i_width, unsigned int i_height, + bool b_crop ); #endif /* PICTURE_INTERNAL_H */