Skip to content

Commit

Permalink
Revert "improvement(demuxer): make GetStreamMeta thread safe"
Browse files Browse the repository at this point in the history
This reverts commit bb2b721.
  • Loading branch information
pingkai committed Aug 12, 2020
1 parent 75f8355 commit b1177d2
Show file tree
Hide file tree
Showing 11 changed files with 22 additions and 29 deletions.
2 changes: 1 addition & 1 deletion framework/demuxer/IDemuxer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ namespace Cicada {
mInterruptCb = inter;
}

int IDemuxer::GetStreamMeta(unique_ptr<streamMeta> &meta, int index, bool sub)
int IDemuxer::GetStreamMeta(unique_ptr<streamMeta> &meta, int index, bool sub) const
{
Stream_meta Meta;
int ret = GetStreamMeta(&Meta, index, sub);
Expand Down
5 changes: 3 additions & 2 deletions framework/demuxer/IDemuxer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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<streamMeta> &meta, int index, bool sub);
virtual int GetStreamMeta(unique_ptr<streamMeta> &meta, int index, bool sub) const;

virtual int OpenStream(int index) = 0;

Expand Down
10 changes: 2 additions & 8 deletions framework/demuxer/avFormatDemuxer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -435,9 +435,6 @@ namespace Cicada {
}

if (!bsfName.empty()) {
#if AF_HAVE_PTHREAD
std::unique_lock<std::mutex> uLock(mCtxMutex);
#endif
mStreamCtxMap[index]->bsf = unique_ptr<IAVBSF>(IAVBSFFactory::create(bsfName));
ret = mStreamCtxMap[index]->bsf->init(bsfName, mCtx->streams[index]->codecpar);

Expand Down Expand Up @@ -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<std::mutex> uLock(mCtxMutex);
#endif
if (index < 0 || mCtx == nullptr || index > mCtx->nb_streams) {
if (index < 0 || index > mCtx->nb_streams) {
return -EINVAL;
}

Expand Down
3 changes: 1 addition & 2 deletions framework/demuxer/avFormatDemuxer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -143,7 +143,6 @@ namespace Cicada {
std::mutex mQueLock{};
std::condition_variable mQueCond{};
atomic <int64_t> mError{0};
std::mutex mCtxMutex{};
#endif

};
Expand Down
2 changes: 1 addition & 1 deletion framework/demuxer/avFormatSubtitleDemuxer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion framework/demuxer/avFormatSubtitleDemuxer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
18 changes: 8 additions & 10 deletions framework/demuxer/play_list/HLSStream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -419,16 +419,14 @@ namespace Cicada {
std::lock_guard<std::mutex> lock(mHLSMutex);
mPDemuxer = std::unique_ptr<demuxer_service>(new demuxer_service(nullptr));
}
{
std::lock_guard<std::mutex> lock(mHLSMutex);
mPDemuxer->setOptions(this->mOpts);
unique_ptr<DemuxerMeta> demuxerMeta = unique_ptr<DemuxerMeta>(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> demuxerMeta = unique_ptr<DemuxerMeta>(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;
Expand Down
2 changes: 1 addition & 1 deletion framework/demuxer/play_list/playList_demuxer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion framework/demuxer/play_list/playList_demuxer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion framework/render/audio/filterAudioRender.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ namespace Cicada {
ret = device_write(mRenderFrame);

if (ret == -EAGAIN) {
unique_lock<mutex> lock(mFrameQueMutex);

if (mFrameQue.size() == mMaxQueSize) {
mMaxQueSize = std::max(MIN_INPUT_BUFFER_COUNT, mMaxQueSize.load() - 1);
}
Expand Down
3 changes: 2 additions & 1 deletion framework/render/video/vsync/timedVSync.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ class timedVSync : public IVSync {
float mHz{0};
std::unique_ptr<afThread> mThread{};
af_clock mClock;
std::atomic_bool mBPaused{false};
bool mBPaused{false};

};


Expand Down

0 comments on commit b1177d2

Please sign in to comment.