using namespace std;
using namespace ARDOUR;
using namespace PBD;
-using Glib::ustring;
+using std::string;
gain_t* SndFileSource::out_coefficient = 0;
gain_t* SndFileSource::in_coefficient = 0;
}
/** Files created this way are never writable or removable */
-SndFileSource::SndFileSource (Session& s, const ustring& path, int chn, Flag flags)
+SndFileSource::SndFileSource (Session& s, const string& path, int chn, Flag flags)
: Source(s, DataType::AUDIO, path, flags)
+ /* note that the origin of an external file is itself */
, AudioFileSource (s, path, Flag (flags & ~(Writable|Removable|RemovableIfEmpty|RemoveAtDestroy)))
{
_channel = chn;
}
/** This constructor is used to construct new files, not open existing ones. */
-SndFileSource::SndFileSource (Session& s, const ustring& path,
- SampleFormat sfmt, HeaderFormat hf, nframes_t rate, Flag flags)
+SndFileSource::SndFileSource (Session& s, const string& path, const string& origin,
+ SampleFormat sfmt, HeaderFormat hf, framecnt_t rate, Flag flags)
: Source(s, DataType::AUDIO, path, flags)
- , AudioFileSource (s, path, flags, sfmt, hf)
+ , AudioFileSource (s, path, origin, flags, sfmt, hf)
{
int fmt = 0;
void
SndFileSource::init_sndfile ()
{
- ustring file;
+ string file;
// lets try to keep the object initalizations here at the top
xfade_buf = 0;
so we don't want to see this message.
*/
+ cerr << "failed to open " << _path << " with name " << _name << endl;
+
error << string_compose(_("SndFileSource: cannot open file \"%1\" for %2 (%3)"),
_path, (writable() ? "read+write" : "reading"), errbuf) << endmsg;
#endif
}
if (_info.channels == 1) {
- nframes_t ret = sf_read_float (sf, dst, file_cnt);
+ framecnt_t ret = sf_read_float (sf, dst, file_cnt);
_read_data_count = ret * sizeof(float);
if (ret != file_cnt) {
char errbuf[256];
file_pos = capture_start_frame - _timeline_position;
// split cnt in half
- nframes_t subcnt = cnt / 2;
- nframes_t ofilepos = file_pos;
+ framecnt_t subcnt = cnt / 2;
+ framecnt_t ofilepos = file_pos;
// fade in
if (crossfade (data, subcnt, 1) != subcnt) {
}
int
-SndFileSource::update_header (sframes_t when, struct tm& now, time_t tnow)
+SndFileSource::update_header (framepos_t when, struct tm& now, time_t tnow)
{
set_timeline_position (when);
}
int
-SndFileSource::setup_broadcast_info (sframes_t /*when*/, struct tm& now, time_t /*tnow*/)
+SndFileSource::setup_broadcast_info (framepos_t /*when*/, struct tm& now, time_t /*tnow*/)
{
if (!writable()) {
warning << string_compose (_("attempt to store broadcast info in a non-writable audio file source (%1)"), _path) << endmsg;
return 0;
}
- _broadcast_info->set_originator_ref (_session);
+ _broadcast_info->set_originator_ref_from_session (_session);
_broadcast_info->set_origination_time (&now);
/* now update header position taking header offset into account */
_capture_end = false;
}
+/** @param pos Capture start position in session frames */
void
-SndFileSource::mark_capture_start (sframes_t pos)
+SndFileSource::mark_capture_start (framepos_t pos)
{
if (destructive()) {
if (pos < _timeline_position) {
return cnt;
}
-sframes_t
+framepos_t
SndFileSource::last_capture_start_frame () const
{
if (destructive()) {
}
void
-SndFileSource::setup_standard_crossfades (Session const & s, nframes_t rate)
+SndFileSource::setup_standard_crossfades (Session const & s, framecnt_t rate)
{
/* This static method is assumed to have been called by the Session
before any DFS's are created.
}
void
-SndFileSource::set_timeline_position (int64_t pos)
+SndFileSource::set_timeline_position (framepos_t pos)
{
// destructive track timeline postion does not change
// except at instantion or when header_position_offset
}
int
-SndFileSource::get_soundfile_info (const ustring& path, SoundFileInfo& info, string& error_msg)
+SndFileSource::get_soundfile_info (const string& path, SoundFileInfo& info, string& error_msg)
{
SNDFILE *sf;
SF_INFO sf_info;
touch_peakfile ();
}
+
+void
+SndFileSource::set_path (const string& p)
+{
+ FileSource::set_path (p);
+
+ if (_descriptor) {
+ _descriptor->set_path (_path);
+ }
+}