\r
int64_t nb_frames_;\r
public:\r
- explicit implementation(const std::shared_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) \r
+ explicit implementation(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) \r
: format_desc_(format_desc) \r
, nb_frames_(0)\r
{ \r
}\r
};\r
\r
-audio_decoder::audio_decoder(const std::shared_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) : impl_(new implementation(context, format_desc)){}\r
+audio_decoder::audio_decoder(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) : impl_(new implementation(context, format_desc)){}\r
void audio_decoder::push(const std::shared_ptr<AVPacket>& packet){impl_->push(packet);}\r
bool audio_decoder::ready() const{return impl_->ready();}\r
std::vector<std::shared_ptr<std::vector<int16_t>>> audio_decoder::poll(){return impl_->poll();}\r
class audio_decoder : boost::noncopyable\r
{\r
public:\r
- explicit audio_decoder(const std::shared_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc);\r
+ explicit audio_decoder(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc);\r
\r
void push(const std::shared_ptr<AVPacket>& packet);\r
bool ready() const;\r
: impl_(new implementation(graph, filename, loop, start)){}\r
bool input::eof() const {return !impl_->is_running_;}\r
bool input::try_pop(std::shared_ptr<AVPacket>& packet){return impl_->try_pop(packet);}\r
-std::shared_ptr<AVFormatContext> input::context(){return impl_->format_context_;}\r
+safe_ptr<AVFormatContext> input::context(){return make_safe(impl_->format_context_);}\r
size_t input::nb_frames() const {return impl_->nb_frames();}\r
}
\ No newline at end of file
\r
size_t nb_frames() const;\r
\r
- std::shared_ptr<AVFormatContext> context();\r
+ safe_ptr<AVFormatContext> context();\r
private:\r
struct implementation;\r
std::shared_ptr<implementation> impl_;\r
double fps_;\r
int64_t nb_frames_;\r
public:\r
- explicit implementation(const std::shared_ptr<AVFormatContext>& context, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter) \r
+ explicit implementation(const safe_ptr<AVFormatContext>& context, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter) \r
: frame_factory_(frame_factory)\r
, filter_(filter)\r
, fps_(frame_factory_->get_video_format_desc().fps)\r
}\r
};\r
\r
-video_decoder::video_decoder(const std::shared_ptr<AVFormatContext>& context, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter) : impl_(new implementation(context, frame_factory, filter)){}\r
+video_decoder::video_decoder(const safe_ptr<AVFormatContext>& context, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter) : impl_(new implementation(context, frame_factory, filter)){}\r
void video_decoder::push(const std::shared_ptr<AVPacket>& packet){impl_->push(packet);}\r
std::vector<std::shared_ptr<AVFrame>> video_decoder::poll(){return impl_->poll();}\r
bool video_decoder::ready() const{return impl_->ready();}\r
class video_decoder : boost::noncopyable\r
{\r
public:\r
- explicit video_decoder(const std::shared_ptr<AVFormatContext>& context, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter);\r
+ explicit video_decoder(const safe_ptr<AVFormatContext>& context, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter);\r
\r
void push(const std::shared_ptr<AVPacket>& packet);\r
bool ready() const;\r