ITarget<audio_decoder::target_element_t>& target_;\r
\r
governor governor_;\r
+\r
+ tbb::atomic<bool> is_running_;\r
\r
public:\r
explicit implementation(audio_decoder::source_t& source, audio_decoder::target_t& target, AVFormatContext& context, const core::video_format_desc& format_desc) \r
\r
source.link_target(&source_);\r
\r
+ is_running_ = true;\r
+\r
start();\r
}\r
\r
~implementation()\r
{\r
+ is_running_ = false;\r
governor_.cancel();\r
agent::wait(this);\r
}\r
\r
try\r
{\r
- while(true)\r
+ while(is_running_)\r
{ \r
auto ticket = governor_.acquire();\r
auto packet = receive(source_);\r
std::wstring filter_str_;\r
\r
governor governor_;\r
+\r
+ tbb::atomic<bool> is_running_;\r
\r
implementation(frame_muxer2::video_source_t* video_source,\r
frame_muxer2::audio_source_t* audio_source,\r
, frame_factory_(frame_factory)\r
, governor_(2)\r
{ \r
+ is_running_ = true;\r
start();\r
}\r
\r
~implementation()\r
{\r
+ is_running_ = false;\r
governor_.cancel();\r
agent::wait(this);\r
}\r
\r
try\r
{\r
- while(display())\r
+ while(is_running_ && display())\r
{ \r
} \r
}\r
ITarget<video_decoder::target_element_t>& target_;\r
\r
governor governor_;\r
+\r
+ tbb::atomic<bool> is_running_;\r
\r
public:\r
explicit implementation(video_decoder::source_t& source, video_decoder::target_t& target, AVFormatContext& context) \r
\r
source.link_target(&source_);\r
\r
+ is_running_ = true;\r
+\r
start();\r
}\r
\r
~implementation()\r
{\r
+ is_running_ = false;\r
governor_.cancel();\r
agent::wait(this);\r
}\r
\r
try\r
{\r
- while(true)\r
+ while(is_running_)\r
{\r
auto ticket = governor_.acquire();\r
auto packet = receive(source_);\r