summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiyong.min <jiyong.min@samsung.com>2022-10-18 09:35:06 +0900
committerjiyong.min <jiyong.min@samsung.com>2022-10-19 10:46:47 +0900
commitdf6fe009b2a42838b30f25999648b362a11f7a79 (patch)
treeeaf2e4654671f00fad1a430cd08f3f4b86585d5b
parentbec87d10fb856da376cd3df02f784062c931dd44 (diff)
downloadmetadata-extractor-accepted/tizen/8.0/unified/20231005.092756.tar.gz
metadata-extractor-accepted/tizen/8.0/unified/20231005.092756.tar.bz2
metadata-extractor-accepted/tizen/8.0/unified/20231005.092756.zip
Change-Id: Iba1f3ff1238eeb2c0272e9b81f908b42ba2d2fda
-rw-r--r--include/metadata_extractor_private.h2
-rw-r--r--packaging/capi-media-metadata-extractor.spec2
-rw-r--r--src/metadata_extractor.c7
-rwxr-xr-xtest/metadata_extractor_test.c41
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;