diff --git a/framework/cacheModule/CacheModule.cpp b/framework/cacheModule/CacheModule.cpp index 6053d0218..f979548b2 100644 --- a/framework/cacheModule/CacheModule.cpp +++ b/framework/cacheModule/CacheModule.cpp @@ -130,7 +130,7 @@ CacheRet CacheModule::start() string cacheTmpPath = mCachePath.getCachePath() + TMP_SUFFIX; mCacheFileRemuxer = new CacheFileRemuxer(cacheTmpPath, mDescription); - mCacheFileRemuxer->setStreamMeta(mStreamMetas); + mCacheFileRemuxer->setStreamMeta(&mStreamMetas); mCacheFileRemuxer->setErrorCallback([this](int code, string msg) -> void { if (mErrorCallback != nullptr) { mErrorCallback(code, msg); diff --git a/framework/cacheModule/cache/CacheFileRemuxer.cpp b/framework/cacheModule/cache/CacheFileRemuxer.cpp index cc89ef381..4e61e8f65 100644 --- a/framework/cacheModule/cache/CacheFileRemuxer.cpp +++ b/framework/cacheModule/cache/CacheFileRemuxer.cpp @@ -270,16 +270,9 @@ void CacheFileRemuxer::setResultCallback(function callback) mResultCallback = callback; } -void CacheFileRemuxer::setStreamMeta(const vector &streamMetas) +void CacheFileRemuxer::setStreamMeta(const vector *streamMetas) { - mStreamMetas.clear(); - if (streamMetas.empty()) { - return; - } - - for (auto &item : streamMetas) { - mStreamMetas.push_back(item); - } + mStreamMetas = streamMetas; } void CacheFileRemuxer::sendError(const CacheRet &ret) diff --git a/framework/cacheModule/cache/CacheFileRemuxer.h b/framework/cacheModule/cache/CacheFileRemuxer.h index 2d9b290a2..9dfbc64e0 100644 --- a/framework/cacheModule/cache/CacheFileRemuxer.h +++ b/framework/cacheModule/cache/CacheFileRemuxer.h @@ -50,7 +50,7 @@ class CacheFileRemuxer { void setResultCallback(function callback); - void setStreamMeta(const vector &streamMetas); + void setStreamMeta(const vector *streamMetas); private : @@ -71,7 +71,6 @@ private : private: string mDestFilePath; string mDescription; - function mMetaCallback = nullptr; deque> mFrameInfoQueue; condition_variable mQueueCondition; @@ -92,7 +91,7 @@ private : function mErrorCallback = nullptr; function mResultCallback = nullptr; - vector mStreamMetas{}; + const vector *mStreamMetas; }; diff --git a/framework/muxer/IMuxer.h b/framework/muxer/IMuxer.h index 79b385120..e4cdf59a1 100644 --- a/framework/muxer/IMuxer.h +++ b/framework/muxer/IMuxer.h @@ -36,9 +36,7 @@ class IMuxer { * add streamMetas * @param streamMetas */ - virtual void setStreamMetas(const std::vector &streamMetas) = 0; - - virtual void clearStreamMetas() = 0; + virtual void setStreamMetas(const vector *streamMetas) = 0; //must be set before open(). These will be write to header. virtual void addSourceMetas(std::map sourceMetas) = 0; diff --git a/framework/muxer/ffmpegMuxer/FfmpegMuxer.cpp b/framework/muxer/ffmpegMuxer/FfmpegMuxer.cpp index 00936eaae..485e90854 100644 --- a/framework/muxer/ffmpegMuxer/FfmpegMuxer.cpp +++ b/framework/muxer/ffmpegMuxer/FfmpegMuxer.cpp @@ -39,7 +39,6 @@ FfmpegMuxer::~FfmpegMuxer() mSourceMetaMap.clear(); mStreamInfoMap.clear(); - clearStreamMetas(); } int FfmpegMuxer::open() @@ -54,7 +53,7 @@ int FfmpegMuxer::open() return ret; } - for (Stream_meta *item : mStreamMetas) { + for (Stream_meta *item : *mStreamMetas) { AVStream *stream = nullptr; if (item->type == Stream_type::STREAM_TYPE_VIDEO) { @@ -366,28 +365,9 @@ int FfmpegMuxer::muxerWriteDataType(uint8_t *buf, int size, enum DataType type, } } -void FfmpegMuxer::setStreamMetas(const vector &streamMetas) +void FfmpegMuxer::setStreamMetas(const vector *streamMetas) { - clearStreamMetas(); - - if (streamMetas.empty()) { - return; - } - - for (const auto &item : streamMetas) { - mStreamMetas.push_back(item); - } -} - -void FfmpegMuxer::clearStreamMetas() -{ - if (!mStreamMetas.empty()) { - for (auto &item : mStreamMetas) { - releaseMeta(item); - } - - mStreamMetas.clear(); - } + mStreamMetas = streamMetas; } void FfmpegMuxer::addSourceMetas(map sourceMetas) diff --git a/framework/muxer/ffmpegMuxer/FfmpegMuxer.h b/framework/muxer/ffmpegMuxer/FfmpegMuxer.h index b3bd7cbc4..9798d0109 100644 --- a/framework/muxer/ffmpegMuxer/FfmpegMuxer.h +++ b/framework/muxer/ffmpegMuxer/FfmpegMuxer.h @@ -28,9 +28,7 @@ class CICADA_CPLUS_EXTERN FfmpegMuxer : public IMuxer, private IMuxerPrototype { void setCopyPts(bool copyPts) override; - void setStreamMetas(const std::vector &streamMetas) override; - - void clearStreamMetas() override; + void setStreamMetas(const vector *streamMetas) override; //must be set before open(). These will be write to header. void addSourceMetas(std::map sourceMetas) override; @@ -120,7 +118,7 @@ class CICADA_CPLUS_EXTERN FfmpegMuxer : public IMuxer, private IMuxerPrototype { private: std::map mSourceMetaMap; - std::vector mStreamMetas; + const vector *mStreamMetas; std::map mStreamInfoMap; uint8_t *mIobuf = nullptr;