\r
// Audio\r
std::shared_ptr<AVStream> audio_st_;\r
- std::vector<uint8_t> audio_outbuf_;\r
-\r
- std::vector<int16_t> audio_input_buffer_;\r
-\r
+ \r
// Video\r
std::shared_ptr<AVStream> video_st_;\r
- std::vector<uint8_t> video_outbuf_;\r
\r
+ std::vector<uint8_t> video_outbuf_;\r
std::vector<uint8_t> picture_buf_;\r
- std::shared_ptr<SwsContext> img_convert_ctx_;\r
+ std::shared_ptr<SwsContext> sws_;\r
\r
int64_t frame_number_;\r
\r
ffmpeg_consumer(const std::string& filename, const core::video_format_desc& format_desc, const std::string& codec, const std::string& options)\r
: filename_(filename + ".mov")\r
, video_outbuf_(1920*1080*8)\r
- , audio_outbuf_(48000)\r
, oc_(avformat_alloc_context(), av_free)\r
, format_desc_(format_desc)\r
, executor_(print())\r
\r
std::shared_ptr<AVFrame> convert_video_frame(const safe_ptr<core::read_frame>& frame, AVCodecContext* c)\r
{\r
- if(!img_convert_ctx_) \r
+ if(!sws_) \r
{\r
- img_convert_ctx_.reset(sws_getContext(format_desc_.width, format_desc_.height, PIX_FMT_BGRA, c->width, c->height, c->pix_fmt, SWS_BICUBIC, nullptr, nullptr, nullptr), sws_freeContext);\r
- if (img_convert_ctx_ == nullptr) \r
+ sws_.reset(sws_getContext(format_desc_.width, format_desc_.height, PIX_FMT_BGRA, c->width, c->height, c->pix_fmt, SWS_BICUBIC, nullptr, nullptr, nullptr), sws_freeContext);\r
+ if (sws_ == nullptr) \r
BOOST_THROW_EXCEPTION(caspar_exception() << msg_info("Cannot initialize the conversion context"));\r
}\r
\r
picture_buf_.resize(avpicture_get_size(c->pix_fmt, format_desc_.width, format_desc_.height));\r
avpicture_fill(reinterpret_cast<AVPicture*>(local_av_frame.get()), picture_buf_.data(), c->pix_fmt, format_desc_.width, format_desc_.height);\r
\r
- sws_scale(img_convert_ctx_.get(), av_frame->data, av_frame->linesize, 0, c->height, local_av_frame->data, local_av_frame->linesize);\r
+ sws_scale(sws_.get(), av_frame->data, av_frame->linesize, 0, c->height, local_av_frame->data, local_av_frame->linesize);\r
\r
return local_av_frame;\r
}\r