CodecID acodec;\r
int croptop;\r
int cropbot;\r
- int cropleft;\r
- int cropright;\r
\r
output_format(const core::video_format_desc& format_desc, const std::string& filename, std::vector<option>& options)\r
: format(av_guess_format(nullptr, filename.c_str(), nullptr))\r
, acodec(CODEC_ID_NONE)\r
, croptop(0)\r
, cropbot(0)\r
- , cropleft(0)\r
- , cropright(0)\r
{\r
boost::range::remove_erase_if(options, [&](const option& o)\r
{\r
\r
return true;\r
}\r
- else if(name == "cropleft")\r
- {\r
- cropleft = boost::lexical_cast<int>(value);\r
-\r
- return true;\r
- }\r
- else if(name == "cropright")\r
- {\r
- cropright = boost::lexical_cast<int>(value);\r
-\r
- return true;\r
- }\r
\r
return false;\r
}\r
c->codec_id = output_format_.vcodec;\r
c->codec_type = AVMEDIA_TYPE_VIDEO;\r
c->width = output_format_.width;\r
- c->height = output_format_.height;\r
+ c->height = output_format_.height - output_format_.croptop - output_format_.cropbot;\r
c->time_base.den = format_desc_.time_scale;\r
c->time_base.num = format_desc_.duration;\r
c->gop_size = 25;\r
{\r
if(!sws_) \r
{\r
- sws_.reset(sws_getContext(format_desc_.width - output_format_.cropleft - output_format_.cropright, \r
+ sws_.reset(sws_getContext(format_desc_.width, \r
format_desc_.height - output_format_.croptop - output_format_.cropbot, \r
PIX_FMT_BGRA,\r
c->width,\r
const_cast<uint8_t*>(frame.image_data().begin()),\r
PIX_FMT_BGRA, \r
format_desc_.width,\r
- format_desc_.height);\r
+ format_desc_.height - output_format_.croptop - output_format_.cropbot);\r
\r
- for(int n = 0; n < 4; ++n)\r
- {\r
- in_frame->data[n] = in_frame->data[n] + output_format_.cropleft;\r
- in_frame->linesize[n] = in_frame->linesize[n] - output_format_.cropleft - output_format_.cropright;\r
- }\r
- \r
+ for(int n = 0; n < 4; ++n) \r
+ in_frame->data[n] += in_frame->linesize[n] * output_format_.croptop; \r
+ \r
std::shared_ptr<AVFrame> out_frame(avcodec_alloc_frame(), av_free);\r
\r
picture_buf_.resize(avpicture_get_size(c->pix_fmt, \r
sws_scale(sws_.get(), \r
in_frame->data, \r
in_frame->linesize,\r
- output_format_.croptop, \r
- format_desc_.height - output_format_.croptop - output_format_.cropbot, \r
+ 0, \r
+ format_desc_.height - output_format_.cropbot - output_format_.croptop, \r
out_frame->data, \r
out_frame->linesize);\r
\r