From 10710b9b5362cfd745fe5dba50287a61fcf7d459 Mon Sep 17 00:00:00 2001 From: max_10 Date: Thu, 20 Sep 2018 17:18:35 +0200 Subject: [PATCH] Revert "change libeplayer3 to own thread class" This reverts commit 9ed0a0d2445061cfa1c36984eedc6afbfc5532d7. --- libeplayer3/include/input.h | 6 +++-- libeplayer3/include/manager.h | 6 +++-- libeplayer3/include/output.h | 6 +++-- libeplayer3/include/player.h | 6 +++-- libeplayer3/input.cpp | 10 +++---- libeplayer3/manager.cpp | 14 +++++----- libeplayer3/output.cpp | 50 +++++++++++++++++------------------ libeplayer3/player.cpp | 4 +-- 8 files changed, 55 insertions(+), 47 deletions(-) diff --git a/libeplayer3/include/input.h b/libeplayer3/include/input.h index 2488cf9..d27e0fa 100644 --- a/libeplayer3/include/input.h +++ b/libeplayer3/include/input.h @@ -26,7 +26,9 @@ #include #include -#include +#include +#include +#include extern "C" { #include @@ -46,7 +48,7 @@ class Input friend int interrupt_cb(void *arg); private: - Mutex mutex; + OpenThreads::Mutex mutex; Track *videoTrack; Track *audioTrack; diff --git a/libeplayer3/include/manager.h b/libeplayer3/include/manager.h index 41ef416..364595b 100644 --- a/libeplayer3/include/manager.h +++ b/libeplayer3/include/manager.h @@ -26,7 +26,9 @@ #include #include -#include +#include +#include +#include extern "C" { #include @@ -64,7 +66,7 @@ class Manager private: Player *player; - Mutex mutex; + OpenThreads::Mutex mutex; std::map videoTracks, audioTracks, subtitleTracks, teletextTracks; std::map Programs; void addTrack(std::map &tracks, Track &track); diff --git a/libeplayer3/include/output.h b/libeplayer3/include/output.h index 2fec93e..b154427 100644 --- a/libeplayer3/include/output.h +++ b/libeplayer3/include/output.h @@ -26,7 +26,9 @@ #include #include -#include +#include +#include +#include extern "C" { #include @@ -48,7 +50,7 @@ class Output int videofd; int audiofd; Writer *videoWriter, *audioWriter; - Mutex audioMutex, videoMutex; + OpenThreads::Mutex audioMutex, videoMutex; Track *audioTrack, *videoTrack; Player *player; public: diff --git a/libeplayer3/include/player.h b/libeplayer3/include/player.h index 93629a6..b675adc 100644 --- a/libeplayer3/include/player.h +++ b/libeplayer3/include/player.h @@ -21,7 +21,9 @@ #ifndef __PLAYER_H__ #define __PLAYER_H__ -#include +#include +#include +#include extern "C" { #include @@ -61,7 +63,7 @@ class Player { Input input; Output output; Manager manager; - Mutex chapterMutex; + OpenThreads::Mutex chapterMutex; std::vector chapters; pthread_t playThread; diff --git a/libeplayer3/input.cpp b/libeplayer3/input.cpp index 7218a4f..46208aa 100644 --- a/libeplayer3/input.cpp +++ b/libeplayer3/input.cpp @@ -290,17 +290,17 @@ static int lock_callback(void **mutex, enum AVLockOp op) { switch (op) { case AV_LOCK_CREATE: - *mutex = (void *) new Mutex; + *mutex = (void *) new OpenThreads::Mutex; return !*mutex; case AV_LOCK_DESTROY: - delete static_cast(*mutex); + delete static_cast(*mutex); *mutex = NULL; return 0; case AV_LOCK_OBTAIN: - static_cast(*mutex)->lock(); + static_cast(*mutex)->lock(); return 0; case AV_LOCK_RELEASE: - static_cast(*mutex)->unlock(); + static_cast(*mutex)->unlock(); return 0; default: return -1; @@ -656,7 +656,7 @@ bool Input::Stop() av_log(NULL, AV_LOG_QUIET, "%s", ""); if (avfc) { - ScopedLock lock(mutex); + OpenThreads::ScopedLock lock(mutex); for (unsigned int i = 0; i < avfc->nb_streams; i++) avcodec_close(avfc->streams[i]->codec); avformat_close_input(&avfc); diff --git a/libeplayer3/manager.cpp b/libeplayer3/manager.cpp index 275205c..da39024 100644 --- a/libeplayer3/manager.cpp +++ b/libeplayer3/manager.cpp @@ -25,7 +25,7 @@ void Manager::addTrack(std::map &tracks, Track &track) { - ScopedLock m_lock(mutex); + OpenThreads::ScopedLock m_lock(mutex); std::map::iterator it = tracks.find(track.pid); if (it == tracks.end()) { Track *t = new Track; @@ -59,7 +59,7 @@ std::vector Manager::getTracks(std::map &tracks) { player->input.UpdateTracks(); std::vector res; - ScopedLock m_lock(mutex); + OpenThreads::ScopedLock m_lock(mutex); for(std::map::iterator it = tracks.begin(); it != tracks.end(); ++it) if (!it->second->inactive && !it->second->hidden) res.push_back(*it->second); @@ -88,7 +88,7 @@ std::vector Manager::getTeletextTracks() Track *Manager::getTrack(std::map &tracks, int pid) { - ScopedLock m_lock(mutex); + OpenThreads::ScopedLock m_lock(mutex); std::map::iterator it = tracks.find(pid); if (it != tracks.end() && !it->second->inactive) return it->second; @@ -116,7 +116,7 @@ Track *Manager::getTeletextTrack(int pid) bool Manager::initTrackUpdate() { - ScopedLock m_lock(mutex); + OpenThreads::ScopedLock m_lock(mutex); for (std::map::iterator it = audioTracks.begin(); it != audioTracks.end(); ++it) it->second->inactive = !it->second->is_static; @@ -140,7 +140,7 @@ void Manager::addProgram(Program &program) std::vector Manager::getPrograms(void) { - ScopedLock m_lock(mutex); + OpenThreads::ScopedLock m_lock(mutex); std::vector res; for (std::map::iterator it = Programs.begin(); it != Programs.end(); ++it) res.push_back(it->second); @@ -149,7 +149,7 @@ std::vector Manager::getPrograms(void) bool Manager::selectProgram(const int id) { - ScopedLock m_lock(mutex); + OpenThreads::ScopedLock m_lock(mutex); std::map::iterator i = Programs.find(id); if (i != Programs.end()) { @@ -236,7 +236,7 @@ bool Manager::selectProgram(const int id) void Manager::clearTracks() { - ScopedLock m_lock(mutex); + OpenThreads::ScopedLock m_lock(mutex); for (std::map::iterator it = audioTracks.begin(); it != audioTracks.end(); ++it) delete it->second; diff --git a/libeplayer3/output.cpp b/libeplayer3/output.cpp index 431dcb5..11e4eb7 100644 --- a/libeplayer3/output.cpp +++ b/libeplayer3/output.cpp @@ -68,9 +68,9 @@ Output::~Output() bool Output::Open() { - ScopedLock v_lock(videoMutex); - ScopedLock a_lock(audioMutex); - + OpenThreads::ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock a_lock(audioMutex); + if (videofd < 0) videofd = open(VIDEODEV, O_RDWR); @@ -102,8 +102,8 @@ bool Output::Close() { Stop(); - ScopedLock v_lock(videoMutex); - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock a_lock(audioMutex); if (videofd > -1) { close(videofd); @@ -124,8 +124,8 @@ bool Output::Play() { bool ret = true; - ScopedLock v_lock(videoMutex); - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock a_lock(audioMutex); AVCodecContext *avcc; @@ -154,8 +154,8 @@ bool Output::Stop() { bool ret = true; - ScopedLock v_lock(videoMutex); - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock a_lock(audioMutex); if (videofd > -1) { ioctl(videofd, VIDEO_CLEAR_BUFFER, NULL); @@ -180,8 +180,8 @@ bool Output::Pause() { bool ret = true; - ScopedLock v_lock(videoMutex); - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock a_lock(audioMutex); if (videofd > -1) { if (dioctl(videofd, VIDEO_FREEZE, NULL)) @@ -200,8 +200,8 @@ bool Output::Continue() { bool ret = true; - ScopedLock v_lock(videoMutex); - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock a_lock(audioMutex); if (videofd > -1 && dioctl(videofd, VIDEO_CONTINUE, NULL)) ret = false; @@ -214,7 +214,7 @@ bool Output::Continue() bool Output::Mute(bool b) { - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock a_lock(audioMutex); //AUDIO_SET_MUTE has no effect with new player return audiofd > -1 && !dioctl(audiofd, b ? AUDIO_STOP : AUDIO_PLAY, NULL); } @@ -224,8 +224,8 @@ bool Output::Flush() { bool ret = true; - ScopedLock v_lock(videoMutex); - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock a_lock(audioMutex); if (videofd > -1 && ioctl(videofd, VIDEO_FLUSH, NULL)) ret = false; @@ -246,31 +246,31 @@ bool Output::Flush() bool Output::FastForward(int speed) { - ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock v_lock(videoMutex); return videofd > -1 && !dioctl(videofd, VIDEO_FAST_FORWARD, speed); } bool Output::SlowMotion(int speed) { - ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock v_lock(videoMutex); return videofd > -1 && !dioctl(videofd, VIDEO_SLOWMOTION, speed); } bool Output::AVSync(bool b) { - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock a_lock(audioMutex); return audiofd > -1 && !dioctl(audiofd, AUDIO_SET_AV_SYNC, b); } bool Output::ClearAudio() { - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock a_lock(audioMutex); return audiofd > -1 && !ioctl(audiofd, AUDIO_CLEAR_BUFFER, NULL); } bool Output::ClearVideo() { - ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock v_lock(videoMutex); return videofd > -1 && !ioctl(videofd, VIDEO_CLEAR_BUFFER, NULL); } @@ -302,7 +302,7 @@ bool Output::GetFrameCount(int64_t &framecount) bool Output::SwitchAudio(Track *track) { - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock a_lock(audioMutex); if (audioTrack && track->stream == audioTrack->stream) return true; if (audiofd > -1) { @@ -329,7 +329,7 @@ bool Output::SwitchAudio(Track *track) bool Output::SwitchVideo(Track *track) { - ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock v_lock(videoMutex); if (videoTrack && track->stream == videoTrack->stream) return true; if (videofd > -1) { @@ -355,11 +355,11 @@ bool Output::Write(AVStream *stream, AVPacket *packet, int64_t pts) { switch (stream->codec->codec_type) { case AVMEDIA_TYPE_VIDEO: { - ScopedLock v_lock(videoMutex); + OpenThreads::ScopedLock v_lock(videoMutex); return videofd > -1 && videoWriter && videoWriter->Write(packet, pts); } case AVMEDIA_TYPE_AUDIO: { - ScopedLock a_lock(audioMutex); + OpenThreads::ScopedLock a_lock(audioMutex); return audiofd > -1 && audioWriter && audioWriter->Write(packet, pts); } default: diff --git a/libeplayer3/player.cpp b/libeplayer3/player.cpp index 2c0bfe5..37ad7c1 100644 --- a/libeplayer3/player.cpp +++ b/libeplayer3/player.cpp @@ -372,7 +372,7 @@ bool Player::GetChapters(std::vector &positions, std::vector & positions.clear(); titles.clear(); input.UpdateTracks(); - ScopedLock m_lock(chapterMutex); + OpenThreads::ScopedLock m_lock(chapterMutex); for (std::vector::iterator it = chapters.begin(); it != chapters.end(); ++it) { positions.push_back(it->start/1000); titles.push_back(it->title); @@ -382,7 +382,7 @@ bool Player::GetChapters(std::vector &positions, std::vector & void Player::SetChapters(std::vector &Chapters) { - ScopedLock m_lock(chapterMutex); + OpenThreads::ScopedLock m_lock(chapterMutex); chapters = Chapters; }