diff options
-rw-r--r-- | include/metadata_extractor_private.h | 2 | ||||
-rw-r--r-- | packaging/capi-media-metadata-extractor.spec | 2 | ||||
-rw-r--r-- | src/metadata_extractor.c | 7 | ||||
-rwxr-xr-x | test/metadata_extractor_test.c | 41 |
4 files changed, 32 insertions, 20 deletions
diff --git a/include/metadata_extractor_private.h b/include/metadata_extractor_private.h index 7ad711a..1a74ccf 100644 --- a/include/metadata_extractor_private.h +++ b/include/metadata_extractor_private.h @@ -75,7 +75,7 @@ extern "C" { typedef struct { char *path; - void *buffer; + const void *buffer; int buffer_size; bool extract_meta; diff --git a/packaging/capi-media-metadata-extractor.spec b/packaging/capi-media-metadata-extractor.spec index 2e03d1f..0a25c4a 100644 --- a/packaging/capi-media-metadata-extractor.spec +++ b/packaging/capi-media-metadata-extractor.spec @@ -1,6 +1,6 @@ Name: capi-media-metadata-extractor Summary: A media metadata extractor library in Tizen Native API -Version: 0.1.19 +Version: 0.1.20 Release: 1 Group: Multimedia/API License: Apache-2.0 diff --git a/src/metadata_extractor.c b/src/metadata_extractor.c index 3c8eb33..47c2536 100644 --- a/src/metadata_extractor.c +++ b/src/metadata_extractor.c @@ -17,6 +17,7 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#include <inttypes.h> #include <mm_file.h> #include <metadata_extractor.h> #include <metadata_extractor_private.h> @@ -896,15 +897,15 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned int _frame_size = 0; int width = 0; int height = 0; - long long micro_timestamp = 0; + int64_t micro_timestamp = 0; metadata_extractor_retvm_if(!_metadata, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is NULL"); metadata_extractor_retvm_if(!_metadata->path && !_metadata->buffer, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); metadata_extractor_retvm_if(!size, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter"); - micro_timestamp = (long long)timestamp * 1000; + micro_timestamp = (int64_t)timestamp * 1000; - metadata_extractor_debug("accurate [%d] timestamp[%lu] micro_timestamp[%lld]", is_accurate, timestamp, micro_timestamp); + metadata_extractor_debug("accurate [%d] timestamp[%lu] micro_timestamp[%"PRId64"]", is_accurate, timestamp, micro_timestamp); if (_metadata->path) ret = mm_file_get_video_frame(_metadata->path, micro_timestamp, is_accurate, (unsigned char **)&_frame, &_frame_size, &width, &height); diff --git a/test/metadata_extractor_test.c b/test/metadata_extractor_test.c index ad11b7a..09e3051 100755 --- a/test/metadata_extractor_test.c +++ b/test/metadata_extractor_test.c @@ -19,23 +19,28 @@ #include <string.h> #include <unistd.h> #include <stdbool.h> +#include <limits.h> #include <metadata_extractor.h> #include <metadata_extractor_private.h> #define SAFE_FREE(src) { if (src) {free(src); src = NULL; } } #define READ_FROM_FILE(FILE_PATH, data, size) \ - do { \ - FILE *fp = fopen(FILE_PATH, "r"); \ - if (fp) { \ - fseek(fp, 0, SEEK_END); \ - size = ftell(fp); \ - fseek(fp, 0, SEEK_SET); \ - if (size > 0) data = malloc(size); \ - if (data != NULL) { if (fread(data, sizeof(char), size, fp) != size) { printf("fread error\n"); } } \ - fclose(fp); \ - printf("file size = %d\n", size); \ - } \ + do { \ + FILE *fp = fopen(FILE_PATH, "r"); \ + if (fp) { \ + fseek(fp, 0, SEEK_END); \ + size = ftell(fp); \ + fseek(fp, 0, SEEK_SET); \ + if (size > 0) { \ + data = malloc(size); \ + if (data != NULL) \ + if (fread(data, sizeof(char), size, fp) != (size_t)size) \ + printf("fread error\n"); \ + } \ + fclose(fp); \ + printf("file size = %ld\n", size); \ + } \ } while (0) /* Saves dump artwork and thumbnail to current path */ @@ -447,6 +452,8 @@ int main(int argc, char *argv[]) int cnt = argc - 1; bool file_test = true; /* bool file_test = false; */ + long file_size = 0; + unsigned char *buffer = NULL; printf("--- metadata extractor test start ---\n\n"); @@ -476,12 +483,15 @@ int main(int argc, char *argv[]) } } else { printf("Extract meta from memory-----------------------\n"); - unsigned int file_size = 0; - unsigned char *buffer = NULL; /* Read file */ READ_FROM_FILE(argv[idx + 1], buffer, file_size); - ret = metadata_extractor_set_buffer(metadata, buffer, file_size); + if (file_size >= INT_MAX) { + printf("File_size[%ld] is too big\n", file_size); + goto exception; + } + + ret = metadata_extractor_set_buffer(metadata, buffer, (int)file_size); if (ret != METADATA_EXTRACTOR_ERROR_NONE) { printf("Fail metadata_extractor_set_buffer [%d]\n", ret); goto exception; @@ -489,6 +499,7 @@ int main(int argc, char *argv[]) } __capi_metadata_extractor(metadata); + SAFE_FREE(buffer); printf("--------------------------------------------\n"); } @@ -496,7 +507,7 @@ int main(int argc, char *argv[]) exception: ret = metadata_extractor_destroy(metadata); printf("metadata_extractor_destroy [%d]\n", ret); - + SAFE_FREE(buffer); printf("--- metadata extractor test end ---\n\n"); return 0; |