summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-02-26 22:26:41 +0000
committerCarl Hetherington <cth@carlh.net>2014-02-26 22:26:41 +0000
commitc9f5634790254180a0a2b3275a1b878d1d422298 (patch)
tree3ce29cf45ef93253842298ec2402a9e91e3421f2
parente52d78a0ebf4852c56bcf4119ed7d4c1d0d9b8ff (diff)
Fix problems loading files into SndfileDecoder when
they have non-ASCII names. Reported-by: José Luis Rodríguez García
-rw-r--r--ChangeLog5
-rw-r--r--src/lib/sndfile_decoder.cc11
2 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e9607abbf..c08d89635 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-02-26 Carl Hetherington <cth@carlh.net>
+
+ * Fix failure to load sound files with
+ non-ASCII paths.
+
2014-02-23 Carl Hetherington <cth@carlh.net>
* Version 1.64.16 released.
diff --git a/src/lib/sndfile_decoder.cc b/src/lib/sndfile_decoder.cc
index e10f4f568..f66a7c7dc 100644
--- a/src/lib/sndfile_decoder.cc
+++ b/src/lib/sndfile_decoder.cc
@@ -18,6 +18,10 @@
*/
#include <iostream>
+#ifdef DCPOMATIC_WINDOWS
+#include <windows.h>
+#define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1
+#endif
#include <sndfile.h>
#include "sndfile_content.h"
#include "sndfile_decoder.h"
@@ -40,7 +44,14 @@ SndfileDecoder::SndfileDecoder (shared_ptr<const Film> f, shared_ptr<const Sndfi
, _deinterleave_buffer (0)
{
_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"));
}