]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Tue, 28 Feb 2012 21:02:30 +0000 (21:02 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Tue, 28 Feb 2012 21:02:30 +0000 (21:02 +0000)
modules/ffmpeg/consumer/ffmpeg_consumer.cpp

index 2b7bf23f257b3c82f02fe39ba978184cacba883b..a329863a2147cdc88284acc6a210ca2d51cf4976 100644 (file)
@@ -122,8 +122,6 @@ struct output_format
        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
@@ -133,8 +131,6 @@ struct output_format
                , 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
@@ -225,18 +221,6 @@ struct output_format
 \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
@@ -363,7 +347,7 @@ public:
                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
@@ -488,7 +472,7 @@ public:
        {\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
@@ -506,14 +490,11 @@ public:
                                           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
@@ -529,8 +510,8 @@ public:
                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