X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fsndfile_decoder.cc;h=f66a7c7dc9dd363f649f2c71632a9a5057d78949;hb=491daf8790f35611052d8954d5d74df275dcda18;hp=c12152e673fcbc0eca679d0da1e08f31e39d4aa8;hpb=f45cbb73068321d857249aaa21f770b87493c7c2;p=dcpomatic.git diff --git a/src/lib/sndfile_decoder.cc b/src/lib/sndfile_decoder.cc index c12152e67..f66a7c7dc 100644 --- a/src/lib/sndfile_decoder.cc +++ b/src/lib/sndfile_decoder.cc @@ -18,6 +18,10 @@ */ #include +#ifdef DCPOMATIC_WINDOWS +#include +#define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1 +#endif #include #include "sndfile_content.h" #include "sndfile_decoder.h" @@ -39,7 +43,15 @@ SndfileDecoder::SndfileDecoder (shared_ptr f, shared_ptrfile().string().c_str(), SFM_READ, &_info); + _info.format = 0; + + /* Here be monsters. See fopen_boost for similar shenanigans */ +#ifdef DCPOMATIC_WINDOWS + _sndfile = sf_wchar_open (_sndfile_content->path(0).c_str(), SFM_READ, &_info); +#else + _sndfile = sf_open (_sndfile_content->path(0).string().c_str(), SFM_READ, &_info); +#endif + if (!_sndfile) { throw DecodeError (_("could not open audio file for reading")); } @@ -89,7 +101,7 @@ SndfileDecoder::pass () } data->set_frames (this_time); - audio (data, double(_done) / audio_frame_rate()); + audio (data, _done); _done += this_time; _remaining -= this_time; } @@ -100,7 +112,7 @@ SndfileDecoder::audio_channels () const return _info.channels; } -ContentAudioFrame +AudioContent::Frame SndfileDecoder::audio_length () const { return _info.frames; @@ -112,14 +124,8 @@ SndfileDecoder::audio_frame_rate () const return _info.samplerate; } -Time -SndfileDecoder::next () const -{ - return _next_audio; -} - bool SndfileDecoder::done () const { - return audio_done (); + return _audio_position >= _sndfile_content->audio_length (); }