NO-OP: clang-format

This commit is contained in:
Robin Gareus 2021-06-21 02:51:14 +02:00
parent 0f7229fb02
commit cc69274234
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
2 changed files with 56 additions and 52 deletions

View file

@ -29,23 +29,25 @@
namespace ARDOUR { namespace ARDOUR {
class LIBARDOUR_API FFMPEGFileImportableSource : public ImportableSource { class LIBARDOUR_API FFMPEGFileImportableSource : public ImportableSource
{
public: public:
enum { enum {
ALL_CHANNELS = -1, ALL_CHANNELS = -1,
}; };
FFMPEGFileImportableSource(const std::string &path, int channel = ALL_CHANNELS);
virtual ~FFMPEGFileImportableSource(); FFMPEGFileImportableSource (const std::string& path, int channel = ALL_CHANNELS);
virtual ~FFMPEGFileImportableSource ();
/* ImportableSource API */ /* ImportableSource API */
samplecnt_t read (Sample*, samplecnt_t nframes);
uint32_t channels () const { return _channels; } uint32_t channels () const { return _channels; }
samplecnt_t length () const { return _length; } samplecnt_t length () const { return _length; }
samplecnt_t samplerate () const { return _samplerate; } samplecnt_t samplerate () const { return _samplerate; }
samplepos_t natural_position () const { return _natural_position; }
void seek (samplepos_t pos); void seek (samplepos_t pos);
samplecnt_t read (Sample*, samplecnt_t nframes); samplepos_t natural_position () const { return _natural_position; }
bool clamped_at_unity () const { return false; }
bool clamped_at_unity () const { return false; }
std::string format_name () const { return _format_name; } std::string format_name () const { return _format_name; }
@ -56,29 +58,30 @@ private:
void did_read_data (std::string data, size_t size); void did_read_data (std::string data, size_t size);
std::string _path; std::string _path;
int _channel; int _channel;
uint32_t _channels; uint32_t _channels;
samplecnt_t _length; samplecnt_t _length;
samplecnt_t _samplerate; samplecnt_t _samplerate;
samplepos_t _natural_position; samplepos_t _natural_position;
std::string _format_name; std::string _format_name;
PBD::RingBuffer<Sample> _buffer; PBD::RingBuffer<Sample> _buffer;
// Set to 1 to indicate that ffmpeg should be terminating. /* Set to 1 to indicate that ffmpeg should be terminating. */
GATOMIC_QUAL gint _ffmpeg_should_terminate; GATOMIC_QUAL gint _ffmpeg_should_terminate;
// To make sure we don't try to parse partial floats, we might have a couple of bytes /* To make sure we don't try to parse partial floats, we might have a couple of bytes
// of leftover unparsable data after any `did_read_data` call. Those couple of bytes are * of leftover unparsable data after any `did_read_data` call. Those couple of bytes are
// stored here until the next `did_read_data` call. * stored here until the next `did_read_data` call.
*/
std::string _leftover_data; std::string _leftover_data;
samplecnt_t _read_pos; samplecnt_t _read_pos;
ARDOUR::SystemExec *_ffmpeg_exec; ARDOUR::SystemExec* _ffmpeg_exec;
PBD::ScopedConnection _ffmpeg_conn; PBD::ScopedConnection _ffmpeg_conn;
}; };
} } // namespace ARDOUR
#endif /* _ardour_ffmpegfile_importable_source_h_ */ #endif /* _ardour_ffmpegfile_importable_source_h_ */

View file

@ -19,21 +19,22 @@
#include <boost/property_tree/json_parser.hpp> #include <boost/property_tree/json_parser.hpp>
#include <glibmm.h> #include <glibmm.h>
#include "pbd/error.h"
#include "pbd/compose.h" #include "pbd/compose.h"
#include "pbd/error.h"
#include "pbd/i18n.h" #include "pbd/i18n.h"
#include "ardour/ffmpegfileimportable.h" #include "ardour/ffmpegfileimportable.h"
#include "ardour/filesystem_paths.h" #include "ardour/filesystem_paths.h"
namespace ARDOUR { using namespace ARDOUR;
static void static void
receive_stdout (std::string* out, const std::string& data, size_t size) { receive_stdout (std::string* out, const std::string& data, size_t size)
{
*out += data; *out += data;
} }
FFMPEGFileImportableSource::FFMPEGFileImportableSource(const std::string &path, int channel) FFMPEGFileImportableSource::FFMPEGFileImportableSource (const std::string& path, int channel)
: _path (path) : _path (path)
, _channel (channel) , _channel (channel)
, _buffer (32768) , _buffer (32768)
@ -44,11 +45,12 @@ FFMPEGFileImportableSource::FFMPEGFileImportableSource(const std::string &path,
std::string ffprobe_exe, unused; std::string ffprobe_exe, unused;
if (!ArdourVideoToolPaths::transcoder_exe (unused, ffprobe_exe)) { if (!ArdourVideoToolPaths::transcoder_exe (unused, ffprobe_exe)) {
PBD::error << "FFMPEGFileImportableSource: Can't find ffprobe and ffmpeg" << endmsg; PBD::error << "FFMPEGFileImportableSource: Can't find ffprobe and ffmpeg" << endmsg;
throw failed_constructor(); throw failed_constructor ();
} }
int a = 0; int a = 0;
char **argp = (char **)calloc(10, sizeof(char *)); char** argp = (char**)calloc (10, sizeof (char*));
argp[a++] = strdup (ffprobe_exe.c_str ()); argp[a++] = strdup (ffprobe_exe.c_str ());
argp[a++] = strdup (_path.c_str ()); argp[a++] = strdup (_path.c_str ());
argp[a++] = strdup ("-show_streams"); argp[a++] = strdup ("-show_streams");
@ -61,55 +63,56 @@ FFMPEGFileImportableSource::FFMPEGFileImportableSource(const std::string &path,
if (exec->start ()) { if (exec->start ()) {
PBD::error << "FFMPEGFileImportableSource: External decoder (ffprobe) cannot be started." << endmsg; PBD::error << "FFMPEGFileImportableSource: External decoder (ffprobe) cannot be started." << endmsg;
delete exec; delete exec;
throw failed_constructor(); throw failed_constructor ();
} }
try { try {
PBD::ScopedConnection c; PBD::ScopedConnection c;
std::string ffprobe_output; std::string ffprobe_output;
exec->ReadStdout.connect_same_thread (c, boost::bind (&receive_stdout, &ffprobe_output, _1, _2)); exec->ReadStdout.connect_same_thread (c, boost::bind (&receive_stdout, &ffprobe_output, _1, _2));
/* wait for ffprobe process to exit */ /* wait for ffprobe process to exit */
exec->wait(); exec->wait ();
namespace pt = boost::property_tree; namespace pt = boost::property_tree;
pt::ptree root;
std::istringstream is (ffprobe_output); std::istringstream is (ffprobe_output);
pt::ptree root;
pt::read_json (is, root); pt::read_json (is, root);
// TODO: Find the stream with the most channels, rather than whatever the first one is. // TODO: Find the stream with the most channels, rather than whatever the first one is.
_channels = root.get<int> ("streams..channels"); _channels = root.get<int> ("streams..channels");
_length = root.get<int64_t> ("streams..duration_ts"); _length = root.get<int64_t> ("streams..duration_ts");
_samplerate = root.get<int> ("streams..sample_rate"); _samplerate = root.get<int> ("streams..sample_rate");
_natural_position = root.get<int64_t> ("streams..start_pts"); _natural_position = root.get<int64_t> ("streams..start_pts");
_format_name = root.get<std::string> ("streams..codec_long_name"); _format_name = root.get<std::string> ("streams..codec_long_name");
delete exec; delete exec;
} catch (...) { } catch (...) {
PBD::error << "FFMPEGFileImportableSource: Failed to read file metadata" << endmsg; PBD::error << "FFMPEGFileImportableSource: Failed to read file metadata" << endmsg;
delete exec; delete exec;
throw failed_constructor(); throw failed_constructor ();
} }
if (_channel != ALL_CHANNELS && (_channel < 0 || _channel > (int) channels ())) { if (_channel != ALL_CHANNELS && (_channel < 0 || _channel > (int)channels ())) {
PBD::error << string_compose("FFMPEGFileImportableSource: file only contains %1 channels; %2 is invalid as a channel number", channels(), _channel) << endmsg; PBD::error << string_compose ("FFMPEGFileImportableSource: file only contains %1 channels; %2 is invalid as a channel number", channels (), _channel) << endmsg;
throw failed_constructor(); throw failed_constructor ();
} }
} }
FFMPEGFileImportableSource::~FFMPEGFileImportableSource () FFMPEGFileImportableSource::~FFMPEGFileImportableSource ()
{ {
reset(); reset ();
} }
void void
FFMPEGFileImportableSource::seek (samplepos_t pos) FFMPEGFileImportableSource::seek (samplepos_t pos)
{ {
if (pos < _read_pos) { if (pos < _read_pos) {
reset(); reset ();
} }
if (!_ffmpeg_exec) { if (!_ffmpeg_exec) {
start_ffmpeg(); start_ffmpeg ();
} }
while (_read_pos < pos) { while (_read_pos < pos) {
@ -124,7 +127,7 @@ FFMPEGFileImportableSource::seek (samplepos_t pos)
Glib::usleep (1000); Glib::usleep (1000);
continue; continue;
} }
guint inc = std::min<guint>(read_space, pos - _read_pos); guint inc = std::min<guint> (read_space, pos - _read_pos);
_buffer.increment_read_idx (inc); _buffer.increment_read_idx (inc);
_read_pos += inc; _read_pos += inc;
} }
@ -134,7 +137,7 @@ samplecnt_t
FFMPEGFileImportableSource::read (Sample* dst, samplecnt_t nframes) FFMPEGFileImportableSource::read (Sample* dst, samplecnt_t nframes)
{ {
if (!_ffmpeg_exec) { if (!_ffmpeg_exec) {
start_ffmpeg(); start_ffmpeg ();
} }
samplecnt_t total_read = 0; samplecnt_t total_read = 0;
@ -163,16 +166,16 @@ FFMPEGFileImportableSource::start_ffmpeg ()
std::string ffmpeg_exe, unused; std::string ffmpeg_exe, unused;
ArdourVideoToolPaths::transcoder_exe (ffmpeg_exe, unused); ArdourVideoToolPaths::transcoder_exe (ffmpeg_exe, unused);
int a = 0; int a = 0;
char **argp = (char **)calloc(16, sizeof(char *)); char** argp = (char**)calloc (16, sizeof (char*));
char tmp[32]; char tmp[32];
argp[a++] = strdup (ffmpeg_exe.c_str ()); argp[a++] = strdup (ffmpeg_exe.c_str ());
argp[a++] = strdup ("-nostdin"); argp[a++] = strdup ("-nostdin");
argp[a++] = strdup ("-i"); argp[a++] = strdup ("-i");
argp[a++] = strdup (_path.c_str ()); argp[a++] = strdup (_path.c_str ());
if (_channel != ALL_CHANNELS) { if (_channel != ALL_CHANNELS) {
argp[a++] = strdup ("-map_channel"); argp[a++] = strdup ("-map_channel");
snprintf (tmp, sizeof(tmp), "0.0.%d", _channel); snprintf (tmp, sizeof (tmp), "0.0.%d", _channel);
argp[a++] = strdup (tmp); argp[a++] = strdup (tmp);
} }
argp[a++] = strdup ("-f"); argp[a++] = strdup ("-f");
@ -187,7 +190,7 @@ FFMPEGFileImportableSource::start_ffmpeg ()
PBD::info << "Decode command: { " << _ffmpeg_exec->to_s () << "}" << endmsg; PBD::info << "Decode command: { " << _ffmpeg_exec->to_s () << "}" << endmsg;
if (_ffmpeg_exec->start ()) { if (_ffmpeg_exec->start ()) {
PBD::error << "FFMPEGFileImportableSource: External decoder (ffmpeg) cannot be started." << endmsg; PBD::error << "FFMPEGFileImportableSource: External decoder (ffmpeg) cannot be started." << endmsg;
throw std::runtime_error("Failed to start ffmpeg"); throw std::runtime_error ("Failed to start ffmpeg");
} }
_ffmpeg_exec->ReadStdout.connect_same_thread (_ffmpeg_conn, boost::bind (&FFMPEGFileImportableSource::did_read_data, this, _1, _2)); _ffmpeg_exec->ReadStdout.connect_same_thread (_ffmpeg_conn, boost::bind (&FFMPEGFileImportableSource::did_read_data, this, _1, _2));
@ -210,11 +213,11 @@ void
FFMPEGFileImportableSource::did_read_data (std::string data, size_t size) FFMPEGFileImportableSource::did_read_data (std::string data, size_t size)
{ {
// Prepend the left-over data from a previous chunk of received data to this chunk. // Prepend the left-over data from a previous chunk of received data to this chunk.
data = _leftover_data + data; data = _leftover_data + data;
samplecnt_t n_samples = data.length () / sizeof(float); samplecnt_t n_samples = data.length () / sizeof (float);
// Stash leftover data. // Stash leftover data.
_leftover_data = data.substr(n_samples * sizeof(float)); _leftover_data = data.substr (n_samples * sizeof (float));
const char* cur = data.data (); const char* cur = data.data ();
while (n_samples > 0) { while (n_samples > 0) {
@ -232,14 +235,12 @@ FFMPEGFileImportableSource::did_read_data (std::string data, size_t size)
samplecnt_t written = 0; samplecnt_t written = 0;
for (int i = 0; i < 2; ++i) { for (int i = 0; i < 2; ++i) {
samplecnt_t cnt = std::min<samplecnt_t>(n_samples, wv.len[i]); samplecnt_t cnt = std::min<samplecnt_t> (n_samples, wv.len[i]);
memcpy (wv.buf[i], cur, cnt * sizeof(float)); memcpy (wv.buf[i], cur, cnt * sizeof (float));
written += cnt; written += cnt;
n_samples -= cnt; n_samples -= cnt;
cur += cnt * sizeof(float); cur += cnt * sizeof (float);
} }
_buffer.increment_write_idx (written); _buffer.increment_write_idx (written);
} }
} }
}