driver/audiodec,audiometadata: cover file handling fixed

This commit is contained in:
martii
2013-11-12 16:04:27 +01:00
committed by [CST] Focus
parent 0d55807143
commit 579ca91889
3 changed files with 20 additions and 2 deletions

View File

@@ -348,8 +348,10 @@ CBaseDec::RetCode CFfmpegDec::Decoder(FILE *_in, const CFile::FileType ft, int /
//av_free(avcc); //av_free(avcc);
DeInit(); DeInit();
if (!_meta_data->cover.empty()) if (_meta_data->cover_temporary && !_meta_data->cover.empty()) {
_meta_data->cover_temporary = false;
unlink(_meta_data->cover.c_str()); unlink(_meta_data->cover.c_str());
}
return Status; return Status;
} }
@@ -445,6 +447,7 @@ bool CFfmpegDec::SetMetaData(FILE *_in, CFile::FileType ft, CAudioMetaData* m)
fwrite(pkt->data, pkt->size, 1, f); fwrite(pkt->data, pkt->size, 1, f);
fclose(f); fclose(f);
m->cover = cover; m->cover = cover;
m->cover_temporary = true;
} }
} }
} }

View File

@@ -42,6 +42,13 @@ CAudioMetaData::CAudioMetaData()
clear(); clear();
} }
// destructor
CAudioMetaData::~CAudioMetaData()
{
if (cover_temporary && !cover.empty())
unlink(cover.c_str());
}
// copy constructor // copy constructor
CAudioMetaData::CAudioMetaData( const CAudioMetaData& src ) CAudioMetaData::CAudioMetaData( const CAudioMetaData& src )
: type( src.type ), type_info( src.type_info ), : type( src.type ), type_info( src.type_info ),
@@ -52,7 +59,7 @@ CAudioMetaData::CAudioMetaData( const CAudioMetaData& src )
hasInfoOrXingTag( src.hasInfoOrXingTag ), artist( src.artist ), hasInfoOrXingTag( src.hasInfoOrXingTag ), artist( src.artist ),
title( src.title ), album( src.album ), sc_station( src.sc_station ), title( src.title ), album( src.album ), sc_station( src.sc_station ),
date( src.date ), genre( src.genre ), track( src.track ),cover(src.cover), date( src.date ), genre( src.genre ), track( src.track ),cover(src.cover),
changed( src.changed ) changed( src.changed ), cover_temporary(false)
{ {
} }
@@ -84,6 +91,8 @@ void CAudioMetaData::operator=( const CAudioMetaData& src )
cover = src.cover; cover = src.cover;
sc_station = src.sc_station; sc_station = src.sc_station;
changed = src.changed; changed = src.changed;
changed = src.changed;
cover_temporary = false;
} }
void CAudioMetaData::clear() void CAudioMetaData::clear()
@@ -105,6 +114,9 @@ void CAudioMetaData::clear()
date.clear(); date.clear();
genre.clear(); genre.clear();
track.clear(); track.clear();
if (cover_temporary && !cover.empty())
unlink(cover.c_str());
cover.clear(); cover.clear();
cover_temporary=false;
changed=false; changed=false;
} }

View File

@@ -44,6 +44,8 @@ class CAudioMetaData
public: public:
// constructor // constructor
CAudioMetaData(); CAudioMetaData();
// destructor
~CAudioMetaData();
// copy constructor // copy constructor
CAudioMetaData( const CAudioMetaData& src ); CAudioMetaData( const CAudioMetaData& src );
// assignment operator // assignment operator
@@ -85,6 +87,7 @@ public:
std::string genre; std::string genre;
std::string track; std::string track;
std::string cover; std::string cover;
bool cover_temporary;
bool changed; bool changed;
}; };
#endif /* __AUDIO_METADATA__ */ #endif /* __AUDIO_METADATA__ */