diff options
Diffstat (limited to 'src/media-thumbnail.c')
-rwxr-xr-x | src/media-thumbnail.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/media-thumbnail.c b/src/media-thumbnail.c index f5d1326..03bbda9 100755 --- a/src/media-thumbnail.c +++ b/src/media-thumbnail.c @@ -447,7 +447,15 @@ int create_video_thumbnail_to_file(const char *path, unsigned int width, unsigne return err; } -int create_video_thumbnail_to_buffer(const char *path, unsigned int width, unsigned int height, unsigned char **thumb_buffer, size_t *thumb_size, unsigned int *thumb_width, unsigned int *thumb_height, bool auto_rotate) +int create_video_thumbnail_to_buffer(const char *path, + unsigned int width, + unsigned int height, + unsigned char **thumb_buffer, + size_t *thumb_size, + unsigned int *thumb_width, + unsigned int *thumb_height, + bool auto_rotate, + bool is_server_request) { int err = MS_MEDIA_ERR_NONE; int video_track_num = 0; @@ -457,6 +465,7 @@ int create_video_thumbnail_to_buffer(const char *path, unsigned int width, unsig size_t frame_size = 0; mm_util_image_h img = NULL; mm_util_magick_rotate_type rot_type = MM_UTIL_ROTATE_NUM; + mm_util_image_h convert_img = NULL; err = __check_parameter_validity_for_buffer(path, width, height, thumb_buffer, thumb_size, thumb_width, thumb_height); thumb_retvm_if(err != MS_MEDIA_ERR_NONE, err, "Invalid parameter"); @@ -471,11 +480,24 @@ int create_video_thumbnail_to_buffer(const char *path, unsigned int width, unsig //Extract thumbnail err = __get_video_thumb_to_buffer(video_w, video_h, frame, frame_size, rot_type, width, height, &img); - if (err == MS_MEDIA_ERR_NONE) - err = mm_image_get_image(img, thumb_width, thumb_height, NULL, thumb_buffer, thumb_size); - - mm_image_destroy_image(img); g_free(frame); + if (err != MS_MEDIA_ERR_NONE) + return err; + + if (is_server_request) { + err = mm_util_convert_B_B(img, MM_UTIL_COLOR_BGRA, &convert_img); + mm_image_destroy_image(img); + if (err != MM_UTIL_ERROR_NONE) { + thumb_err("mm_util_convert_B_B failed"); + return MS_MEDIA_ERR_INTERNAL; + } + + err = mm_image_get_image(convert_img, thumb_width, thumb_height, NULL, thumb_buffer, thumb_size); + mm_image_destroy_image(convert_img); + } else { + err = mm_image_get_image(img, thumb_width, thumb_height, NULL, thumb_buffer, thumb_size); + mm_image_destroy_image(img); + } return err; } |