int thumbnail_request_cancel_raw_data(int request_id);
int create_video_thumbnail_to_file(const char *path, unsigned int width, unsigned int height, const char *thumb_path, 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);
+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 create_image_thumbnail_to_file(const char *path, unsigned int width, unsigned int height, const char *thumb_path, bool auto_rotate);
int create_image_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);
if (file_type == THUMB_IMAGE_TYPE) {
err = create_image_thumbnail_to_buffer(origin_path, *width, *height, data, size, width, height);
} else if (file_type == THUMB_VIDEO_TYPE) {
- err = create_video_thumbnail_to_buffer(origin_path, *width, *height, data, size, width, height, true);
+ err = create_video_thumbnail_to_buffer(origin_path, *width, *height, data, size, width, height, true, true);
} else {
thumb_err("invalid file type");
return MS_MEDIA_ERR_THUMB_UNSUPPORTED;
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;
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");
//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;
}