diff options
Diffstat (limited to 'src/media_image.c')
-rwxr-xr-x | src/media_image.c | 268 |
1 files changed, 268 insertions, 0 deletions
diff --git a/src/media_image.c b/src/media_image.c new file mode 100755 index 0000000..c317654 --- /dev/null +++ b/src/media_image.c @@ -0,0 +1,268 @@ +/* +* Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + + +#include <media_image.h> +#include <media_content.h> +#include <media_info_private.h> +#include <media-svc.h> + + +int image_meta_destroy(image_meta_h image) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + + media_content_debug_func(); + + if(_image) + { + SAFE_FREE(_image->media_id); + SAFE_FREE(_image->date_taken); + SAFE_FREE(_image); + + ret = MEDIA_CONTENT_ERROR_NONE; + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; +} + +int image_meta_clone(image_meta_h *dst, image_meta_h src) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_src = (image_meta_s*)src; + + media_content_debug_func(); + + if(_src != NULL) + { + image_meta_s *_dst = (image_meta_s*)calloc(1, sizeof(image_meta_s)); + if(NULL == _dst) + { + media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); + return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; + } + + if(STRING_VALID(_src->media_id)) + { + _dst->media_id = strdup(_src->media_id); + if(_dst->media_id == NULL) + { + media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); + image_meta_destroy((image_meta_h)_dst); + return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; + } + _dst->media_id = strdup(_src->media_id); + } + + if(STRING_VALID(_src->date_taken)) + { + _dst->date_taken = strdup(_src->date_taken); + if(_dst->date_taken == NULL) + { + media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); + image_meta_destroy((image_meta_h)_dst); + return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; + } + _dst->date_taken = strdup(_src->date_taken); + } + + _dst->width = _src->width; + _dst->height = _src->height; + _dst->orientation = _src->orientation; + + *dst = (image_meta_h)_dst; + + ret = MEDIA_CONTENT_ERROR_NONE; + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; +} + +int image_meta_get_media_id(image_meta_h image, char **media_id) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + + if(_image) + { + if(STRING_VALID(_image->media_id)) + { + char *new_string = strdup(_image->media_id); + if(NULL == new_string) + { + media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); + return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; + } + *media_id = new_string; + } + else + { + *media_id = NULL; + } + ret = MEDIA_CONTENT_ERROR_NONE; + + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; + +} + +int image_meta_get_width(image_meta_h image, int *width) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + + if(_image && width) + { + *width = _image->width; + ret = MEDIA_CONTENT_ERROR_NONE; + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; +} +int image_meta_get_height(image_meta_h image, int *height) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + + if(_image && height) + { + *height = _image->height; + ret = MEDIA_CONTENT_ERROR_NONE; + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; +} + +int image_meta_get_orientation(image_meta_h image, media_content_orientation_e* orientation) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + if(_image) + { + *orientation = _image->orientation; + ret = MEDIA_CONTENT_ERROR_NONE; + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; +} + +int image_meta_get_date_taken(image_meta_h image, char **date_taken) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + + if(_image) + { + if(STRING_VALID(_image->date_taken)) + { + char *new_string = strdup(_image->date_taken); + if(NULL == new_string) + { + media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY); + return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; + } + *date_taken = new_string; + } + else + { + *date_taken = NULL; + } + + ret = MEDIA_CONTENT_ERROR_NONE; + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; +} + +int image_meta_set_orientation(image_meta_h image, media_content_orientation_e orientation) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + + if(_image == NULL) + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + if((orientation < MEDIA_CONTENT_ORIENTATION_NOT_AVAILABLE) || (orientation > MEDIA_CONTENT_ORIENTATION_ROT_270)) + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + _image->orientation = orientation; + + return ret; +} + +int image_meta_update_to_db(image_meta_h image) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + image_meta_s *_image = (image_meta_s*)image; + char *sql = NULL; + + if(_image != NULL && STRING_VALID(_image->media_id)) + { + sql = sqlite3_mprintf(UPDATE_IMAGE_META_FROM_MEDIA, _image->orientation, _image->media_id); + ret = _content_query_sql(sql); + sqlite3_free(sql); + } + else + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + return ret; +}
\ No newline at end of file |