From 278d03da22e10187dbcd7f9109e0b28a85c67557 Mon Sep 17 00:00:00 2001 From: Barrett17 Date: Tue, 27 Nov 2018 11:35:01 +0100 Subject: [PATCH] media_kit: Remove most private dependencies from codec_kit * Move to BCodecKit namespace and make extensive use of BCodecRoster. * This is a first step in the right direction of decreasing private dependencies. Some APIs are being translated to the CodecKit. I am doing an investigation on which APIs are really used among apps, so that the new kit can be more slim and oriented toward easy development and can be extended in the right direction instead to continue maintaning unuseful code. * BMediaFormats needs still a bit of love. * General improvements in style and code maintainability. --- headers/os/media/MediaDecoder.h | 2 +- headers/os/media/MediaEncoder.h | 12 ++++-------- headers/os/media/MediaFile.h | 17 +++++++++-------- headers/os/media/MediaTrack.h | 18 +++++++++--------- src/kits/media/MediaDecoder.cpp | 16 ++++++++-------- src/kits/media/MediaDefs.cpp | 15 ++------------- src/kits/media/MediaEncoder.cpp | 11 +++++++---- src/kits/media/MediaFile.cpp | 15 ++++++++------- src/kits/media/MediaFormats.cpp | 24 +++++++++++------------- src/kits/media/MediaTrack.cpp | 29 +++++++++++++++-------------- 10 files changed, 74 insertions(+), 85 deletions(-) diff --git a/headers/os/media/MediaDecoder.h b/headers/os/media/MediaDecoder.h index b4bda5b621..8112d04810 100644 --- a/headers/os/media/MediaDecoder.h +++ b/headers/os/media/MediaDecoder.h @@ -1,7 +1,7 @@ #ifndef MEDIADECODER_H #define MEDIADECODER_H -#include + #include diff --git a/headers/os/media/MediaEncoder.h b/headers/os/media/MediaEncoder.h index 2248d4131c..091dc0f63d 100644 --- a/headers/os/media/MediaEncoder.h +++ b/headers/os/media/MediaEncoder.h @@ -8,14 +8,10 @@ #include -namespace BPrivate { - namespace media { - class BEncoder; - class BEncoderPlugin; - } -} -using namespace BPrivate::media; +namespace BCodecKit { + class BEncoder; +} class BMediaEncoder { @@ -84,7 +80,7 @@ private: void ReleaseEncoder(); uint32 _reserved_was_fEncoderMgr; - BEncoder* fEncoder; + BCodecKit::BEncoder* fEncoder; int32 fEncoderID; bool fFormatValid; diff --git a/headers/os/media/MediaFile.h b/headers/os/media/MediaFile.h index 76d76df641..f0c30eea64 100644 --- a/headers/os/media/MediaFile.h +++ b/headers/os/media/MediaFile.h @@ -13,12 +13,13 @@ #include +namespace BCodecKit { + class BMediaExtractor; + class BMediaStreamer; + class BMediaWriter; +} + namespace BPrivate { - namespace media { - class BMediaExtractor; - class BMediaStreamer; - class BMediaWriter; - } class _AddonManager; } @@ -162,18 +163,18 @@ private: status_t ControlFile(int32 selector, void* ioData, size_t size); - BPrivate::media::BMediaExtractor* fExtractor; + BCodecKit::BMediaExtractor* fExtractor; int32 _reserved_BMediaFile_was_fExtractorID; int32 fTrackNum; status_t fErr; BPrivate::_AddonManager* fEncoderMgr; BPrivate::_AddonManager* fWriterMgr; - BPrivate::media::BMediaWriter* fWriter; + BCodecKit::BMediaWriter* fWriter; int32 fWriterID; media_file_format fMFI; - BPrivate::media::BMediaStreamer* fStreamer; + BCodecKit::BMediaStreamer* fStreamer; bool fFileClosed; bool fDeleteSource; diff --git a/headers/os/media/MediaTrack.h b/headers/os/media/MediaTrack.h index e7ed4c945e..3541cc9531 100644 --- a/headers/os/media/MediaTrack.h +++ b/headers/os/media/MediaTrack.h @@ -9,12 +9,12 @@ #include -namespace BPrivate { namespace media { +namespace BCodecKit { class BDecoder; class BEncoder; class BMediaExtractor; class BMediaWriter; -} } +} class BMessage; class BView; @@ -219,12 +219,12 @@ private: // For read-only access to a BMediaTrack BMediaTrack( - BPrivate::media::BMediaExtractor* extractor, + BCodecKit::BMediaExtractor* extractor, int32 streamIndex); // For write-only access to a BMediaTrack BMediaTrack( - BPrivate::media::BMediaWriter* writer, + BCodecKit::BMediaWriter* writer, int32 streamIndex, media_format* format, const media_codec_info* codecInfo); @@ -235,9 +235,9 @@ private: private: status_t fInitStatus; - BPrivate::media::BDecoder* fDecoder; - BPrivate::media::BDecoder* fRawDecoder; - BPrivate::media::BMediaExtractor* fExtractor; + BCodecKit::BDecoder* fDecoder; + BCodecKit::BDecoder* fRawDecoder; + BCodecKit::BMediaExtractor* fExtractor; int32 fStream; int64 fCurrentFrame; @@ -245,9 +245,9 @@ private: media_codec_info fCodecInfo; - BPrivate::media::BEncoder* fEncoder; + BCodecKit::BEncoder* fEncoder; int32 fEncoderID; - BPrivate::media::BMediaWriter* fWriter; + BCodecKit::BMediaWriter* fWriter; media_format fFormat; uint32 fWorkaroundFlags; diff --git a/src/kits/media/MediaDecoder.cpp b/src/kits/media/MediaDecoder.cpp index 651fdcf5c2..f8a679233b 100644 --- a/src/kits/media/MediaDecoder.cpp +++ b/src/kits/media/MediaDecoder.cpp @@ -46,7 +46,7 @@ BMediaDecoder::BMediaDecoder(const media_codec_info *mci) /* virtual */ BMediaDecoder::~BMediaDecoder() { - gPluginManager.DestroyDecoder(fDecoder); + BCodecRoster::ReleaseDecoder(fDecoder); } @@ -62,10 +62,10 @@ BMediaDecoder::SetTo(const media_format *in_format, const void *info, size_t info_size) { - gPluginManager.DestroyDecoder(fDecoder); + BCodecRoster::ReleaseDecoder(fDecoder); fDecoder = NULL; - status_t err = gPluginManager.CreateDecoder(&fDecoder, *in_format); + status_t err = BCodecRoster::InstantiateDecoder(&fDecoder, *in_format); if (err < B_OK) goto fail; @@ -81,7 +81,7 @@ BMediaDecoder::SetTo(const media_format *in_format, return B_OK; fail: - gPluginManager.DestroyDecoder(fDecoder); + BCodecRoster::ReleaseDecoder(fDecoder); fDecoder = NULL; fInitStatus = B_NO_INIT; return err; @@ -91,10 +91,10 @@ fail: status_t BMediaDecoder::SetTo(const media_codec_info *mci) { - gPluginManager.DestroyDecoder(fDecoder); + BCodecRoster::ReleaseDecoder(fDecoder); fDecoder = NULL; - status_t err = gPluginManager.CreateDecoder(&fDecoder, *mci); + status_t err = BCodecRoster::InstantiateDecoder(&fDecoder, *mci); if (err < B_OK) goto fail; @@ -106,7 +106,7 @@ BMediaDecoder::SetTo(const media_codec_info *mci) return B_OK; fail: - gPluginManager.DestroyDecoder(fDecoder); + BCodecRoster::ReleaseDecoder(fDecoder); fDecoder = NULL; fInitStatus = B_NO_INIT; return err; @@ -182,7 +182,7 @@ BMediaDecoder::GetDecoderInfo(media_codec_info *out_info) const if (!fDecoder) return B_NO_INIT; - return gPluginManager.GetDecoderInfo(fDecoder, out_info); + return BCodecRoster::GetDecoderInfo(fDecoder, out_info); } diff --git a/src/kits/media/MediaDefs.cpp b/src/kits/media/MediaDefs.cpp index d6106ebd4e..3745229e1c 100644 --- a/src/kits/media/MediaDefs.cpp +++ b/src/kits/media/MediaDefs.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -24,7 +25,6 @@ #include #include -#include "AddOnManager.h" #include "DataExchange.h" #include "MediaDebug.h" #include "MediaMisc.h" @@ -1218,16 +1218,7 @@ operator<(const media_file_format_id& a, const media_file_format_id& b) status_t get_next_file_format(int32* cookie, media_file_format* mff) { - if (cookie == NULL || mff == NULL) - return B_BAD_VALUE; - - status_t ret = AddOnManager::GetInstance()->GetFileFormat(mff, *cookie); - if (ret != B_OK) - return ret; - - *cookie = *cookie + 1; - - return B_OK; + return BCodecKit::BCodecRoster::GetNextFileFormat(cookie, mff); } @@ -1255,5 +1246,3 @@ media_decode_info::media_decode_info() codec_data = NULL; codec_data_size = 0; } - - diff --git a/src/kits/media/MediaEncoder.cpp b/src/kits/media/MediaEncoder.cpp index 1e94f906b9..1b6ca51fc6 100644 --- a/src/kits/media/MediaEncoder.cpp +++ b/src/kits/media/MediaEncoder.cpp @@ -9,13 +9,16 @@ #include +#include #include -#include #include #include "MediaDebug.h" +using namespace BCodecKit; + + /************************************************************* * public BMediaEncoder *************************************************************/ @@ -76,7 +79,7 @@ BMediaEncoder::SetTo(const media_format* outputFormat) return fInitStatus; media_format format = *outputFormat; - err = gPluginManager.CreateEncoder(&fEncoder, format); + err = BCodecRoster::InstantiateEncoder(&fEncoder, format); if (fEncoder != NULL && err == B_OK) { err = _AttachToEncoder(); if (err == B_OK) @@ -94,7 +97,7 @@ BMediaEncoder::SetTo(const media_codec_info* mci) CALLED(); ReleaseEncoder(); - status_t err = gPluginManager.CreateEncoder(&fEncoder, mci, 0); + status_t err = BCodecRoster::InstantiateEncoder(&fEncoder, mci, 0); if (fEncoder != NULL && err == B_OK) { err = _AttachToEncoder(); if (err == B_OK) { @@ -216,7 +219,7 @@ BMediaEncoder::ReleaseEncoder() { CALLED(); if (fEncoder != NULL) { - gPluginManager.DestroyEncoder(fEncoder); + BCodecRoster::ReleaseEncoder(fEncoder); fEncoder = NULL; } fInitStatus = B_NO_INIT; diff --git a/src/kits/media/MediaFile.cpp b/src/kits/media/MediaFile.cpp index f4ae4f16d0..ea6f984be2 100644 --- a/src/kits/media/MediaFile.cpp +++ b/src/kits/media/MediaFile.cpp @@ -6,20 +6,21 @@ #include +#include +#include +#include +#include +#include +#include + #include #include #include -#include -#include -#include - #include "MediaDebug.h" -#include "MediaExtractor.h" -#include "MediaStreamer.h" -#include "MediaWriter.h" +using namespace BCodecKit; BMediaFile::BMediaFile(const entry_ref* ref) diff --git a/src/kits/media/MediaFormats.cpp b/src/kits/media/MediaFormats.cpp index bc2afa76a1..d0162e0cc2 100644 --- a/src/kits/media/MediaFormats.cpp +++ b/src/kits/media/MediaFormats.cpp @@ -7,6 +7,12 @@ * Marcus Overhagen */ +#include + +#include +#include +#include +#include #include "AddOnManager.h" #include "DataExchange.h" @@ -14,11 +20,6 @@ #include "MetaFormat.h" #include "MediaDebug.h" -#include -#include -#include -#include - #include using namespace BPrivate::media; @@ -47,7 +48,7 @@ get_next_encoder(int32* cookie, const media_file_format* fileFormat, media_format candidateInputFormat; media_format candidateOutputFormat; - status_t ret = AddOnManager::GetInstance()->GetCodecInfo( + status_t ret = BCodecKit::BCodecRoster::GetCodecInfo( &candidateCodecInfo, &candidateFormatFamily, &candidateInputFormat, &candidateOutputFormat, *cookie); @@ -97,7 +98,7 @@ get_next_encoder(int32* cookie, const media_file_format* fileFormat, media_format candidateInputFormat; media_format candidateOutputFormat; - status_t ret = AddOnManager::GetInstance()->GetCodecInfo( + status_t ret = BCodecKit::BCodecRoster::GetCodecInfo( &candidateCodecInfo, &candidateFormatFamily, &candidateInputFormat, &candidateOutputFormat, *cookie); @@ -145,7 +146,7 @@ get_next_encoder(int32* cookie, media_codec_info* _codecInfo) media_format inputFormat; media_format outputFormat; - status_t ret = AddOnManager::GetInstance()->GetCodecInfo(_codecInfo, + status_t ret = BCodecKit::BCodecRoster::GetCodecInfo(_codecInfo, &formatFamily, &inputFormat, &outputFormat, *cookie); if (ret != B_OK) return ret; @@ -366,7 +367,7 @@ update_media_formats() // We want the add-ons to register themselves with the format manager, so // the list is up to date. - AddOnManager::GetInstance()->RegisterAddOns(); + BCodecKit::BPrivate::AddOnManager::GetInstance()->RegisterAddOns(); BMessage reply; FormatManager::GetInstance()->GetFormats(sLastFormatsUpdate, reply); @@ -621,10 +622,8 @@ BMediaFormats::MakeFormatFor(const media_format_description* descriptions, int32 descriptionCount, media_format* format, uint32 flags, void* _reserved) { - status_t status = FormatManager::GetInstance()->MakeFormatFor(descriptions, + return BCodecKit::BCodecRoster::MakeFormatFor(descriptions, descriptionCount, *format, flags, _reserved); - - return status; } @@ -638,4 +637,3 @@ BMediaFormats::MakeFormatFor(const media_format_description& description, *_outFormat = inFormat; return MakeFormatFor(&description, 1, _outFormat); } - diff --git a/src/kits/media/MediaTrack.cpp b/src/kits/media/MediaTrack.cpp index 4af314a526..0cbe3002b0 100644 --- a/src/kits/media/MediaTrack.cpp +++ b/src/kits/media/MediaTrack.cpp @@ -12,17 +12,18 @@ #include +#include +#include +#include +#include + #include #include #include #include -#include - -#include "MediaExtractor.h" -#include "MediaWriter.h" -#include "PluginManager.h" +using namespace BCodecKit; //#define TRACE_MEDIA_TRACK @@ -84,9 +85,9 @@ BMediaTrack::~BMediaTrack() { CALLED(); - gPluginManager.DestroyDecoder(fRawDecoder); - gPluginManager.DestroyDecoder(fDecoder); - gPluginManager.DestroyEncoder(fEncoder); + BCodecRoster::ReleaseDecoder(fRawDecoder); + BCodecRoster::ReleaseDecoder(fDecoder); + BCodecRoster::ReleaseEncoder(fEncoder); } /************************************************************* @@ -163,7 +164,7 @@ BMediaTrack::DecodedFormat(media_format* _format, uint32 flags) if (fExtractor == NULL || fDecoder == NULL) return B_NO_INIT; - gPluginManager.DestroyDecoder(fRawDecoder); + BCodecRoster::ReleaseDecoder(fRawDecoder); fRawDecoder = NULL; #ifdef TRACE_MEDIA_TRACK @@ -839,7 +840,7 @@ BMediaTrack::Perform(int32 selector, void* data) // #pragma mark - private -BMediaTrack::BMediaTrack(BPrivate::media::BMediaExtractor* extractor, +BMediaTrack::BMediaTrack(BCodecKit::BMediaExtractor* extractor, int32 stream) { CALLED(); @@ -871,7 +872,7 @@ BMediaTrack::BMediaTrack(BPrivate::media::BMediaExtractor* extractor, } -BMediaTrack::BMediaTrack(BPrivate::media::BMediaWriter* writer, +BMediaTrack::BMediaTrack(BCodecKit::BMediaWriter* writer, int32 streamIndex, media_format* format, const media_codec_info* codecInfo) { @@ -950,7 +951,7 @@ BMediaTrack::SetupWorkaround() bool BMediaTrack::SetupFormatTranslation(const media_format &from, media_format* to) { - gPluginManager.DestroyDecoder(fRawDecoder); + BCodecRoster::ReleaseDecoder(fRawDecoder); fRawDecoder = NULL; #ifdef TRACE_MEDIA_TRACK @@ -959,7 +960,7 @@ BMediaTrack::SetupFormatTranslation(const media_format &from, media_format* to) printf("BMediaTrack::SetupFormatTranslation: from: %s\n", s); #endif - status_t result = gPluginManager.CreateDecoder(&fRawDecoder, from); + status_t result = BCodecRoster::InstantiateDecoder(&fRawDecoder, from); if (result != B_OK) { ERROR("BMediaTrack::SetupFormatTranslation: CreateDecoder failed\n"); return false; @@ -1007,7 +1008,7 @@ BMediaTrack::SetupFormatTranslation(const media_format &from, media_format* to) return true; error: - gPluginManager.DestroyDecoder(fRawDecoder); + BCodecRoster::ReleaseDecoder(fRawDecoder); fRawDecoder = NULL; return false; }