Add MP4 coverart list 24/277824/7 accepted/tizen/unified/20220718.140339 submit/tizen/20220718.050845
authorminje.ahn <minje.ahn@samsung.com>
Thu, 14 Jul 2022 00:41:01 +0000 (09:41 +0900)
committerminje.ahn <minje.ahn@samsung.com>
Fri, 15 Jul 2022 00:24:16 +0000 (09:24 +0900)
Change-Id: If59d435e289728c47fd490a77e64f6082d001f7c
Signed-off-by: minje.ahn <minje.ahn@samsung.com>
packaging/capi-media-metadata-editor.spec
src/metadata_editor.cpp

index 5fe2f97980e014c5970082ce4d5097132adef5ed..7443aaea68569a1d122ff058474806359e103926 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-metadata-editor
 Summary:    A metadata editor library in Tizen Native API
-Version:    0.2.6
+Version:    0.2.7
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 42dac806b73d8e07447b1f35e05fa7b1301be0dc..c950c3ddf04a6d8a4b656d0ad7a61762e4dbc8d5 100755 (executable)
@@ -63,19 +63,19 @@ class PictureFrame
 {
 public:
        explicit PictureFrame(const char *path)
-               : stream(path, true) {}
+               : __stream(path, true) {}
        virtual ~PictureFrame() = default;
 
        ByteVector data() {
-               return stream.readBlock(stream.length());
+               return __stream.readBlock(__stream.length());
        }
 
        String mime() const {
-               return __get_picture_type(stream.name());
+               return __get_picture_type(__stream.name());
        }
 
        bool opened() const {
-               return stream.isOpen();
+               return __stream.isOpen();
        }
 
        MP4::CoverArt::Format mp4format() const {
@@ -87,7 +87,7 @@ public:
        }
 
 private:
-       FileStream stream;
+       FileStream __stream;
 };
 
 template <class T>
@@ -174,13 +174,9 @@ static int __remove_APIC(ID3v2::Tag *tag, int index)
 static int __remove_ogg_picture(Ogg::XiphComment *xtag, int index)
 {
        ME_RETVM_IF(!xtag, METADATA_EDITOR_ERROR_INVALID_PARAMETER, "Invalid XiphComment");
+       ME_RETV_IF(!__is_valid_index(xtag->pictureList(), index), METADATA_EDITOR_ERROR_INVALID_PARAMETER);
 
-       auto lst = xtag->pictureList();
-       ME_RETV_IF(!__is_valid_index(lst, index), METADATA_EDITOR_ERROR_INVALID_PARAMETER);
-
-       List<FLAC::Picture*>::Iterator it = lst.begin();
-       std::advance(it, index);
-
+       auto it = std::next(xtag->pictureList().begin(), index);
        xtag->removePicture(*it, true);
 
        return METADATA_EDITOR_ERROR_NONE;
@@ -200,69 +196,58 @@ public:
 class Mp3AlbumArt : public IAlbumArt {
 public:
        explicit Mp3AlbumArt(FileRef *fileref)
-               : file(dynamic_cast<MPEG::File *>(fileref->file())) {}
+               : __file(dynamic_cast<MPEG::File *>(fileref->file())) {}
        ~Mp3AlbumArt() override = default;
 
        int append(PictureFrame &pic) override {
-               return __append_APIC(file->ID3v2Tag(true), pic);
+               return __append_APIC(__file->ID3v2Tag(true), pic);
        }
 
        int remove(int index) override {
-               return __remove_APIC(file->ID3v2Tag(), index);
+               return __remove_APIC(__file->ID3v2Tag(), index);
        }
 
        int read(int index, void **picture, int *size, char **mime_type) override {
-               return __get_APIC(file->ID3v2Tag(), index, picture, size, mime_type);
+               return __get_APIC(__file->ID3v2Tag(), index, picture, size, mime_type);
        }
 
        uint count() override {
-               return file->ID3v2Tag() ? file->ID3v2Tag()->frameListMap()["APIC"].size() : 0;
+               return __file->ID3v2Tag() ? __file->ID3v2Tag()->frameListMap()["APIC"].size() : 0;
        }
 
 private:
-       MPEG::File *file;
+       MPEG::File *__file;
 };
 
 class Mp4AlbumArt : public IAlbumArt {
 public:
        explicit Mp4AlbumArt(FileRef *fileref)
-               : file(dynamic_cast<MP4::File *>(fileref->file())) {}
+               : __file(dynamic_cast<MP4::File *>(fileref->file())) {
+                       if (__file && __file->tag()->contains("covr"))
+                               __coverList = __file->tag()->item("covr").toCoverArtList();
+               }
        ~Mp4AlbumArt() override = default;
 
        int append(PictureFrame &pic) override {
-               MP4::CoverArtList lst;
-
-               if (file->tag()->contains("covr")) {
-                       ME_INFO("The item <covr> exists. Adding picture");
-                       lst = file->tag()->item("covr").toCoverArtList();
-               }
-
-               lst.append(MP4::CoverArt(pic.mp4format(), pic.data()));
-               file->tag()->setItem("covr", lst);
+               __coverList.append(MP4::CoverArt(pic.mp4format(), pic.data()));
+               __file->tag()->setItem("covr", __coverList);
 
                return METADATA_EDITOR_ERROR_NONE;
        }
 
        int remove(int index) override {
-               ME_RETVM_IF(!(file->tag()->contains("covr")), METADATA_EDITOR_ERROR_INVALID_PARAMETER, "No picture");
-               auto lst = file->tag()->item("covr").toCoverArtList();
-               ME_RETV_IF(!__is_valid_index(lst, index), METADATA_EDITOR_ERROR_INVALID_PARAMETER);
+               ME_RETV_IF(!__is_valid_index(__coverList, index), METADATA_EDITOR_ERROR_INVALID_PARAMETER);
 
-               auto picIt = lst.begin();
-               std::advance(picIt, index);
-               lst.erase(picIt);
-
-               file->tag()->setItem("covr", lst);      //?? FIX ME!
+               __coverList.erase(std::next(__coverList.begin(), index));
+               __file->tag()->setItem("covr", __coverList);
 
                return METADATA_EDITOR_ERROR_NONE;
        }
 
        int read(int index, void **picture, int *size, char **mime_type) override {
-               ME_RETVM_IF(!(file->tag()->contains("covr")), METADATA_EDITOR_ERROR_INVALID_PARAMETER, "No picture");
-               auto lst = file->tag()->item("covr").toCoverArtList();
-               ME_RETV_IF(!__is_valid_index(lst, index), METADATA_EDITOR_ERROR_INVALID_PARAMETER);
+               ME_RETV_IF(!__is_valid_index(__coverList, index), METADATA_EDITOR_ERROR_INVALID_PARAMETER);
 
-               auto coverArt = static_cast<MP4::CoverArt>(lst[index]);
+               auto coverArt = static_cast<MP4::CoverArt>(__coverList[index]);
                int coverArtSize = coverArt.data().size();
                ME_RETVM_IF(coverArtSize == 0, METADATA_EDITOR_ERROR_OPERATION_FAILED, "Size of picture is 0");
 
@@ -277,125 +262,126 @@ public:
        }
 
        uint count() override {
-               return (file->tag() && file->tag()->contains("covr")) ? file->tag()->item("covr").toCoverArtList().size() : 0;
+               return __coverList.size();
        }
 
 private:
-       MP4::File *file;
+       MP4::File *__file;
+       MP4::CoverArtList __coverList;
 };
 
 class FlacAlbumArt : public IAlbumArt {
 public:
        explicit FlacAlbumArt(FileRef *fileref)
-               : file(dynamic_cast<FLAC::File *>(fileref->file())) {}
+               : __file(dynamic_cast<FLAC::File *>(fileref->file())) {}
        ~FlacAlbumArt() override = default;
 
        int append(PictureFrame &pic) override {
                auto frontCover = new FLAC::Picture;
                frontCover->setData(pic.data());
                frontCover->setMimeType(pic.mime());
-               file->addPicture(frontCover);
+               __file->addPicture(frontCover);
                return METADATA_EDITOR_ERROR_NONE;
        }
 
        int remove(int index) override {
-               auto lst = file->pictureList();
+               auto lst = __file->pictureList();
                ME_RETV_IF(!__is_valid_index(lst, index), METADATA_EDITOR_ERROR_INVALID_PARAMETER);
 
-               file->removePicture(lst[index], true);
+               __file->removePicture(lst[index], true);
                return METADATA_EDITOR_ERROR_NONE;
        }
 
        int read(int index, void **picture, int *size, char **mime_type) override {
-               return __get_flac_picture(file->pictureList(), index, picture, size, mime_type);
+               return __get_flac_picture(__file->pictureList(), index, picture, size, mime_type);
        }
 
        uint count() override {
-               return file->pictureList().size();
+               return __file->pictureList().size();
        }
 
 private:
-       FLAC::File *file;
+       FLAC::File *__file;
 };
 
 class OggVorbisAlbumArt : public IAlbumArt {
 public:
        explicit OggVorbisAlbumArt(FileRef *fileref)
-               : file(dynamic_cast<Ogg::Vorbis::File *>(fileref->file())) {}
+               : __file(dynamic_cast<Ogg::Vorbis::File *>(fileref->file())) {}
        ~OggVorbisAlbumArt() override = default;
 
        int append(PictureFrame &pic) override {
-               return __append_ogg_picture(file->tag(), pic);
+               return __append_ogg_picture(__file->tag(), pic);
        }
 
        int remove(int index) override {
-               return __remove_ogg_picture(file->tag(), index);
+               return __remove_ogg_picture(__file->tag(), index);
        }
 
        int read(int index, void **picture, int *size, char **mime_type) override {
-               ME_RETVM_IF(!file->tag(), METADATA_EDITOR_ERROR_INVALID_PARAMETER, "Invalid XiphComment");
-               return __get_flac_picture(file->tag()->pictureList(), index, picture, size, mime_type);
+               ME_RETVM_IF(!__file->tag(), METADATA_EDITOR_ERROR_INVALID_PARAMETER, "Invalid XiphComment");
+               return __get_flac_picture(__file->tag()->pictureList(), index, picture, size, mime_type);
        }
 
        uint count() override {
-               return file->tag() ? file->tag()->pictureList().size() : 0;
+               return __file->tag() ? __file->tag()->pictureList().size() : 0;
        }
 
 private:
-       Ogg::Vorbis::File *file;
+       Ogg::Vorbis::File *__file;
 };
 
 class OggFlacAlbumArt : public IAlbumArt {
 public:
        explicit OggFlacAlbumArt(FileRef *fileref)
-               : file(dynamic_cast<Ogg::FLAC::File *>(fileref->file())) {}
+               : __file(dynamic_cast<Ogg::FLAC::File *>(fileref->file())) {}
        ~OggFlacAlbumArt() override = default;
 
        int append(PictureFrame &pic) override {
-               return __append_ogg_picture(file->tag(), pic);
+               return __append_ogg_picture(__file->tag(), pic);
        }
 
        int remove(int index) override {
-               return __remove_ogg_picture(file->tag(), index);
+               return __remove_ogg_picture(__file->tag(), index);
        }
 
        int read(int index, void **picture, int *size, char **mime_type) override {
-               ME_RETVM_IF(!file->tag(), METADATA_EDITOR_ERROR_INVALID_PARAMETER, "Invalid XiphComment");
-               return __get_flac_picture(file->tag()->pictureList(), index, picture, size, mime_type);
+               ME_RETVM_IF(!__file->tag(), METADATA_EDITOR_ERROR_INVALID_PARAMETER, "Invalid XiphComment");
+               return __get_flac_picture(__file->tag()->pictureList(), index, picture, size, mime_type);
        }
 
        uint count() override {
-               return file->tag() ? file->tag()->pictureList().size() : 0;
+               return __file->tag() ? __file->tag()->pictureList().size() : 0;
        }
 
 private:
-       Ogg::FLAC::File *file;
+       Ogg::FLAC::File *__file;
 };
 
 class WavAlbumArt : public IAlbumArt {
 public:
        explicit WavAlbumArt(FileRef *fileref)
-               : file(dynamic_cast<RIFF::WAV::File *>(fileref->file())) {}
+               : __file(dynamic_cast<RIFF::WAV::File *>(fileref->file())) {}
        ~WavAlbumArt() override = default;
 
        int append(PictureFrame &pic) override {
-               return __append_APIC(file->tag(), pic);
+               return __append_APIC(__file->tag(), pic);
        }
 
        int remove(int index) override {
-               return __remove_APIC(file->tag(), index);
+               return __remove_APIC(__file->tag(), index);
        }
 
        int read(int index, void **picture, int *size, char **mime_type) override {
-               return __get_APIC(file->tag(), index, picture, size, mime_type);
+               return __get_APIC(__file->tag(), index, picture, size, mime_type);
        }
 
        uint count() override {
-               return file->tag() ? file->tag()->frameListMap()["APIC"].size() : 0;
+               return __file->tag() ? __file->tag()->frameListMap()["APIC"].size() : 0;
        }
 
 private:
-       RIFF::WAV::File *file;
+       RIFF::WAV::File *__file;
 };
 
 class AlbumArtFactory {
@@ -535,8 +521,7 @@ extern "C" int metadata_editor_set_path(metadata_editor_h metadata, const char *
        if (_metadata->fref) {
                ME_INFO("file free [%p]", _metadata->fref);
                delete _metadata->fref;
-               if (_metadata->ifart)
-                       delete _metadata->ifart;
+               delete _metadata->ifart;
        }
 
        try {