diff options
| -rw-r--r-- | cscript | 9 | ||||
| -rw-r--r-- | src/mono_mpeg2_picture_asset.cc | 6 | ||||
| -rw-r--r-- | src/wscript | 13 | ||||
| -rw-r--r-- | test/wscript | 8 | ||||
| -rw-r--r-- | wscript | 10 |
5 files changed, 37 insertions, 9 deletions
@@ -34,6 +34,10 @@ import os import shutil + +option_defaults = { "mpeg2": True } + + def build_with_cpp17(target): return ( target.platform.startswith('osx') or @@ -54,7 +58,8 @@ def dependencies(target, options, for_package): if target.platform != 'linux' or target.distro != 'arch' or not for_package: # Use distro-provided FFmpeg and openjpeg on Arch (except when packaging), otherwise our own - deps.append(('ffmpeg', '693b3a8274ce407d0741d320849dc9433c748262', ffmpeg_options)) + if options['mpeg2']: + deps.append(('ffmpeg', '693b3a8274ce407d0741d320849dc9433c748262', ffmpeg_options)) deps.append(('openjpeg', 'ad8edaacd54a862940d0a77c41ecda5858b54d6e')) return deps @@ -68,6 +73,8 @@ def build(target, options, for_package, version): target.command('sudo pacman --noconfirm -U libdcp*.zst') else: cmd = './waf configure --disable-examples --disable-dumpimage --disable-benchmarks --prefix=%s' % target.directory + if not options['mpeg2']: + cmd += ' --disable-mpeg2-transcode' if target.platform == 'linux': cmd += ' --static' if target.distro != 'ubuntu' or not target.version in ('16.04', '22.04'): diff --git a/src/mono_mpeg2_picture_asset.cc b/src/mono_mpeg2_picture_asset.cc index 9a879f0b..277bed2c 100644 --- a/src/mono_mpeg2_picture_asset.cc +++ b/src/mono_mpeg2_picture_asset.cc @@ -36,7 +36,9 @@ #include "mono_mpeg2_picture_asset.h" #include "mono_mpeg2_picture_asset_reader.h" #include "mono_mpeg2_picture_asset_writer.h" +#ifdef LIBDCP_MPEG2_TRANSCODE #include "mpeg2_transcode.h" +#endif #include <asdcp/AS_DCP.h> @@ -90,6 +92,7 @@ MonoMPEG2PictureAsset::start_write(boost::filesystem::path file, Behaviour behav bool MonoMPEG2PictureAsset::can_be_read() const { +#ifdef LIBDCP_MPEG2_TRANSCODE if (!MXF::can_be_read()) { return false; } @@ -106,5 +109,8 @@ MonoMPEG2PictureAsset::can_be_read() const } return true; +#else + return false; +#endif } diff --git a/src/wscript b/src/wscript index 9b59b602..4fb4c359 100644 --- a/src/wscript +++ b/src/wscript @@ -58,7 +58,6 @@ def build(bld): exceptions.cc file.cc filesystem.cc - ffmpeg_image.cc font_asset.cc fsk.cc gamma_transfer_function.cc @@ -86,7 +85,6 @@ def build(bld): mono_mpeg2_picture_frame.cc mpeg2_picture_asset.cc mpeg2_picture_asset_writer.cc - mpeg2_transcode.cc mxf.cc name_format.cc object.cc @@ -181,7 +179,6 @@ def build(bld): identity_transfer_function.h interop_load_font_node.h interop_text_asset.h - ffmpeg_image.h j2k_picture_asset.h j2k_picture_asset_writer.h j2k_transcode.h @@ -204,7 +201,6 @@ def build(bld): mono_mpeg2_picture_asset_writer.h mono_mpeg2_picture_frame.h mpeg2_picture_asset.h - mpeg2_transcode.h mxf.h name_format.h object.h @@ -264,6 +260,15 @@ def build(bld): warnings.h """ + if not bld.env.DISABLE_MPEG2_TRANSCODE: + source += """ + ffmpeg_image.cc + mpeg2_transcode.cc + """ + headers += """ + ffmpeg_image.h + mpeg2_transcode.h + """ uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1 ASDCPLIB_DCPOMATIC XERCES AVCODEC AVUTIL FMT FAST_FLOAT HARU' diff --git a/test/wscript b/test/wscript index 3eaef516..da0b6172 100644 --- a/test/wscript +++ b/test/wscript @@ -99,8 +99,6 @@ def build(bld): make_digest_test.cc markers_test.cc mca_test.cc - mono_mpeg2_picture_read_test.cc - mono_mpeg2_picture_write_test.cc kdm_test.cc key_test.cc language_tag_test.cc @@ -130,6 +128,12 @@ def build(bld): obj.target = 'tests' obj.install_path = '' + if bld.env.LIBDCP_MPEG2_TRANSCODE: + obj.source += """ + mono_mpeg2_picture_read_test.cc + mono_mpeg2_picture_write_test.cc + """ + obj = bld(features='cxx cxxprogram') obj.name = 'subs_in_out' obj.uselib = uselib @@ -69,6 +69,7 @@ def options(opt): opt.add_option('--enable-openmp', action='store_true', default=False, help='enable use of OpenMP') opt.add_option('--openmp', default='gomp', help='specify OpenMP Library to use: omp, gomp (default), iomp') opt.add_option('--c++17', action='store_true', default=False, help='build with C++17 and libxml++-4.0') + opt.add_option('--disable-mpeg2-transcode', action='store_true', default=False, help='build without support for MPEG2 transcoding (then ffmpeg is not required)') def configure(conf): conf.load('compiler_cxx') @@ -98,6 +99,7 @@ def configure(conf): conf.env.DISABLE_BENCHMARKS = conf.options.disable_benchmarks conf.env.DISABLE_EXAMPLES = conf.options.disable_examples conf.env.DISABLE_DUMPIMAGE = conf.options.disable_dumpimage + conf.env.DISABLE_MPEG2_TRANSCODE = conf.options.disable_mpeg2_transcode conf.env.STATIC = conf.options.static conf.env.API_VERSION = API_VERSION @@ -132,6 +134,9 @@ def configure(conf): if conf.env.TARGET_LINUX: conf.check(lib='dl', uselib_store='DL', msg='Checking for library dl') + if not conf.env.DISABLE_MPEG2_TRANSCODE: + conf.env.append_value('CXXFLAGS', '-DLIBDCP_MPEG2_TRANSCODE') + conf.check_cfg(package='openssl', args='--cflags --libs', uselib_store='OPENSSL', mandatory=True) conf.check_cxx(fragment=""" #include <openssl/x509.h> @@ -280,8 +285,9 @@ def configure(conf): lib=boost_libs('date_time'), uselib_store='BOOST_DATETIME') - conf.check_cfg(package='libavcodec', args='--cflags --libs', uselib_store='AVCODEC', mandatory=True) - conf.check_cfg(package='libavutil', args='--cflags --libs', uselib_store='AVUTIL', mandatory=True) + if not conf.options.disable_mpeg2_transcode: + conf.check_cfg(package='libavcodec', args='--cflags --libs', uselib_store='AVCODEC', mandatory=True) + conf.check_cfg(package='libavutil', args='--cflags --libs', uselib_store='AVUTIL', mandatory=True) conf.check_cfg(package='fmt', args='--cflags --libs', uselib_store='FMT', mandatory=True) conf.check_cxx(header_name="fast_float/fast_float.h", uselib_store='FAST_FLOAT', mandatory=True) |
