Merge branch 'master' of ssh://main.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / src / lib / sndfile_decoder.cc
index 1fc1ecaf2cc66c1cbcb650f0af9cad0f0d2a82fc..f66a7c7dc9dd363f649f2c71632a9a5057d78949 100644 (file)
 */
 
 #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"
@@ -35,12 +39,19 @@ using boost::shared_ptr;
 
 SndfileDecoder::SndfileDecoder (shared_ptr<const Film> f, shared_ptr<const SndfileContent> c)
        : Decoder (f)
-       , AudioDecoder (f)
+       , AudioDecoder (f, c)
        , _sndfile_content (c)
        , _deinterleave_buffer (0)
 {
        _info.format = 0;
-       _sndfile = sf_open (_sndfile_content->path().string().c_str(), SFM_READ, &_info);
+
+       /* 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"));
        }