]> git.sesse.net Git - casparcg/commitdiff
* Fixed compilation problems in Linux.
authorHelge Norberg <helge.norberg@svt.se>
Fri, 9 Oct 2015 13:34:41 +0000 (15:34 +0200)
committerHelge Norberg <helge.norberg@svt.se>
Fri, 9 Oct 2015 13:34:41 +0000 (15:34 +0200)
* Fixed failing unit-test in Linux.

dependencies64/gtest/lib/linux/libgtest.a [new file with mode: 0644]
modules/ffmpeg/producer/ffmpeg_producer.cpp
shell/generate_docs.cpp
unit-test/CMakeLists.txt
unit-test/base64_test.cpp
unit-test/image_mixer_test.cpp
unit-test/main.cpp

diff --git a/dependencies64/gtest/lib/linux/libgtest.a b/dependencies64/gtest/lib/linux/libgtest.a
new file mode 100644 (file)
index 0000000..1988f8d
Binary files /dev/null and b/dependencies64/gtest/lib/linux/libgtest.a differ
index 1c95022e6d78fe0482b4d5530331fa6631b5bce4..89b213cdddf70a417b37ee368b2074d553c8d086 100644 (file)
@@ -430,7 +430,7 @@ void describe_producer(core::help_sink& sink, const core::help_repository& repo)
        sink.example(L">> PLAY 1-10 folder/clip LOOP START 10 LENGTH 50", L"to loop a clip between frame 10 and frame 60.");
        sink.example(L">> PLAY 1-10 folder/clip START 10 LENGTH 50", L"to play frames 10-60 in a clip and stop.");
        sink.example(L">> PLAY 1-10 folder/clip FILTER yadif=1,-1", L"to deinterlace the video.");
-       sink.example(L">> PLAY 1-10 folder/clip CHANNEL_LAYOUT dolbydigital", L"given the defaults in casparcg.config this will specifies that the clip has 6 audio channels of the type 5.1 and that they are in the order FL FC FR BL BR LFE regardless of what ffmpeg says.");
+       sink.example(L">> PLAY 1-10 folder/clip CHANNEL_LAYOUT film", L"given the defaults in casparcg.config this will specifies that the clip has 6 audio channels of the type 5.1 and that they are in the order FL FC FR BL BR LFE regardless of what ffmpeg says.");
        sink.example(L">> PLAY 1-10 folder/clip CHANNEL_LAYOUT \"5.1:LFE FL FC FR BL BR\"", L"specifies that the clip has 6 audio channels of the type 5.1 and that they are in the specified order regardless of what ffmpeg says.");
        sink.para()->text(L"The FFmpeg producer also supports changing some of the settings via CALL:");
        sink.example(L">> CALL 1-10 LOOP 1");
index da6ff11adaa924bbefeb1dd850ece76e0cd42931..ea033dfd69d8b47cbd7e51b0e3c3c2f6bb6ed391 100644 (file)
@@ -195,6 +195,11 @@ void generate_consumers_help(const core::help_repository& help_repo)
 
 int main(int argc, char** argv)
 {
+       if (intercept_command_line_args(argc, argv))
+       {
+               return 0;
+       }
+
        env::configure(L"casparcg.config");
        spl::shared_ptr<core::system_info_provider_repository> system_info_provider_repo;
        spl::shared_ptr<core::cg_producer_registry> cg_registry;
index b5d7558932e69874a37149f47653830f8855c0dc..dc8850455e43bef7f15784583e74871c68265cdb 100644 (file)
@@ -22,10 +22,18 @@ target_link_libraries(unit-test
                common
                core
                ffmpeg
+)
 
+if (MSVC)
+       target_link_libraries(unit-test
                optimized gtest.lib
                debug gtestd.lib
-)
+       )
+else ()
+       target_link_libraries(unit-test
+               gtest
+       )
+endif ()
 
 include_directories(..)
 include_directories(${BOOST_INCLUDE_PATH})
index 87691d340c72e47320c9e60e6a81b3dbf57a2cd1..90882c31cb6fc73b9a4c1d23b36ba5c6531ab6dc 100644 (file)
@@ -24,7 +24,7 @@
 #include <gtest/gtest.h>
 
 #include <set>
-#include <locale>
+#include <cctype>
 
 #include <boost/assign.hpp>
 
 #include <common/except.h>
 
 namespace {
-       static const char DICTIONARY[] =
-       {
-               'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
-               'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
-               '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-               '/', '+'
-       };
-
        const std::set<char>& get_dictionary()
        {
-               static const std::set<char> dictionary(
-                               DICTIONARY, DICTIONARY + sizeof(DICTIONARY));
+               static const std::set<char> dictionary{
+                       'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+                       'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+                       '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+                       '/', '+'
+               };
 
                return dictionary;
        }
@@ -68,7 +64,7 @@ TEST(Base64Test, InvalidInputCharacters)
        for (int i = 1; i < 256; ++i)
        {
                if (get_dictionary().find(static_cast<char>(i)) == get_dictionary().end()
-                               && !std::isspace(i, std::locale())
+                               && !std::isspace(i)
                                && i != '=')
                {
                        auto invalid = PREFIX + static_cast<char>(i);
index f4049634408d1f1db6909c0fd31729ce0dbfdd22..2b02e31c28a48202edf778fb4837ba06e46457f6 100644 (file)
 #include <accelerator/ogl/image/image_mixer.h>
 #include <accelerator/ogl/util/device.h>
 
+#ifdef _MSC_VER
 #include <accelerator/cpu/image/image_mixer.h>
+#endif
 
 #include <boost/assign.hpp>
 
+#include <cstdint>
+
 namespace caspar { namespace core {
 
 spl::shared_ptr<accelerator::ogl::device> ogl_device()
@@ -67,11 +71,13 @@ spl::shared_ptr<core::image_mixer> create_mixer<dummy_ogl_with_blend_modes>()
                        false); // straight alpha not wanted
 }
 
+#ifdef _MSC_VER
 template <>
 spl::shared_ptr<core::image_mixer> create_mixer<accelerator::cpu::image_mixer>()
 {
        return spl::make_shared<accelerator::cpu::image_mixer>();
 }
+#endif
 
 void assert_pixel_eq(uint8_t r, uint8_t g, uint8_t b, uint8_t a, const uint8_t* pos, int tolerance = 1)
 {
@@ -157,10 +163,17 @@ class MixerTestOglWithBlendModes : public MixerTest<T> // Only use-cases support
 {
 };
 
+#ifdef _MSC_VER
 typedef testing::Types<
                accelerator::ogl::image_mixer,
                accelerator::cpu::image_mixer,
                dummy_ogl_with_blend_modes> all_mixer_implementations;
+#else
+typedef testing::Types<
+               accelerator::ogl::image_mixer,
+               dummy_ogl_with_blend_modes> all_mixer_implementations;
+#endif
+
 typedef testing::Types<
                accelerator::ogl::image_mixer,
                dummy_ogl_with_blend_modes> gpu_mixer_implementations;
@@ -174,30 +187,30 @@ TYPED_TEST_CASE(MixerTestOglWithBlendModes, testing::Types<dummy_ogl_with_blend_
 
 TYPED_TEST(MixerTestEveryImpl, PassthroughSingleLayer)
 {
-       core::draw_frame frame(create_single_color_frame(255, 255, 255, 255, 16, 16));
-       add_layer(frame);
-       assert_all_pixels_eq(255, 255, 255, 255, get_result(16, 16));
+       core::draw_frame frame(this->create_single_color_frame(255, 255, 255, 255, 16, 16));
+       this->add_layer(frame);
+       assert_all_pixels_eq(255, 255, 255, 255, this->get_result(16, 16));
 }
 
 TYPED_TEST(MixerTestEveryImpl, OpaqueTopLayer)
 {
-       core::draw_frame red_under(create_single_color_frame(255, 0, 0, 255, 16, 16));
-       core::draw_frame green_over(create_single_color_frame(0, 255, 0, 255, 16, 16));
-       add_layer(red_under);
-       add_layer(green_over);
-       assert_all_pixels_eq(0, 255, 0, 255, get_result(16, 16));
+       core::draw_frame red_under(this->create_single_color_frame(255, 0, 0, 255, 16, 16));
+       core::draw_frame green_over(this->create_single_color_frame(0, 255, 0, 255, 16, 16));
+       this->add_layer(red_under);
+       this->add_layer(green_over);
+       assert_all_pixels_eq(0, 255, 0, 255, this->get_result(16, 16));
 }
 
 TYPED_TEST(MixerTestEveryImpl, HalfAlpha)
 {
-       core::draw_frame red_under(create_single_color_frame(255, 0, 0, 255, 16, 16));
-       core::draw_frame half_green_over(create_single_color_frame(0, 127, 0, 127, 16, 16));
-       add_layer(red_under);
-       add_layer(half_green_over);
-       assert_all_pixels_eq(127, 127, 0, 255, get_result(16, 16));
-
-       add_layer(half_green_over);
-       assert_all_pixels_eq(0, 127, 0, 127, get_result(16, 16));
+       core::draw_frame red_under(this->create_single_color_frame(255, 0, 0, 255, 16, 16));
+       core::draw_frame half_green_over(this->create_single_color_frame(0, 127, 0, 127, 16, 16));
+       this->add_layer(red_under);
+       this->add_layer(half_green_over);
+       assert_all_pixels_eq(127, 127, 0, 255, this->get_result(16, 16));
+
+       this->add_layer(half_green_over);
+       assert_all_pixels_eq(0, 127, 0, 127, this->get_result(16, 16));
 }
 
 // Tests for use cases that currently *only* works on GPU mixer
@@ -205,31 +218,31 @@ TYPED_TEST(MixerTestEveryImpl, HalfAlpha)
 
 TYPED_TEST(MixerTestOgl, HalfBrightness)
 {
-       core::draw_frame frame(create_single_color_frame(255, 255, 255, 255, 1, 1));
+       core::draw_frame frame(this->create_single_color_frame(255, 255, 255, 255, 1, 1));
        frame.transform().image_transform.brightness = 0.5;
-       add_layer(frame);
-       assert_all_pixels_eq(127, 127, 127, 255, get_result(1, 1));
+       this->add_layer(frame);
+       assert_all_pixels_eq(127, 127, 127, 255, this->get_result(1, 1));
 }
 
 TYPED_TEST(MixerTestOgl, HalfOpacity)
 {
-       core::draw_frame red_under(create_single_color_frame(255, 0, 0, 255, 1, 1));
-       core::draw_frame green_over(create_single_color_frame(0, 255, 0, 255, 1, 1));
+       core::draw_frame red_under(this->create_single_color_frame(255, 0, 0, 255, 1, 1));
+       core::draw_frame green_over(this->create_single_color_frame(0, 255, 0, 255, 1, 1));
        green_over.transform().image_transform.opacity = 0.5;
-       add_layer(red_under);
-       add_layer(green_over);
-       assert_all_pixels_eq(127, 127, 0, 255, get_result(1, 1));
+       this->add_layer(red_under);
+       this->add_layer(green_over);
+       assert_all_pixels_eq(127, 127, 0, 255, this->get_result(1, 1));
 
-       add_layer(green_over);
-       assert_all_pixels_eq(0, 127, 0, 127, get_result(1, 1));
+       this->add_layer(green_over);
+       assert_all_pixels_eq(0, 127, 0, 127, this->get_result(1, 1));
 }
 
 TYPED_TEST(MixerTestOgl, MakeGrayscaleWithSaturation)
 {
-       core::draw_frame frame(create_single_color_frame(255, 0, 0, 255, 1, 1));
+       core::draw_frame frame(this->create_single_color_frame(255, 0, 0, 255, 1, 1));
        frame.transform().image_transform.saturation = 0.0;
-       add_layer(frame);
-       auto result = get_result(1, 1);
+       this->add_layer(frame);
+       auto result = this->get_result(1, 1);
        
        ASSERT_EQ(result.data()[0], result.data()[1]);
        ASSERT_EQ(result.data()[1], result.data()[2]);
@@ -237,13 +250,13 @@ TYPED_TEST(MixerTestOgl, MakeGrayscaleWithSaturation)
 
 TYPED_TEST(MixerTestOgl, TransformFillScale)
 {
-       core::draw_frame frame(create_single_color_frame(255, 255, 255, 255, 1, 1));
+       core::draw_frame frame(this->create_single_color_frame(255, 255, 255, 255, 1, 1));
        frame.transform().image_transform.fill_translation[0] = 0.5;
        frame.transform().image_transform.fill_translation[1] = 0.5;
        frame.transform().image_transform.fill_scale[0] = 0.5;
        frame.transform().image_transform.fill_scale[1] = 0.5;
-       add_layer(frame);
-       auto res = get_result(2, 2);
+       this->add_layer(frame);
+       auto res = this->get_result(2, 2);
        std::vector<std::uint8_t> result(res.begin(), res.end());
 
        // bottom right corner
@@ -252,8 +265,8 @@ TYPED_TEST(MixerTestOgl, TransformFillScale)
                        (0)(0)(0)(0) (255)(255)(255)(255), result);
 
        frame.transform().image_transform.fill_translation[0] = 0;
-       add_layer(frame);
-       res = get_result(2, 2);
+       this->add_layer(frame);
+       res = this->get_result(2, 2);
        result = std::vector<std::uint8_t>(res.begin(), res.end());
 
        // bottom left corner
@@ -264,16 +277,16 @@ TYPED_TEST(MixerTestOgl, TransformFillScale)
 
 TYPED_TEST(MixerTestOgl, LevelsBugGammaMinLevelsMismatch)
 {
-       auto src_frame = create_frame(2, 1);
+       auto src_frame = this->create_frame(2, 1);
        set_pixel(src_frame, 0, 0, 16, 16, 16, 255);
        set_pixel(src_frame, 1, 0, 235, 235, 235, 255);
 
        core::draw_frame frame(std::move(src_frame));
        frame.transform().image_transform.levels.min_input = 16.0 / 255.0;
        frame.transform().image_transform.levels.max_input = 235.0 / 255.0;
-       add_layer(frame);
+       this->add_layer(frame);
 
-       auto result = get_result(2, 1);
+       auto result = this->get_result(2, 1);
        assert_pixel_eq(0, 0, 0, 255, result.data(), 0);
        assert_pixel_eq(255, 255, 255, 255, result.data() + 4, 0);
 }
index 03f8cde57a9e0ffffc1d1f700628838b67dc8551..e505bad784472cf40d3f29b032d423d666545732 100644 (file)
 
 #include <modules/ffmpeg/ffmpeg.h>
 
+#include <boost/locale.hpp>
+
 int main(int argc, char** argv)
 {
        using namespace caspar;
 
+       boost::locale::generator gen;
+       gen.categories(boost::locale::codepage_facet);
+       std::locale::global(gen(""));
+
        spl::shared_ptr<core::system_info_provider_repository> system_info_provider_repo;
        spl::shared_ptr<core::cg_producer_registry> cg_registry;
        auto media_info_repo = core::create_in_memory_media_info_repository();