From 65a0e2656f79d0742e2e3077d00ef8d23e501942 Mon Sep 17 00:00:00 2001 From: ronag Date: Tue, 26 Apr 2011 07:11:23 +0000 Subject: [PATCH] 2.0.0.2: Another ffmpeg loop fix. git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@646 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- modules/ffmpeg/producer/ffmpeg_producer.cpp | 2 +- modules/ffmpeg/producer/input.cpp | 4 ++++ modules/ffmpeg/producer/input.h | 1 + shell/caspar.config | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/ffmpeg/producer/ffmpeg_producer.cpp b/modules/ffmpeg/producer/ffmpeg_producer.cpp index c0fac8964..5581a066c 100644 --- a/modules/ffmpeg/producer/ffmpeg_producer.cpp +++ b/modules/ffmpeg/producer/ffmpeg_producer.cpp @@ -153,7 +153,7 @@ public: auto result = last_frame_; if(!ouput_channel_.empty()) result = get_frame(); // TODO: Support 50p - else if(input_->is_eof()) + else if(!input_->is_running()) result = core::basic_frame::eof(); else graph_->add_tag("lag"); diff --git a/modules/ffmpeg/producer/input.cpp b/modules/ffmpeg/producer/input.cpp index a2a0a50cc..bd10d5843 100644 --- a/modules/ffmpeg/producer/input.cpp +++ b/modules/ffmpeg/producer/input.cpp @@ -159,7 +159,10 @@ public: audio_packet_buffer_.try_push(std::move(packet)); } else if(!loop_ || av_seek_frame(format_context_.get(), -1, 0, AVSEEK_FLAG_BACKWARD) < 0) // TODO: av_seek_frame does not work for all formats + { executor_.stop(); + CASPAR_LOG(info) << print() << " eof"; + } else graph_->add_tag("seek"); @@ -208,6 +211,7 @@ input::input(const safe_ptr& graph, const std::wstring& file const std::shared_ptr& input::get_video_codec_context() const{return impl_->video_codec_context_;} const std::shared_ptr& input::get_audio_codec_context() const{return impl_->audio_codex_context_;} bool input::is_eof() const{return impl_->is_eof();} +bool input::is_running() const {return impl_->executor_.is_running();} aligned_buffer input::get_video_packet(){return impl_->get_video_packet();} aligned_buffer input::get_audio_packet(){return impl_->get_audio_packet();} double input::fps() const { return impl_->fps(); } diff --git a/modules/ffmpeg/producer/input.h b/modules/ffmpeg/producer/input.h index 11c318ce7..29f1e1863 100644 --- a/modules/ffmpeg/producer/input.h +++ b/modules/ffmpeg/producer/input.h @@ -24,6 +24,7 @@ public: aligned_buffer get_audio_packet(); bool is_eof() const; + bool is_running() const; double fps() const; private: struct implementation; diff --git a/shell/caspar.config b/shell/caspar.config index b1b63dce5..351bd8e31 100644 --- a/shell/caspar.config +++ b/shell/caspar.config @@ -12,7 +12,7 @@ - 1080i5000 + PAL