BMetaData: Add missing functionality
* Add more metadata keys needed to support ffmpeg. * Implement methods allowing to embed BMetaData into BMetaData. * Add methods to handle more types.
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#ifndef _META_DATA_H
|
||||
#define _META_DATA_H
|
||||
|
||||
|
||||
#include <Message.h>
|
||||
|
||||
|
||||
@@ -40,34 +41,61 @@ extern const char* kComment; // BString
|
||||
extern const char* kCopyright; // BString
|
||||
extern const char* kAlbum; // BString
|
||||
extern const char* kArtist; // BString
|
||||
extern const char* kAlbumArtist; // BString
|
||||
extern const char* kAuthor; // BString
|
||||
extern const char* kPerformer; // BString
|
||||
extern const char* kComposer; // BString
|
||||
extern const char* kGenre; // BString
|
||||
// TODO: what we would use for encoded dates?
|
||||
// Date, // date
|
||||
extern const char* kYear; // BString
|
||||
extern const char* kEncodedBy; // BString
|
||||
extern const char* kLanguage; // BString
|
||||
extern const char* kDisc; // BString
|
||||
extern const char* kPublisher; // BString
|
||||
extern const char* kEncoder; // BString
|
||||
extern const char* kTrack;
|
||||
extern const char* kDate; // BString
|
||||
extern const char* kDuration; // uint32 (ms)
|
||||
extern const char* kRating; // BString
|
||||
// TODO: BBitmap? uint8 array?
|
||||
//AlbumArt,
|
||||
// TODO: BBitmap? uint8 array? url?
|
||||
//extern const char* kAlbumArt
|
||||
extern const char* kCDTrackNum; // uint32
|
||||
extern const char* kCDTrackMax; // uint32
|
||||
|
||||
extern const char* kChapter; // BMetaData
|
||||
extern const char* kChapterStart; // int64
|
||||
extern const char* kChapterEnd; // int64
|
||||
|
||||
// Others
|
||||
extern const char* kProgramData; // BMetaData
|
||||
|
||||
|
||||
class BMetaData {
|
||||
public:
|
||||
BMetaData();
|
||||
BMetaData(const BMessage& msg);
|
||||
virtual ~BMetaData();
|
||||
|
||||
~BMetaData();
|
||||
BMetaData& operator=(const BMetaData& other);
|
||||
|
||||
// Woah. It seems we need BValue there.
|
||||
bool SetString(const char* key, const BString& value);
|
||||
bool SetBool(const char* key, bool value);
|
||||
bool SetUInt32(const char* key, uint32 value);
|
||||
bool SetInt32(const char* key, int32 value);
|
||||
bool SetInt64(const char* key, int64 value);
|
||||
|
||||
bool GetString(const char* key, BString* value) const;
|
||||
bool GetBool(const char* key, bool* value) const;
|
||||
bool GetUInt32(const char* key, uint32* value) const;
|
||||
bool GetInt32(const char* key, int32* value) const;
|
||||
bool GetInt64(const char* key, int64* value) const;
|
||||
|
||||
// We allow embedding BMetaData into BMetaData. The BMetaData field
|
||||
// is the only one allowed to have more occurrences for a single key
|
||||
// so an index attribute is given for retrieving it.
|
||||
bool AddMetaData(const char* key, BMetaData* data);
|
||||
bool GetMetaData(const char* key, BMetaData* data,
|
||||
uint32 index = 0);
|
||||
|
||||
bool RemoveValue(const char* key);
|
||||
|
||||
@@ -77,14 +105,13 @@ public:
|
||||
|
||||
// Retain ownership of the object, be careful with that
|
||||
// that's why we need to introduce smart pointers!
|
||||
BMessage* Message();
|
||||
const BMessage* Message();
|
||||
|
||||
private:
|
||||
// TODO: padding
|
||||
BMessage* fMessage;
|
||||
|
||||
BMetaData(const BMetaData&);
|
||||
BMetaData& operator=(const BMetaData&);
|
||||
};
|
||||
|
||||
} // namespace media
|
||||
|
||||
Reference in New Issue
Block a user