Support metadata editing for Flac format 94/234594/20
authorhj kim <backto.kim@samsung.com>
Wed, 27 May 2020 08:40:21 +0000 (17:40 +0900)
committerhj kim <backto.kim@samsung.com>
Tue, 16 Jun 2020 08:57:04 +0000 (08:57 +0000)
Change-Id: I64e0010a95710fcfa28c34c8467ee94973b5696f

src/metadata_editor.cpp

index 172c35d..d4401df 100755 (executable)
@@ -394,7 +394,6 @@ static int __MP4_getNumberOfPictures(MP4::Tag *tag, char **value)
        return METADATA_EDITOR_ERROR_NONE;
 }
 
-#if 0
 static int __xiph_getFieldValue(Ogg::XiphComment *xtag, const char *fieldname, char **value)
 {
        metadata_editor_retvm_if(!xtag, METADATA_EDITOR_ERROR_NONE, "[No-Error] No tag");
@@ -437,7 +436,7 @@ static int __FLAC_getNumberOfPictures(FLAC::File *file, char **value)
 
        return METADATA_EDITOR_ERROR_NONE;
 }
-#endif
+
 static int __metadata_editor_get_file_ext(const char *file_path, char *file_ext, int max_len)
 {
        int i = 0;
@@ -475,6 +474,8 @@ static int __metadata_editor_get_file_type(const char *path)
                        return METADATA_EDITOR_FORMAT_MP3;
                else if (strcasecmp(ext, "MP4") == 0)
                        return METADATA_EDITOR_FORMAT_MP4;
+               else if (strcasecmp(ext, "FLAC") == 0)
+                       return METADATA_EDITOR_FORMAT_FLAC;
                else if (strcasecmp(ext, "WAV") == 0)
                        return METADATA_EDITOR_FORMAT_WAV;
                else
@@ -488,6 +489,8 @@ static int __metadata_editor_get_file_type(const char *path)
                return METADATA_EDITOR_FORMAT_MP3;
        else if (strstr(mimetype, "mp4") != NULL)
                return METADATA_EDITOR_FORMAT_MP4;
+       else if (g_strcmp0(mimetype, "audio/flac") == 0)
+               return METADATA_EDITOR_FORMAT_FLAC;
        else if (strstr(mimetype, "wav") != NULL)
                return METADATA_EDITOR_FORMAT_WAV;
 
@@ -625,11 +628,11 @@ extern "C" int metadata_editor_set_path(metadata_editor_h metadata, const char *
                _file = new MP4::File(path);
                break;
 
-#if 0
        case METADATA_EDITOR_FORMAT_FLAC:
                _file = new FLAC::File(path);
                break;
 
+#if 0
        case METADATA_EDITOR_FORMAT_OGG_VORBIS:
                _file = new Ogg::Vorbis::File(path);
                break;
@@ -726,7 +729,6 @@ static int __metadata_editor_get_mp4_metadata(metadata_editor_s *metadata, metad
        }
 }
 
-#if 0
 static int __metadata_editor_get_flac_metadata(metadata_editor_s *metadata, metadata_editor_attr_e attribute, char **value)
 {
        int ret = METADATA_EDITOR_ERROR_NONE;
@@ -739,7 +741,7 @@ static int __metadata_editor_get_flac_metadata(metadata_editor_s *metadata, meta
 
        auto xtag = _file->xiphComment(false);
 
-       switch (attribute) {                                    // Check which one of frame types was given to the function for processing
+       switch (attribute) {
                case METADATA_EDITOR_ATTR_ARTIST:                       return __xiph_getFieldValue(xtag, "ARTIST", value);
                case METADATA_EDITOR_ATTR_TITLE:                        return __xiph_getFieldValue(xtag, "TITLE", value);
                case METADATA_EDITOR_ATTR_ALBUM:                        return __xiph_getFieldValue(xtag, "ALBUM", value);
@@ -759,6 +761,7 @@ static int __metadata_editor_get_flac_metadata(metadata_editor_s *metadata, meta
        }
 }
 
+#if 0
 static int __metadata_editor_get_ogg_vorbis_metadata(metadata_editor_s *metadata, metadata_editor_attr_e attribute, char **value)
 {
        int ret = METADATA_EDITOR_ERROR_NONE;
@@ -849,10 +852,9 @@ extern "C" int metadata_editor_get_metadata(metadata_editor_h metadata, metadata
        case METADATA_EDITOR_FORMAT_MP4:
                return __metadata_editor_get_mp4_metadata(_metadata, attribute, value);
 
-#if 0
        case METADATA_EDITOR_FORMAT_FLAC:
                return __metadata_editor_get_flac_metadata(_metadata, attribute, value);
-
+#if 0
        case METADATA_EDITOR_FORMAT_OGG_VORBIS:
                return __metadata_editor_get_ogg_vorbis_metadata(_metadata, attribute, value);
 
@@ -914,7 +916,7 @@ static int __metadata_editor_set_mp4_metadata(metadata_editor_s *metadata, metad
        ret = __check_metadata_set_parameter(metadata);
        metadata_editor_retvm_if(ret != METADATA_EDITOR_ERROR_NONE, ret, "fail to __check_metadata_set_parameter() [%d]", ret);
 
-       switch (attribute) {                                    // Check which one of frame type was given for processing
+       switch (attribute) {
        case METADATA_EDITOR_ATTR_ARTIST:                       return __MP4_updateStringItem(dynamic_cast<MP4::Tag*>(metadata->file->tag()), "\xA9""ART", value);
        case METADATA_EDITOR_ATTR_TITLE:                        return __MP4_updateStringItem(dynamic_cast<MP4::Tag*>(metadata->file->tag()), "\xA9""nam", value);
        case METADATA_EDITOR_ATTR_ALBUM:                        return __MP4_updateStringItem(dynamic_cast<MP4::Tag*>(metadata->file->tag()), "\xA9""alb", value);
@@ -933,7 +935,6 @@ static int __metadata_editor_set_mp4_metadata(metadata_editor_s *metadata, metad
        }
 }
 
-#if 0
 static int __metadata_editor_set_flac_metadata(metadata_editor_s *metadata, metadata_editor_attr_e attribute, const char *value)
 {
        int ret = METADATA_EDITOR_ERROR_NONE;
@@ -945,11 +946,9 @@ static int __metadata_editor_set_flac_metadata(metadata_editor_s *metadata, meta
        metadata_editor_retvm_if(!_file, METADATA_EDITOR_ERROR_OPERATION_FAILED, "fail to dynamic_cast");
 
        auto xtag = _file->xiphComment(true);
-       if (!xtag) {                                                            // Check if we have a valid tag for processing
-               metadata_editor_error("Error. Xiph Comment was not created. Can not proceed metadata updating");
-               return METADATA_EDITOR_ERROR_OPERATION_FAILED;
-       }
-       switch (attribute) {                                    // Check which one of frame type was given for processing
+       metadata_editor_retvm_if(!xtag, METADATA_EDITOR_ERROR_OPERATION_FAILED, "fail to create Xiph Comment. Can not proceed metadata updating");
+
+       switch (attribute) {
                case METADATA_EDITOR_ATTR_ARTIST:                       return __xiph_updateFieldValue(xtag, "ARTIST", value);
                case METADATA_EDITOR_ATTR_TITLE:                        return __xiph_updateFieldValue(xtag, "TITLE", value);
                case METADATA_EDITOR_ATTR_ALBUM:                        return __xiph_updateFieldValue(xtag, "ALBUM", value);
@@ -968,6 +967,7 @@ static int __metadata_editor_set_flac_metadata(metadata_editor_s *metadata, meta
        }
 }
 
+#if 0
 static int __metadata_editor_set_ogg_vorbis_metadata(metadata_editor_s *metadata, metadata_editor_attr_e attribute, const char *value)
 {
        int ret = METADATA_EDITOR_ERROR_NONE;
@@ -1060,10 +1060,9 @@ extern "C" int metadata_editor_set_metadata(metadata_editor_h metadata, metadata
        case METADATA_EDITOR_FORMAT_MP4:
                return __metadata_editor_set_mp4_metadata(_metadata, attribute, value);
 
-#if 0
        case METADATA_EDITOR_FORMAT_FLAC:
                return __metadata_editor_set_flac_metadata(_metadata, attribute, value);
-
+#if 0
        case METADATA_EDITOR_FORMAT_OGG_VORBIS:
                return __metadata_editor_set_ogg_vorbis_metadata(_metadata, attribute, value);
 
@@ -1108,8 +1107,8 @@ extern "C" int metadata_editor_update_metadata(metadata_editor_h metadata)
        }
 
        case METADATA_EDITOR_FORMAT_MP4: {
-#if 0
        case METADATA_EDITOR_FORMAT_FLAC:
+#if 0
        case METADATA_EDITOR_FORMAT_OGG_VORBIS:
        case METADATA_EDITOR_FORMAT_OGG_FLAC:
 #endif
@@ -1221,7 +1220,6 @@ static int __get_mp4_picture(metadata_editor_s *metadata, int index, void **pict
        return METADATA_EDITOR_ERROR_NONE;
 }
 
-#if 0
 static int __get_flac_picture(metadata_editor_s *metadata, int index, void **picture, int *size, char **mime_type)
 {
        int ret = METADATA_EDITOR_ERROR_NONE;
@@ -1245,7 +1243,7 @@ static int __get_flac_picture(metadata_editor_s *metadata, int index, void **pic
 
        return METADATA_EDITOR_ERROR_NONE;
 }
-#endif
+
 static int __get_wav_picture(metadata_editor_s *metadata, int index, void **picture, int *size, char **mime_type)
 {
        auto _file = dynamic_cast<RIFF::WAV::File*>(metadata->file);
@@ -1273,10 +1271,9 @@ extern "C" int metadata_editor_get_picture(metadata_editor_h metadata, int index
        case METADATA_EDITOR_FORMAT_MP4:
                return __get_mp4_picture(_metadata, index, picture, size, mime_type);
 
-#if 0
        case METADATA_EDITOR_FORMAT_FLAC:
                return __get_flac_picture(_metadata, index, picture, size, mime_type);
-#endif
+
        case METADATA_EDITOR_FORMAT_WAV:
                return __get_wav_picture(_metadata, index, picture, size, mime_type);
 
@@ -1331,7 +1328,6 @@ static int __append_mp4_picture(metadata_editor_s *metadata, const char *picture
        return METADATA_EDITOR_ERROR_NONE;
 }
 
-#if 0
 static int __append_flac_picture(metadata_editor_s *metadata, const char *picture, size_t size, const char *mime_type)
 {
        auto _file = dynamic_cast<FLAC::File*>(metadata->file);
@@ -1347,7 +1343,7 @@ static int __append_flac_picture(metadata_editor_s *metadata, const char *pictur
 
        return METADATA_EDITOR_ERROR_NONE;
 }
-#endif
+
 static int __append_wav_picture(metadata_editor_s *metadata, const char *picture, size_t size, const char *mime_type)
 {
        return __append_APIC(dynamic_cast<ID3v2::Tag*>(metadata->file->tag()), picture, size, mime_type);
@@ -1382,11 +1378,10 @@ extern "C" int metadata_editor_append_picture(metadata_editor_h metadata, const
                        ret = __append_mp4_picture(_metadata, picture, size, mime_type);
                        break;
 
-#if 0
                case METADATA_EDITOR_FORMAT_FLAC:
                        ret = __append_flac_picture(_metadata, picture, size, mime_type);
                        break;
-#endif
+
                case METADATA_EDITOR_FORMAT_WAV:
                        ret = __append_wav_picture(_metadata, picture, size, mime_type);
                        break;
@@ -1450,7 +1445,6 @@ static int __remove_mp4_picture(metadata_editor_s *metadata, int index)
        return METADATA_EDITOR_ERROR_NONE;
 }
 
-#if 0
 static int __remove_flac_picture(metadata_editor_s *metadata, int index)
 {
        int ret = METADATA_EDITOR_ERROR_NONE;
@@ -1467,7 +1461,6 @@ static int __remove_flac_picture(metadata_editor_s *metadata, int index)
 
        return METADATA_EDITOR_ERROR_NONE;
 }
-#endif
 
 static int __remove_wav_picture(metadata_editor_s *metadata, int index)
 {
@@ -1490,10 +1483,10 @@ extern "C" int metadata_editor_remove_picture(metadata_editor_h metadata, int in
 
                case METADATA_EDITOR_FORMAT_MP4:
                        return __remove_mp4_picture(_metadata, index);
-#if 0
+
                case METADATA_EDITOR_FORMAT_FLAC:
                        return __remove_flac_picture(_metadata, index);
-#endif
+
                case METADATA_EDITOR_FORMAT_WAV:
                        return __remove_wav_picture(_metadata, index);
 
@@ -1518,10 +1511,11 @@ extern "C" int metadata_editor_destroy(metadata_editor_h metadata)
        case METADATA_EDITOR_FORMAT_MP4:
                delete dynamic_cast<TagLib::MP4::File*>(_metadata->file);
                break;
-#if 0
+
        case METADATA_EDITOR_FORMAT_FLAC:
                delete dynamic_cast<TagLib::FLAC::File*>(_metadata->file);
                break;
+#if 0
        case METADATA_EDITOR_FORMAT_OGG_VORBIS:
                delete dynamic_cast<TagLib::Ogg::Vorbis::File*>(_metadata->file);
                break;