diff --git a/headers/os/codec/MediaExtractor.h b/headers/os/codec/MediaExtractor.h index 76defa5f4b..7eea20345e 100644 --- a/headers/os/codec/MediaExtractor.h +++ b/headers/os/codec/MediaExtractor.h @@ -35,12 +35,11 @@ public: void GetFileFormatInfo( media_file_format* fileFormat) const; - status_t GetMetaData(BMessage* _data) const; + + status_t GetMetaData(BMetaData* data) const; int32 StreamCount(); - const char* Copyright(); - const media_format* EncodedFormat(int32 stream); int64 CountFrames(int32 stream) const; bigtime_t Duration(int32 stream) const; @@ -59,7 +58,7 @@ public: media_codec_info* codecInfo); status_t GetStreamMetaData(int32 stream, - BMessage* _data) const; + BMetaData* data) const; void StopProcessing(); diff --git a/headers/os/codec/ReaderPlugin.h b/headers/os/codec/ReaderPlugin.h index 293c3de1e0..eb45976ca1 100644 --- a/headers/os/codec/ReaderPlugin.h +++ b/headers/os/codec/ReaderPlugin.h @@ -3,6 +3,7 @@ #include +#include #include "MediaPlugin.h" @@ -22,12 +23,10 @@ public: Reader(); virtual ~Reader(); - virtual const char* Copyright() = 0; - virtual status_t Sniff(int32* streamCount) = 0; virtual void GetFileFormatInfo(media_file_format* mff) = 0; - virtual status_t GetMetaData(BMessage* _data); + virtual status_t GetMetaData(BMetaData* data); virtual status_t AllocateCookie(int32 streamNumber, void** cookie) = 0; @@ -48,7 +47,7 @@ public: media_header* mediaHeader) = 0; virtual status_t GetStreamMetaData(void* cookie, - BMessage* _data); + BMetaData* data); BDataIO* Source() const; diff --git a/src/kits/codec/MediaExtractor.cpp b/src/kits/codec/MediaExtractor.cpp index 99023ca9fd..39c335de83 100644 --- a/src/kits/codec/MediaExtractor.cpp +++ b/src/kits/codec/MediaExtractor.cpp @@ -201,10 +201,10 @@ MediaExtractor::GetFileFormatInfo(media_file_format* fileFormat) const status_t -MediaExtractor::GetMetaData(BMessage* _data) const +MediaExtractor::GetMetaData(BMetaData* data) const { CALLED(); - return fReader->GetMetaData(_data); + return fReader->GetMetaData(data); } @@ -216,13 +216,6 @@ MediaExtractor::StreamCount() } -const char* -MediaExtractor::Copyright() -{ - return fReader->Copyright(); -} - - const media_format* MediaExtractor::EncodedFormat(int32 stream) { @@ -407,14 +400,14 @@ MediaExtractor::CreateDecoder(int32 stream, Decoder** _decoder, status_t -MediaExtractor::GetStreamMetaData(int32 stream, BMessage* _data) const +MediaExtractor::GetStreamMetaData(int32 stream, BMetaData* data) const { const stream_info& info = fStreamInfo[stream]; if (info.status != B_OK) return info.status; - return fReader->GetStreamMetaData(fStreamInfo[stream].cookie, _data); + return fReader->GetStreamMetaData(fStreamInfo[stream].cookie, data); } diff --git a/src/kits/codec/MetaData.cpp.orig b/src/kits/codec/MetaData.cpp.orig new file mode 100644 index 0000000000..bcfba57f81 --- /dev/null +++ b/src/kits/codec/MetaData.cpp.orig @@ -0,0 +1,146 @@ +/* + * Copyright 2018, Dario Casalinuovo. All rights reserved. + * Distributed under the terms of the MIT License. + */ + + +#include +#include + +#include +#include + +#define P BPrivate::media:: + +const char* P kCanPause = "canpause"; +const char* P kCanSeekBackward = "canseekbackward"; +const char* P kCanSeekForward = "canseekforward"; +const char* P kCanSeek = "canseek"; + +const char* P kAudioBitRate = "audiobitrate"; +const char* P kVideoBitRate = "videobitrate"; +const char* P kAudioSampleRate = "audiosamplerate"; +const char* P kVideoFrameRate = "videoframerate"; + +const char* P kMimeType = "mime"; +const char* P kAudioCodec = "audiocodec"; +const char* P kVideoCodec = "videocodec"; +const char* P kVideoHeight = "videoheight"; +const char* P kVideoWidth = "videowidth"; +const char* P kNumTracks = "numtracks"; +const char* P kDrmCrippled = "drmcrippled"; + +const char* P kTitle = "title"; +const char* P kComment = "comment"; +const char* P kCopyright = "copyright"; +const char* P kAlbum = "album"; +const char* P kArtist = "artist"; +const char* P kAuthor = "author"; +const char* P kComposer = "composer"; +const char* P kGenre = "genre"; +const char* P kDuration = "duration"; +const char* P kRating = "rating"; +const char* P kCDTrackNum = "cdtracknumber"; +const char* P kCDTrackMax = "cdtrackmax"; + + +BMetaData::BMetaData() + : + fMessage(NULL) +{ +<<<<<<< HEAD + char buf[sizeof(char) * sizeof(uint32) * 4 + 1]; + if (buf) { + sprintf(buf, "%" B_PRId32, key); + } + BString ret(buf); + ret.Prepend("codec:metadata:"); + return ret.String(); +======= + fMessage = new BMessage(); +>>>>>>> BMetaData: Finalize implementation +} + + +BMetaData::BMetaData(const BMessage& msg) + : + fMessage(NULL) +{ + fMessage = new BMessage(msg); +} + + +BMetaData::~BMetaData() +{ + delete fMessage; +} + + +bool +BMetaData::SetString(const char* key, const BString& value) +{ + return fMessage->SetString(key, value) == B_OK ? true : false; +} + + +bool +BMetaData::SetBool(const char* key, bool value) +{ + return fMessage->SetBool(key, value) == B_OK ? true : false; +} + + +bool +BMetaData::SetUInt32(const char* key, uint32 value) +{ + return fMessage->SetUInt32(key, value) == B_OK ? true : false; +} + + +bool +BMetaData::GetString(const char* key, BString* value) const +{ + return fMessage->FindString(key, value) == B_OK ? true : false; +} + + +bool +BMetaData::GetBool(const char* key, bool* value) const +{ + return fMessage->FindBool(key, value) == B_OK ? true : false; +} + + +bool +BMetaData::GetUInt32(const char* key, uint32* value) const +{ + return fMessage->FindUInt32(key, value) == B_OK ? true : false; +} + + +bool +BMetaData::RemoveValue(const char* key) +{ + return fMessage->RemoveName(key) == B_OK ? true : false; +} + + +void +BMetaData::MakeEmpty() +{ + fMessage->MakeEmpty(); +} + + +bool +BMetaData::IsEmpty() +{ + return fMessage->IsEmpty(); +} + + +BMessage* +BMetaData::Message() +{ + return fMessage; +} diff --git a/src/kits/codec/ReaderPlugin.cpp b/src/kits/codec/ReaderPlugin.cpp index 7f48cfcda8..42711b04ca 100644 --- a/src/kits/codec/ReaderPlugin.cpp +++ b/src/kits/codec/ReaderPlugin.cpp @@ -26,7 +26,7 @@ Reader::~Reader() status_t -Reader::GetMetaData(BMessage* _data) +Reader::GetMetaData(BMetaData* data) { return B_NOT_SUPPORTED; } @@ -47,7 +47,7 @@ Reader::FindKeyFrame(void* cookie, uint32 flags, int64* frame, bigtime_t* time) status_t -Reader::GetStreamMetaData(void* cookie, BMessage* _data) +Reader::GetStreamMetaData(void* cookie, BMetaData* data) { return B_NOT_SUPPORTED; }