X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=test%2Fvideo_content_scale_test.cc;h=6f5d85a11045d4b2c17b9666f1853af33c62e528;hp=383d87ec54d083422d78c10f32d8282d8629e54c;hb=3828baf56467224f5d44049bf1e7a7ed11f43a05;hpb=1355b2068548aa14a054d7dac31cb6589ab5430f diff --git a/test/video_content_scale_test.cc b/test/video_content_scale_test.cc index 383d87ec5..6f5d85a11 100644 --- a/test/video_content_scale_test.cc +++ b/test/video_content_scale_test.cc @@ -1,30 +1,31 @@ /* Copyright (C) 2015 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ #include #include "lib/ffmpeg_content.h" #include "lib/ratio.h" +#include "lib/video_content.h" using std::list; using std::string; using std::cerr; -using std::stringstream; using boost::shared_ptr; using boost::optional; @@ -33,7 +34,7 @@ void test (dcp::Size content_size, dcp::Size display_size, dcp::Size film_size, Crop crop, Ratio const * ratio, bool scale, dcp::Size correct) { shared_ptr film; - stringstream s; + SafeStringStream s; s << "" "" "FFmpeg" @@ -49,6 +50,7 @@ test (dcp::Size content_size, dcp::Size display_size, dcp::Size film_size, Crop "23.97602462768555" "0" "1" + "12" "" << crop.left << "" "" << crop.right << "" "" << crop.top << "" @@ -88,7 +90,7 @@ test (dcp::Size content_size, dcp::Size display_size, dcp::Size film_size, Crop doc->read_string(s.str ()); list notes; - shared_ptr vc (new FFmpegContent (film, doc, 10, notes)); + shared_ptr vc (new FFmpegContent (film, doc, 10, notes)); optional sc; if (ratio) { @@ -97,15 +99,15 @@ test (dcp::Size content_size, dcp::Size display_size, dcp::Size film_size, Crop sc = VideoContentScale (scale); } - dcp::Size answer = sc.get().size (vc, display_size, film_size, 1); + dcp::Size answer = sc.get().size (vc->video, display_size, film_size); if (answer != correct) { - cerr << "Testing " << vc->video_size().width << "x" << vc->video_size().height << "\n"; + cerr << "Testing " << vc->video->size().width << "x" << vc->video->size().height << "\n"; cerr << "Testing " << display_size.width << "x" << display_size.height << "\n"; cerr << answer.width << "x" << answer.height << " instead of " << correct.width << "x" << correct.height << "\n"; } BOOST_CHECK (answer == correct); } - + /* Test scale and stretch to specified ratio */ BOOST_AUTO_TEST_CASE (video_content_scale_test_to_ratio) { @@ -132,7 +134,7 @@ BOOST_AUTO_TEST_CASE (video_content_scale_test_to_ratio) true, dcp::Size (1998, 837) ); - + // Flat in scope container test ( dcp::Size (400, 200), @@ -144,7 +146,7 @@ BOOST_AUTO_TEST_CASE (video_content_scale_test_to_ratio) dcp::Size (1587, 858) ); - + /* To player */ // Flat in flat container @@ -168,7 +170,7 @@ BOOST_AUTO_TEST_CASE (video_content_scale_test_to_ratio) true, dcp::Size (185, 78) ); - + // Flat in scope container test ( dcp::Size (400, 200), @@ -180,3 +182,18 @@ BOOST_AUTO_TEST_CASE (video_content_scale_test_to_ratio) dcp::Size (185, 100) ); } + +/* Test no scale */ +BOOST_AUTO_TEST_CASE (video_content_scale_no_scale) +{ + /* No scale where the content is bigger than even the film container */ + test ( + dcp::Size (1920, 1080), + dcp::Size (887, 371), + dcp::Size (2048, 858), + Crop (), + 0, + false, + dcp::Size (659, 371) + ); +}