gstreamer/subprojects/gst-editing-services/ges/meson.build
Thibault Saunier bad6b7e60a ges: Implement a gesvideoscale bin
This allows user to be in control of when scaling happens in the pipeline.
It can be plugged as an effect and scaling will be forced to happen in
the effect instead of in the compositor.

Without this, it would not be possible for users to, for example,
crop a video source before scaling to the target source size.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5735>
2024-01-16 20:13:23 +00:00

241 lines
6.8 KiB
Meson

ges_sources = files([
'ges.c',
'ges-enums.c',
'ges-frame-composition-meta.c',
'ges-meta-container.c',
'ges-timeline.c',
'ges-layer.c',
'ges-clip.c',
'ges-pipeline.c',
'ges-source-clip.c',
'ges-source-clip-asset.c',
'ges-base-effect-clip.c',
'ges-effect-clip.c',
'ges-uri-clip.c',
'ges-uri-source.c',
'ges-operation-clip.c',
'ges-base-transition-clip.c',
'ges-transition-clip.c',
'ges-time-overlay-clip.c',
'ges-test-clip.c',
'ges-title-clip.c',
'ges-overlay-clip.c',
'ges-text-overlay-clip.c',
'ges-track.c',
'ges-audio-track.c',
'ges-video-track.c',
'ges-track-element.c',
'ges-source.c',
'ges-operation.c',
'ges-video-source.c',
'ges-audio-source.c',
'ges-video-uri-source.c',
'ges-audio-uri-source.c',
'ges-image-source.c',
'ges-multi-file-source.c',
'ges-transition.c',
'ges-audio-transition.c',
'ges-video-transition.c',
'ges-video-test-source.c',
'ges-audio-test-source.c',
'ges-title-source.c',
'ges-text-overlay.c',
'ges-base-effect.c',
'ges-effect.c',
'ges-screenshot.c',
'ges-formatter.c',
'ges-asset.c',
'ges-uri-asset.c',
'ges-clip-asset.c',
'ges-track-element-asset.c',
'ges-extractable.c',
'ges-project.c',
'ges-base-xml-formatter.c',
'ges-xml-formatter.c',
'ges-command-line-formatter.c',
'ges-auto-transition.c',
'ges-timeline-element.c',
'ges-timeline-tree.c',
'ges-container.c',
'ges-effect-asset.c',
'ges-smart-adder.c',
'ges-smart-video-mixer.c',
'ges-utils.c',
'ges-group.c',
'ges-validate.c',
'ges-structured-interface.c',
'ges-structure-parser.c',
'ges-marker-list.c',
'ges-discoverer-manager.c',
'gesvideoscale.c',
'gstframepositioner.c'
])
ges_headers = files([
'ges-types.h',
'ges.h',
'ges-prelude.h',
'ges-frame-composition-meta.h',
'ges-enums.h',
'ges-gerror.h',
'ges-meta-container.h',
'ges-timeline.h',
'ges-layer.h',
'ges-clip.h',
'ges-pipeline.h',
'ges-source-clip.h',
'ges-source-clip-asset.h',
'ges-uri-clip.h',
'ges-base-effect-clip.h',
'ges-effect-clip.h',
'ges-operation-clip.h',
'ges-base-transition-clip.h',
'ges-transition-clip.h',
'ges-test-clip.h',
'ges-time-overlay-clip.h',
'ges-title-clip.h',
'ges-overlay-clip.h',
'ges-text-overlay-clip.h',
'ges-base-effect.h',
'ges-effect.h',
'ges-track.h',
'ges-audio-track.h',
'ges-video-track.h',
'ges-track-element.h',
'ges-track-element-deprecated.h',
'ges-source.h',
'ges-operation.h',
'ges-video-source.h',
'ges-audio-source.h',
'ges-video-uri-source.h',
'ges-audio-uri-source.h',
'ges-multi-file-source.h',
'ges-transition.h',
'ges-audio-transition.h',
'ges-video-transition.h',
'ges-video-test-source.h',
'ges-audio-test-source.h',
'ges-title-source.h',
'ges-text-overlay.h',
'ges-screenshot.h',
'ges-formatter.h',
'ges-asset.h',
'ges-uri-asset.h',
'ges-clip-asset.h',
'ges-track-element-asset.h',
'ges-extractable.h',
'ges-project.h',
'ges-base-xml-formatter.h',
'ges-xml-formatter.h',
'ges-command-line-formatter.h',
'ges-timeline-element.h',
'ges-container.h',
'ges-effect-asset.h',
'ges-utils.h',
'ges-group.h',
'ges-marker-list.h',
'ges-discoverer-manager.h',
])
if libxml_dep.found()
ges_sources += files(['ges-pitivi-formatter.c'])
ges_headers += files(['ges-pitivi-formatter.h'])
endif
version_data = configuration_data()
version_data.set('GES_VERSION_MAJOR', gst_version_major)
version_data.set('GES_VERSION_MINOR', gst_version_minor)
version_data.set('GES_VERSION_MICRO', gst_version_micro)
version_data.set('GES_VERSION_NANO', gst_version_nano)
ges_headers += [configure_file(input : 'ges-version.h.in',
output : 'ges-version.h',
install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/ges'),
configuration : version_data)]
flex = find_program('flex', required : false)
if not flex.found()
flex = find_program('win_flex', required : false)
if not flex.found()
error('flex not found')
endif
endif
parser = custom_target('gesparselex',
input : 'parse.l',
output : ['lex.priv_ges_parse_yy.c', 'ges-parse-lex.h'],
command : [flex, '-Ppriv_ges_parse_yy', '--header-file=@OUTPUT1@', '-o', '@OUTPUT0@', '@INPUT@']
)
ges_resources = []
if has_python
ges_resources = gnome.compile_resources(
'ges-resources', 'ges.resource',
source_dir: '.',
c_name: 'ges'
)
endif
libges = library('ges-1.0', ges_sources, parser, ges_resources,
version : libversion,
soversion : soversion,
darwin_versions : osxversion,
c_args : [ges_c_args] + ['-DBUILDING_GES'],
include_directories : [configinc],
install : true,
dependencies : libges_deps)
pkg_name = 'gst-editing-services-1.0'
pkgconfig.generate(libges,
libraries : [gst_dep, gstbase_dep, gstpbutils_dep, gstcontroller_dep],
subdirs : pkgconfig_subdirs,
name : pkg_name,
description : 'GStreamer Editing Services',
)
library_def = {'lib': libges}
pkg_name = 'gst-editing-services-1.0'
ges_gen_sources = []
if build_gir
ges_gir_extra_args = gir_init_section + [ '--c-include=ges/ges.h' ]
if meson.is_subproject()
# FIXME: There must be a better way to do this
# Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built)
ges_gir_extra_args += ['--cflags-begin',
'-I' + meson.current_source_dir() + '/..',
'-I' + meson.current_build_dir() + '/..',
'--cflags-end']
endif
gir = {
'sources' : ges_sources + ges_headers,
'namespace' : 'GES',
'nsversion' : apiversion,
'identifier_prefix' : 'GES',
'symbol_prefix' : 'ges',
'export_packages' : pkg_name,
'includes' : ['Gst-1.0', 'GstPbutils-1.0', 'GstVideo-1.0', 'Gio-2.0', 'GObject-2.0'],
'install' : true,
'dependencies' : libges_deps,
'extra_args' : ges_gir_extra_args
}
library_def += {'gir': gir}
if not static_build
gir += {'sources': ges_sources + ges_headers + files('ges-image-source.h')}
ges_gir = gnome.generate_gir(libges, kwargs: gir)
library_def += {'gir_targets': library_def.get('gir_targets', []) + [ges_gir]}
ges_gen_sources += [ges_gir]
endif
endif
# GESImageSource is unused and is internal only so it gets stripped out when we statically
# link GES. We keep the header for backward compatibility reasons.
install_headers(ges_headers + files('ges-image-source.h'), subdir : 'gstreamer-1.0/ges')
gst_libraries += [[pkg_name, library_def]]
ges_dep = declare_dependency(link_with : libges,
include_directories : [configinc],
sources : ges_gen_sources,
dependencies : libges_deps,
)
meson.override_dependency(pkg_name, ges_dep)