-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathvorbisfilehandler.cpp
61 lines (42 loc) · 1.29 KB
/
vorbisfilehandler.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "vorbisfilehandler.h"
#include "taglibutils_p.h"
#include <vorbisfile.h>
VorbisFileHandler::VorbisFileHandler()
{
}
VorbisFileHandler::~VorbisFileHandler()
{
}
FileHandlerInterface::Status VorbisFileHandler::setFile(const QString filePath)
{
m_file = filePath;
return SUCCESS;
}
// spec: https://wiki.xiph.org/VorbisComment#Chapter_Extension
ChapterItem *VorbisFileHandler::createChapterTree() const
{
if (m_file.isEmpty()) return nullptr;
TagLib::Ogg::Vorbis::File file(m_file.toLocal8Bit().data());
TagLib::Ogg::XiphComment * tags = file.tag();
return TagLibUtils::loadFromXiphComment(tags);
}
FileHandlerInterface::ChapterFeatures VorbisFileHandler::chapterFeatures() const
{
return ChapterFeatures(StartTimeMs | Title);
}
FileHandlerInterface::Status VorbisFileHandler::importFromFile()
{
return SUCCESS;
}
FileHandlerInterface::Status VorbisFileHandler::writeToFile(ChapterItem *chapterRoot)
{
TagLib::Ogg::Vorbis::File file(m_file.toLocal8Bit().data());
TagLib::Ogg::XiphComment * tags = file.tag();
Q_CHECK_PTR(tags);
TagLibUtils::saveToXiphComment(chapterRoot, tags);
return file.save() ? SUCCESS : FILE_STAT_ERROR;
}
FileHandlerInterface::Status VorbisFileHandler::exportToFile(ChapterItem *)
{
return EXPORT_NOT_SUPPORTED;
}