]> 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>
Thu, 1 Dec 2011 17:26:15 +0000 (17:26 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 1 Dec 2011 17:26:15 +0000 (17:26 +0000)
modules/ffmpeg/consumer/ffmpeg_consumer.cpp

index cee3bb83bcf21e38dbaf14252a8289cfb6fb5f2f..8a5fc7d6d3112ffbc5bc4ed1ea836807221b7523 100644 (file)
@@ -182,7 +182,7 @@ public:
 \r
                if(c->codec_id == CODEC_ID_PRORES)\r
                {                       \r
-                       c->bit_rate     = c->bit_rate > 0 ? c->bit_rate : format_desc_.width < 1280 ? 42*1000000 : 147*1000000;\r
+                       c->bit_rate     = format_desc_.width < 1280 ? 63*1000000 : 220*1000000;\r
                        c->pix_fmt      = PIX_FMT_YUV422P10;\r
                        THROW_ON_ERROR2(av_set_options_string(c->priv_data, options.c_str(), "=", ":"), "[ffmpeg_consumer]");\r
                }\r
@@ -191,16 +191,23 @@ public:
                        if(format_desc_.width < 1280 || format_desc_.height < 720)\r
                                BOOST_THROW_EXCEPTION(caspar_exception() << msg_info("unsupported dimension"));\r
 \r
-                       c->bit_rate     = c->bit_rate > 0 ? c->bit_rate : 220*1000000;\r
+                       c->bit_rate     = 220*1000000;\r
                        c->pix_fmt      = PIX_FMT_YUV422P;\r
                        \r
                        THROW_ON_ERROR2(av_set_options_string(c->priv_data, options.c_str(), "=", ":"), "[ffmpeg_consumer]");\r
                }\r
                else if(c->codec_id == CODEC_ID_DVVIDEO)\r
                {\r
-                       c->bit_rate     = c->bit_rate > 0 ? c->bit_rate : format_desc_.width < 1280 ? 50*1000000 : 100*1000000;\r
+                       c->bit_rate     = format_desc_.width < 1280 ? 50*1000000 : 100*1000000;\r
                        c->pix_fmt      = PIX_FMT_YUV422P;\r
                        \r
+                       c->width = format_desc_.height == 1280 ? 960  : c->width;\r
+\r
+                       if(format_desc_.duration == 1001)                       \r
+                               c->width = format_desc_.height == 1080 ? 1280 : c->width;                       \r
+                       else\r
+                               c->width = format_desc_.height == 1080 ? 1440 : c->width;\r
+                       \r
                        THROW_ON_ERROR2(av_set_options_string(c->priv_data, options.c_str(), "=", ":"), "[ffmpeg_consumer]");\r
                }\r
                else if(c->codec_id == CODEC_ID_H264)\r
@@ -426,14 +433,17 @@ safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const std::vector<std::wst
        boost::filesystem::remove(boost::filesystem::wpath(env::media_folder() + params[1])); // Delete the file if it exists\r
        bool key_only = std::find(params.begin(), params.end(), L"KEY_ONLY") != params.end();\r
 \r
-       std::string codec = "dnxhd";\r
+       std::string codec = "libx264";\r
        auto codec_it = std::find(params.begin(), params.end(), L"CODEC");\r
        if(codec_it != params.end() && codec_it++ != params.end())\r
                codec = narrow(*codec_it);\r
 \r
-       if(codec == "H264" || codec == "h264")\r
+       if(codec == "H264")\r
                codec = "libx264";\r
 \r
+       if(codec == "DVCPRO")\r
+               codec = "dvvideo";\r
+\r
        std::string options = "";\r
        auto options_it = std::find(params.begin(), params.end(), L"OPTIONS");\r
        if(options_it != params.end() && options_it++ != params.end())\r