diff --git a/framework/demuxer/IDemuxer.cpp b/framework/demuxer/IDemuxer.cpp index 5cb85121d..0344dfe8c 100644 --- a/framework/demuxer/IDemuxer.cpp +++ b/framework/demuxer/IDemuxer.cpp @@ -30,7 +30,7 @@ namespace Cicada { mInterruptCb = inter; } - int IDemuxer::GetStreamMeta(unique_ptr &meta, int index, bool sub) + int IDemuxer::GetStreamMeta(unique_ptr &meta, int index, bool sub) const { Stream_meta Meta; int ret = GetStreamMeta(&Meta, index, sub); diff --git a/framework/demuxer/IDemuxer.h b/framework/demuxer/IDemuxer.h index b660f485a..fb5074229 100644 --- a/framework/demuxer/IDemuxer.h +++ b/framework/demuxer/IDemuxer.h @@ -97,9 +97,10 @@ namespace Cicada { virtual int GetSourceMeta(Source_meta **meta) const = 0; - attribute_deprecated virtual int GetStreamMeta(Stream_meta *meta, int index, bool sub) = 0; + attribute_deprecated + virtual int GetStreamMeta(Stream_meta *meta, int index, bool sub) const = 0; - virtual int GetStreamMeta(unique_ptr &meta, int index, bool sub); + virtual int GetStreamMeta(unique_ptr &meta, int index, bool sub) const; virtual int OpenStream(int index) = 0; diff --git a/framework/demuxer/avFormatDemuxer.cpp b/framework/demuxer/avFormatDemuxer.cpp index a53b5f44f..b615fb397 100644 --- a/framework/demuxer/avFormatDemuxer.cpp +++ b/framework/demuxer/avFormatDemuxer.cpp @@ -435,9 +435,6 @@ namespace Cicada { } if (!bsfName.empty()) { -#if AF_HAVE_PTHREAD - std::unique_lock uLock(mCtxMutex); -#endif mStreamCtxMap[index]->bsf = unique_ptr(IAVBSFFactory::create(bsfName)); ret = mStreamCtxMap[index]->bsf->init(bsfName, mCtx->streams[index]->codecpar); @@ -540,12 +537,9 @@ namespace Cicada { return AVDictionary2SourceMeta(meta, mCtx->metadata); } - int avFormatDemuxer::GetStreamMeta(Stream_meta *meta, int index, bool sub) + int avFormatDemuxer::GetStreamMeta(Stream_meta *meta, int index, bool sub) const { -#if AF_HAVE_PTHREAD - std::unique_lock uLock(mCtxMutex); -#endif - if (index < 0 || mCtx == nullptr || index > mCtx->nb_streams) { + if (index < 0 || index > mCtx->nb_streams) { return -EINVAL; } diff --git a/framework/demuxer/avFormatDemuxer.h b/framework/demuxer/avFormatDemuxer.h index 949f25761..5a15a93ed 100644 --- a/framework/demuxer/avFormatDemuxer.h +++ b/framework/demuxer/avFormatDemuxer.h @@ -52,7 +52,7 @@ namespace Cicada { int GetSourceMeta(Source_meta **meta) const override; - int GetStreamMeta(Stream_meta *meta, int index, bool sub) override; + int GetStreamMeta(Stream_meta *meta, int index, bool sub) const override; void Start() override; @@ -143,7 +143,6 @@ namespace Cicada { std::mutex mQueLock{}; std::condition_variable mQueCond{}; atomic mError{0}; - std::mutex mCtxMutex{}; #endif }; diff --git a/framework/demuxer/avFormatSubtitleDemuxer.cpp b/framework/demuxer/avFormatSubtitleDemuxer.cpp index 748a1e9da..48de91d76 100644 --- a/framework/demuxer/avFormatSubtitleDemuxer.cpp +++ b/framework/demuxer/avFormatSubtitleDemuxer.cpp @@ -85,7 +85,7 @@ namespace Cicada { return 0; } - int avFormatSubtitleDemuxer::GetStreamMeta(Stream_meta *meta, int index, bool sub) + int avFormatSubtitleDemuxer::GetStreamMeta(Stream_meta *meta, int index, bool sub) const { if (index < 0 || index > mCtx->nb_streams) { return -EINVAL; diff --git a/framework/demuxer/avFormatSubtitleDemuxer.h b/framework/demuxer/avFormatSubtitleDemuxer.h index acfe3af88..e81eb81c3 100644 --- a/framework/demuxer/avFormatSubtitleDemuxer.h +++ b/framework/demuxer/avFormatSubtitleDemuxer.h @@ -29,7 +29,7 @@ namespace Cicada { int GetSourceMeta(Source_meta **meta) const override; - int GetStreamMeta(Stream_meta *meta, int index, bool sub) override; + int GetStreamMeta(Stream_meta *meta, int index, bool sub) const override; void Start() override; diff --git a/framework/demuxer/play_list/HLSStream.cpp b/framework/demuxer/play_list/HLSStream.cpp index 35ad8ccfb..34f4c062c 100644 --- a/framework/demuxer/play_list/HLSStream.cpp +++ b/framework/demuxer/play_list/HLSStream.cpp @@ -419,16 +419,14 @@ namespace Cicada { std::lock_guard lock(mHLSMutex); mPDemuxer = std::unique_ptr(new demuxer_service(nullptr)); } - { - std::lock_guard lock(mHLSMutex); - mPDemuxer->setOptions(this->mOpts); - unique_ptr demuxerMeta = unique_ptr(new DemuxerMeta()); - demuxerMeta->ownerUrl = mPTracker->getPlayListUri(); - mPDemuxer->setDemuxerMeta(demuxerMeta); - mPDemuxer->SetDataCallBack(read_callback, this, nullptr, nullptr, nullptr); - mPDemuxer->setSampleDecryptor(this->mSampeAesDecrypter.get()); - ret = mPDemuxer->createDemuxer(demuxer_type_unknown); - } + + mPDemuxer->setOptions(this->mOpts); + unique_ptr demuxerMeta = unique_ptr(new DemuxerMeta()); + demuxerMeta->ownerUrl = mPTracker->getPlayListUri(); + mPDemuxer->setDemuxerMeta(demuxerMeta); + mPDemuxer->SetDataCallBack(read_callback, this, nullptr, nullptr, nullptr); + mPDemuxer->setSampleDecryptor(this->mSampeAesDecrypter.get()); + ret = mPDemuxer->createDemuxer(demuxer_type_unknown); if (ret < 0) { return ret; diff --git a/framework/demuxer/play_list/playList_demuxer.cpp b/framework/demuxer/play_list/playList_demuxer.cpp index 619641aae..f32a3784b 100644 --- a/framework/demuxer/play_list/playList_demuxer.cpp +++ b/framework/demuxer/play_list/playList_demuxer.cpp @@ -127,7 +127,7 @@ namespace Cicada { return 0; } - int playList_demuxer::GetStreamMeta(Stream_meta *meta, int index, bool sub) + int playList_demuxer::GetStreamMeta(Stream_meta *meta, int index, bool sub) const { if (mPPlaylistManager) { return mPPlaylistManager->GetStreamMeta(meta, index, sub); diff --git a/framework/demuxer/play_list/playList_demuxer.h b/framework/demuxer/play_list/playList_demuxer.h index b9715de2b..f7570e689 100644 --- a/framework/demuxer/play_list/playList_demuxer.h +++ b/framework/demuxer/play_list/playList_demuxer.h @@ -58,7 +58,7 @@ namespace Cicada{ int GetSourceMeta(Source_meta **meta) const override; - int GetStreamMeta(Stream_meta *meta, int index, bool sub) override; + int GetStreamMeta(Stream_meta *meta, int index, bool sub) const override; int OpenStream(int index) override; diff --git a/framework/render/audio/filterAudioRender.cpp b/framework/render/audio/filterAudioRender.cpp index 3855a32e1..f636c792b 100644 --- a/framework/render/audio/filterAudioRender.cpp +++ b/framework/render/audio/filterAudioRender.cpp @@ -240,7 +240,7 @@ namespace Cicada { ret = device_write(mRenderFrame); if (ret == -EAGAIN) { - unique_lock lock(mFrameQueMutex); + if (mFrameQue.size() == mMaxQueSize) { mMaxQueSize = std::max(MIN_INPUT_BUFFER_COUNT, mMaxQueSize.load() - 1); } diff --git a/framework/render/video/vsync/timedVSync.h b/framework/render/video/vsync/timedVSync.h index b44031add..e833b90c1 100644 --- a/framework/render/video/vsync/timedVSync.h +++ b/framework/render/video/vsync/timedVSync.h @@ -35,7 +35,8 @@ class timedVSync : public IVSync { float mHz{0}; std::unique_ptr mThread{}; af_clock mClock; - std::atomic_bool mBPaused{false}; + bool mBPaused{false}; + };