- Resource leak
Variable 'err_attr_name' should be freed by caller, but it is not used and freed.
So, remove unused(useless) 'err_attr_name'.
Change-Id: I201c216828a05a0e620799145960de925c9ce524
// get attributes of tag
ret = mm_file_get_attrs(tag_attrs,
// get attributes of tag
ret = mm_file_get_attrs(tag_attrs,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_TITLE, &ctag.title.value.s_val, &ctag.title.len,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_TITLE, &ctag.title.value.s_val, &ctag.title.len,
// get attributes of tag
ret = mm_file_get_attrs(tag_attrs,
// get attributes of tag
ret = mm_file_get_attrs(tag_attrs,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_TITLE, &ctag.title.value.s_val, &ctag.title.len,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_TITLE, &ctag.title.value.s_val, &ctag.title.len,
mm_file_create_content_attrs(&content_attrs, filename);
// get duration information
mm_file_create_content_attrs(&content_attrs, filename);
// get duration information
-ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
+ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
printf("duration: %d\n", ccontent.duration);
if (ret != MM_ERROR_NONE)
printf("duration: %d\n", ccontent.duration);
if (ret != MM_ERROR_NONE)
void *thumbnail = NULL;
mm_file_get_attrs(content_attrs,
void *thumbnail = NULL;
mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
mm_file_create_content_attrs(&content_attrs, filename);
// get duration information
mm_file_create_content_attrs(&content_attrs, filename);
// get duration information
-ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
+ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
printf("duration: %d\n", ccontent.duration);
if (ret != MM_ERROR_NONE)
printf("duration: %d\n", ccontent.duration);
if (ret != MM_ERROR_NONE)
if (audio_track_num)
{
mm_file_get_attrs(content_attrs,
if (audio_track_num)
{
mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec,
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec,
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
void *thumbnail = NULL;
mm_file_get_attrs(content_attrs,
void *thumbnail = NULL;
mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
* Handle should be destroyed after use.
*
* @param attrs [in] tag or content attribute handle.
* Handle should be destroyed after use.
*
* @param attrs [in] tag or content attribute handle.
- * @param err_attr_name [out] Name of attribute which is failed to get
* @param first_attribute_name [in] Name of the first attribute to get
* @param ... [in] Value for the first attribute, followed optionally by more name/value pairs, terminated by NULL.
* But, in the case of data or string type, it should be name/value/size.
*
* @param first_attribute_name [in] Name of the first attribute to get
* @param ... [in] Value for the first attribute, followed optionally by more name/value pairs, terminated by NULL.
* But, in the case of data or string type, it should be name/value/size.
*
- * @return This function returns MM_ERROR_NONE on success, or negative value with error code.
+ * @return This function returns MM_ERROR_NONE on success, or negative value.
*
* @remark This function must be terminated by NULL argument.<BR>
* And, if this function is failed, err_attr_name param must be free.
*
* @remark This function must be terminated by NULL argument.<BR>
* And, if this function is failed, err_attr_name param must be free.
mm_file_create_content_attrs(&content_attrs, filename);
// get duration information
mm_file_create_content_attrs(&content_attrs, filename);
// get duration information
-ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
+ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
printf("duration: %d\n", ccontent.duration);
if (ret != MM_ERROR_NONE)
printf("duration: %d\n", ccontent.duration);
if (ret != MM_ERROR_NONE)
if (audio_track_num)
{
mm_file_get_attrs(content_attrs,
if (audio_track_num)
{
mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec,
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec,
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
void *thumbnail = NULL;
mm_file_get_attrs(content_attrs,
void *thumbnail = NULL;
mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
-int mm_file_get_attrs(MMHandleType attrs, char **err_attr_name, const char *first_attribute_name, ...)G_GNUC_NULL_TERMINATED;
+int mm_file_get_attrs(MMHandleType attrs, const char *first_attribute_name, ...)G_GNUC_NULL_TERMINATED;
/**
* This function is to get the tag attributes from media data on memory while mm_file_create_tag_attrs() extracts from file.<BR>
/**
* This function is to get the tag attributes from media data on memory while mm_file_create_tag_attrs() extracts from file.<BR>
// get audio artist & album tag
mm_file_get_attrs(tag_attrs,
// get audio artist & album tag
mm_file_get_attrs(tag_attrs,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_ALBUM_ARTIST, &ctag.album_artist.value.s_val, &ctag.album_artist.len,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_ALBUM_ARTIST, &ctag.album_artist.value.s_val, &ctag.album_artist.len,
// get audio bit rate and sample rate
mm_file_get_attrs(content_attrs,
// get audio bit rate and sample rate
mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
NULL);
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
NULL);
// get width, height information
mm_file_get_attrs(content_attrs,
// get width, height information
mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_VIDEO_WIDTH, &ccontent.video_w,
MM_FILE_CONTENT_VIDEO_HEIGHT, &ccontent.video_h,
NULL);
MM_FILE_CONTENT_VIDEO_WIDTH, &ccontent.video_w,
MM_FILE_CONTENT_VIDEO_HEIGHT, &ccontent.video_h,
NULL);
/**
* global functions.
*/
/**
* global functions.
*/
-int mm_file_get_attrs(MMHandleType attrs, char **err_attr_name, const char *first_attribute_name, ...)
+int mm_file_get_attrs(MMHandleType attrs, const char *first_attribute_name, ...)
{
int ret = FILEINFO_ERROR_NONE;
va_list var_args;
{
int ret = FILEINFO_ERROR_NONE;
va_list var_args;
+ char *err_attr_name = NULL;
if (!attrs) {
debug_error(DEBUG, "Invalid arguments [attrs 0]\n");
if (!attrs) {
debug_error(DEBUG, "Invalid arguments [attrs 0]\n");
/* get requested attributes */
va_start(var_args, first_attribute_name);
/* get requested attributes */
va_start(var_args, first_attribute_name);
- ret = mm_attrs_get_valist(attrs, err_attr_name, first_attribute_name, var_args);
+ ret = mm_attrs_get_valist(attrs, &err_attr_name, first_attribute_name, var_args);
va_end(var_args);
if (ret != FILEINFO_ERROR_NONE) {
if (err_attr_name) {
va_end(var_args);
if (ret != FILEINFO_ERROR_NONE) {
if (err_attr_name) {
- debug_error(DEBUG, "failed to get %s\n", *err_attr_name);
+ debug_error(DEBUG, "failed to get %s\n", err_attr_name);
+ free(err_attr_name);
Name: libmm-fileinfo
Summary: Media Fileinfo
Name: libmm-fileinfo
Summary: Media Fileinfo
Release: 1
Group: System/Libraries
License: Apache-2.0
Release: 1
Group: System/Libraries
License: Apache-2.0
{
MMHandleType content_attrs = 0;
MMHandleType tag_attrs = 0;
{
MMHandleType content_attrs = 0;
MMHandleType tag_attrs = 0;
- char *err_attr_name = NULL;
int audio_track_num = 0;
int video_track_num = 0;
int ret = 0;
int audio_track_num = 0;
int video_track_num = 0;
int ret = 0;
ContentContext_t ccontent;
memset(&ccontent, 0, sizeof(ContentContext_t));
ContentContext_t ccontent;
memset(&ccontent, 0, sizeof(ContentContext_t));
- ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
+ ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL);
printf("# duration: %d\n", ccontent.duration);
printf("# duration: %d\n", ccontent.duration);
- if (ret != FILEINFO_ERROR_NONE && err_attr_name) {
- printf("failed to get %s\n", err_attr_name);
- free(err_attr_name);
- err_attr_name = NULL;
- }
+ if (ret != FILEINFO_ERROR_NONE)
+ printf("failed to get attrs\n");
if (audio_track_num) {
ret = mm_file_get_attrs(content_attrs,
if (audio_track_num) {
ret = mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec,
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec,
MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
if (video_track_num) {
ret = mm_file_get_attrs(content_attrs,
if (video_track_num) {
ret = mm_file_get_attrs(content_attrs,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec,
MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate,
MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps,
memset(&ctag, 0, sizeof(TagContext_t));
/* get attributes of tag */
ret = mm_file_get_attrs(tag_attrs,
memset(&ctag, 0, sizeof(TagContext_t));
/* get attributes of tag */
ret = mm_file_get_attrs(tag_attrs,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_ALBUM_ARTIST, &ctag.album_artist.value.s_val, &ctag.album_artist.len,
MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len,
MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len,
MM_FILE_TAG_ALBUM_ARTIST, &ctag.album_artist.value.s_val, &ctag.album_artist.len,
MM_FILE_TAG_SPHERICAL_V2_EQUI_BOUNDS_RIGHT, &ctag.equi_projection_bounds_right_v2.value.i_val,
MM_FILE_TAG_SMTA, &ctag.smta.value.i_val,
NULL);
MM_FILE_TAG_SPHERICAL_V2_EQUI_BOUNDS_RIGHT, &ctag.equi_projection_bounds_right_v2.value.i_val,
MM_FILE_TAG_SMTA, &ctag.smta.value.i_val,
NULL);
- if (ret != FILEINFO_ERROR_NONE && err_attr_name) {
- printf("failed to get %s attrs\n", err_attr_name);
- free(err_attr_name);
- err_attr_name = NULL;
+ if (ret != FILEINFO_ERROR_NONE) {
+ printf("failed to get attrs\n");
if (msg_tmp_fp) { /* opened by MM_TIME_CHECK_START */
fclose(msg_tmp_fp);
if (msg_tmp_fp) { /* opened by MM_TIME_CHECK_START */
fclose(msg_tmp_fp);
{
int ret = FILEINFO_ERROR_NONE;
MMHandleType content_attrs;
{
int ret = FILEINFO_ERROR_NONE;
MMHandleType content_attrs;
- char *err_attr_name = NULL;
int p = 0;
ret = mm_file_create_content_attrs(&content_attrs, GTEST_VIDEO_FILE_PATH);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
int p = 0;
ret = mm_file_create_content_attrs(&content_attrs, GTEST_VIDEO_FILE_PATH);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
- ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_DURATION, &p, NULL);
+ ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_DURATION, &p, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 11883);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 11883);
- ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_VIDEO_BITRATE, &p, NULL);
+ ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_VIDEO_BITRATE, &p, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 909428);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 909428);
- ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_VIDEO_FPS, &p, NULL);
+ ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_VIDEO_FPS, &p, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 30);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 30);
- ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_VIDEO_WIDTH, &p, NULL);
+ ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_VIDEO_WIDTH, &p, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 320);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 320);
- ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_VIDEO_HEIGHT, &p, NULL);
+ ret = mm_file_get_attrs(content_attrs, MM_FILE_CONTENT_VIDEO_HEIGHT, &p, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 240);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_EQ(p, 240);
{
int ret = FILEINFO_ERROR_NONE;
MMHandleType tag_attrs;
{
int ret = FILEINFO_ERROR_NONE;
MMHandleType tag_attrs;
- char *err_attr_name = NULL;
char *p = NULL;
unsigned int size = 0;
ret = mm_file_create_tag_attrs(&tag_attrs, GTEST_VIDEO_FILE_PATH);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
char *p = NULL;
unsigned int size = 0;
ret = mm_file_create_tag_attrs(&tag_attrs, GTEST_VIDEO_FILE_PATH);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
- ret = mm_file_get_attrs(tag_attrs, &err_attr_name, MM_FILE_TAG_ARTIST, &p, &size, NULL);
+ ret = mm_file_get_attrs(tag_attrs, MM_FILE_TAG_ARTIST, &p, &size, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");
- ret = mm_file_get_attrs(tag_attrs, &err_attr_name, MM_FILE_TAG_TITLE, &p, &size, NULL);
+ ret = mm_file_get_attrs(tag_attrs, MM_FILE_TAG_TITLE, &p, &size, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");
- ret = mm_file_get_attrs(tag_attrs, &err_attr_name, MM_FILE_TAG_ALBUM, &p, &size, NULL);
+ ret = mm_file_get_attrs(tag_attrs, MM_FILE_TAG_ALBUM, &p, &size, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");
- ret = mm_file_get_attrs(tag_attrs, &err_attr_name, MM_FILE_TAG_GENRE, &p, &size, NULL);
+ ret = mm_file_get_attrs(tag_attrs, MM_FILE_TAG_GENRE, &p, &size, NULL);
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");
EXPECT_EQ(ret, FILEINFO_ERROR_NONE);
EXPECT_STREQ(p, "Test");