Commit graph

229 commits

Author SHA1 Message Date
Robin Gareus
91d91eac0d
Fix export encoder race condition
The CmdPipeWriter::Terminated signal is used to trigger the FileWritten
callback, which invokes ExportGraphBuilder::Encoder::copy_files

Encoder::filenames must not be destroyed before the callback
arrives. This is now guaranteed by the Encoder d'tor waiting
for for the encode process to terminate.
2024-12-15 16:31:43 +01:00
Paul Davis
f8f6e5d2ab implement newly-required inclusion of <cassert> 2024-11-07 16:10:02 -07:00
Robin Gareus
a3d4888be3
Replace boost::format with PBD::string_compose 2024-11-06 22:55:56 +01:00
Mads Kiilerich
b4ff4f356c Make header files more self-contained - add missing Ardour and lib includes 2024-10-20 03:30:46 +02:00
Mads Kiilerich
a7eb3b7341 un-boost: Add missing #include <cmath> in audiographer silence_trimmer.h 2024-10-19 12:56:43 +02:00
Robin Gareus
74c4ca3e52
Reduce reliance on boost - the hard part
the rest from `tools/convert_boost.sh`.

* replace boost::function, boost::bind with std::function and std::bind.

This required some manual fixes, notably std::placeholders,
some static_casts<>, and boost::function::clear -> = {}.
2024-10-19 03:47:21 +02:00
Robin Gareus
ff95d81612
Reduce reliance on boost - the easy part
* boost::unordered_map -> std::unordered_map
* BOOST_STATIC_ASSERT/static_assert
* BOOST_FOREACH -> for
* boost::tuple -> std::tuple/g
* boost::math::isnormal -> std::isnormal
* boost::container::set -> std::set
* boost::none -> std::nullopt
* boost::optional -> std::optional
2024-10-19 03:41:16 +02:00
Robin Gareus
8eb9263af2
Replace boost::format with PBD::string_compose 2024-10-19 03:39:57 +02:00
Alejandro Domínguez
e326426dbc
Replace boost type traits with std version 2024-10-19 01:04:14 +02:00
Robin Gareus
2d7cce44f1
Replace PBD::Signals (1/2) 2024-10-18 20:41:08 +02:00
Paul Davis
75f56cd3e1 the great onceification (libs)
Replace use of #ifndef header guards with #pragma once

Modern C++, baby!
2024-10-17 07:44:31 -06:00
Robin Gareus
88a24ae8e5
Let PBD::Thread set thread-name 2024-09-28 03:16:07 +02:00
Robin Gareus
538a8cbccc
Consolidate calls to `pthread_create' (2/2) 2024-09-28 03:16:02 +02:00
Robin Gareus
d3f536a7ff
Remove unused variable 2024-09-24 16:10:59 +02:00
Alejandro Domínguez
c0062fff86
Remove #include <boost/shared_ptr.hpp> 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
635446fd3b
Remove #include <boost/static_assert.hpp> 2024-08-29 23:08:41 +02:00
Mads Kiilerich
6b61b03434 wscript: drop traces of shutdown() handling
autowaf has no real shutdown functionality anyway. The automatic
shutdown function that could have been called wouldn't work anyway, as
it takes an argument.

The only reason it doesn't fail is that the top level wscript has no
shutdown handling and doesn't recurse to other scripts, so it is all
dead code.
2023-10-15 10:47:16 -06:00
Mads Kiilerich
88cecdfaef wscript: drop repeated autowaf.set_options - it is enough to set at top level 2023-10-15 10:47:16 -06:00
Mads Kiilerich
d220f477ed wscript: drop unused "mandatory variables" 'top' and 'out' in libs
Variables by these names are only used from the local wscript and when
running "waf configure", which already for other reasons only can run at
the top-level.

These variables are thus not mandatory and not used.
2023-09-17 07:34:55 -06:00
Mads Kiilerich
a0916ef368 wscript: drop unused APPNAME assignment in libs
https://waf.io/book/ says
  By default, the project name and version are set to noname and 1.0. To
  change them, it is necessary to provide two additional variables in
  the top-level project file

- and waf code inspection confirms that waf itself only will use the top
level APPNAME.

Also, the 'waf dist' comment doesn't seem relevant - especially after
this change - and is removed too.

(Note: libs/evoral/wscript and libs/temporal/wscript still use APPNAME
for other purposes.)
2023-09-17 07:34:55 -06:00
Mads Kiilerich
3b4cf9191c wscript: drop unused VERSION assignment in libs
https://waf.io/book/ says
  By default, the project name and version are set to noname and 1.0. To
  change them, it is necessary to provide two additional variables in the
  top-level project file

- and waf code inspection confirms that waf itself only will use the top
  level VERSION.

Some wscripts will use
  bld.env['VERSION']
but that will also just use the value set in the top wscript.
2023-09-17 07:34:55 -06:00
Mads Kiilerich
7737c17d52 wscript: drop unused imports, scripted
Done with ad hoc scripting hacks processing unused imports found by pyflakes:

for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Logs.* but unused' | cut -d: -f1 | while read f; do sed -i 's/^import waflib.Logs as Logs,/import/g' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Options.* but unused' | cut -d: -f1 | while read f; do sed -i 's/import waflib.Options as Options, /import /g' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Options.* but unused' | cut -d: -f1 | while read f; do sed -i 's/^from waflib import Options,/from waflib import/g' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep ' imported but unused$' | sed "s/^\([^:]*\):[0-9]*:[0-9]* '\(.*\)'.*/\1 \2/g" | while read f lib; do sed -i "/^import $lib$/d" $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Options.* but unused' | cut -d: -f1 | while read f; do sed -i '/from waflib import Options$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.TaskGen.* but unused' | cut -d: -f1 | while read f; do sed -i '/from waflib import TaskGen$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Task.Task.* but unused' | cut -d: -f1 | while read f; do sed -i '/^from waflib.Task import Task$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Tools.winres.* but unused' | cut -d: -f1 | while read f; do sed -i '/^from waflib.Tools import winres$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Utils.* but unused' | cut -d: -f1 | while read f; do sed -i '/^import waflib.Utils as Utils$/d' $f; done
2023-09-17 07:34:55 -06:00
Robin Gareus
f1f352a6e9
Fix shaped dither (#9342) 2023-05-22 04:50:19 +02:00
Robin Gareus
e9dc1335f9
NO-OP: clang-format 2023-05-22 04:50:13 +02:00
Paul Davis
4ba4cd69ff switch from glib atomic to std::atomic (libs edition) 2023-03-24 14:19:15 -06:00
Paul Davis
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Paul Davis
39ed528e25 std-ize: convert all boost shared/weak ptr includes to <memory>
Also fix stdint.h -> cstdint and alphabetically order std includes
2023-03-24 14:19:15 -06:00
John Emmas
f8557cc00f Export AudioGraphper::Source and AudioGrapher::ListedSource
after an MSVC update this morning, these classes need to be exportable now - I'm not quite sure why :-(
2023-03-15 13:39:56 +00:00
Robin Gareus
b8d07b8be2
Export CmdPipeWriter: add option to use tmpfile
Investigate issues with mp3 export (#9193)
2023-01-16 05:10:32 +01:00
Robin Gareus
27e136dcfc
Cont'd tweaks of ffmpeg export pipe 2023-01-05 03:32:40 +01:00
Robin Gareus
bb4394b8a5
Use pipe through ffmpeg, use glib to write output
This is intended to fix an issue with odd filenames on Windows,
particularly forward and backwards single quotes as part of a filename.

Previously the filename was passed as parameter to ffmpeg as
UTF-8 string to SystemExec::make_wargs, which is fragile on Windows
in absence of a execve() call.
2023-01-04 17:26:43 +01:00
Gon Solo
1cf6886775
std::iterator is deprecated in C++17, use bidirectional_iterator_tag 2022-11-22 19:49:41 +01:00
Mads Kiilerich
d2fa78ba95 Fix "Could create output file" error message
In the log output, the error would look like:
  [ERROR]: Export initialization failed: Exception thrown by AudioGrapher::SndfileWriter<short>: Could create output file (.../export/something.wav)

Add the missing negation.

But it would perhaps be better phrase the message differently so it not
just hints so strongly towards a file system error preventing file
creation.

Perhaps something like "Failed to initialize sound export to %s"?
2022-11-04 03:52:45 +01:00
luz paz
7f06beda50 Fix typos
Found via `codespell -q 3 -S *.po,./.git,./share/patchfiles,./libs,./msvc_extra_headers,./share/web_surfaces,*.patch  -L acount,ba,buss,busses,discreet,doubleclick,hsi,ontop,retrn,ro,scrollin,seh,siz,sord,sur,te,trough,ue`
2022-09-21 19:09:55 -06:00
Paul Davis
b51c4b7ef9 fix signed/unsigned warning 2022-06-21 17:33:37 -06:00
Mads Kiilerich
49855e52aa wscript: consistently have at most one empty separator line 2022-04-09 12:16:40 +02:00
Matthijs van Otterdijk
69bf9d36aa Use integer arithmetic to calculate number of samples per bin 2022-04-08 12:47:44 +02:00
Robin Gareus
2c9c80ae62
Amend f322c4ded7, clean up includes, fix visibility 2022-01-28 02:29:11 +01:00
Robin Gareus
f322c4ded7
Separate sndfile.hh implementation into C++ source
This is required to be able to include
"audiographer/sndfile/sndfile_writer.h" in more than
one source file. which would otherwise lead to
duplicate symbol: AudioGrapher::SndfileHandle::..
2022-01-28 01:52:07 +01:00
Mads Kiilerich
8bb91099c5 wscript: drop configure statements already present in the top level wscript
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!)                   : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler)                      : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
Robin Gareus
7f3681c7ac
Scale export-analysis dataset 2021-12-24 21:59:03 +01:00
Robin Gareus
122d219354
Prepare scaleable analysis (variable width, bins) 2021-12-24 19:54:00 +01:00
Mathias Buhr
c5abb7ecda Fix Upsampler new/delete mismatch 2021-06-12 21:16:18 +02:00
Robin Gareus
a8c47da364
Fix realtime export loudness normalization
TmpFileRt::get_samples_written() returns the number of
samples written *to disk*. It is only valid after the FileFlushed
signal is emitted.

This fixes an assert() with Limiter and Analyzer being configured
with a too low total sample-count, leading to an overflow in
the analysis graph array.
2021-04-29 19:05:09 +02:00
Robin Gareus
6da997ef30
Revert "use -90dB as default threshold for silence trim during export, rather than -inf dB"
This reverts commit fe8418ffea,
which had no effect, since the default c'tor argument is not used.
2021-04-24 16:42:17 +02:00
Paul Davis
fe8418ffea use -90dB as default threshold for silence trim during export, rather than -inf dB 2021-04-23 11:03:17 -06:00
John Emmas
8437d0a54a Add/remove source(s) in our MSVC project (audiographer) 2021-04-17 11:21:33 +01:00
David Robillard
69e5fd1c99 Fix audiographer normalizer test
Build broken in 75829d20f2.
2021-04-13 14:59:05 -04:00
Robin Gareus
883f818626
Fix C++11ism 2021-04-13 05:35:29 +02:00
Robin Gareus
c4f0393cf9
Keep track of export-limiter redux 2021-04-12 23:15:30 +02:00