#include <boost/shared_ptr.hpp>
#include <boost/asio.hpp>
#include <boost/optional.hpp>
+#include <boost/filesystem.hpp>
#include <libdcp/util.h>
extern "C" {
#include <libavcodec/avcodec.h>
extern std::string dependency_version_summary ();
extern double seconds (struct timeval);
extern void dvdomatic_setup ();
+extern void dvdomatic_setup_i18n (std::string);
extern std::vector<std::string> split_at_spaces_considering_quotes (std::string);
extern std::string md5_digest (std::string);
extern std::string md5_digest (void const *, int);
extern void ensure_ui_thread ();
extern std::string audio_channel_name (int);
+#ifdef DVDOMATIC_WINDOWS
+extern boost::filesystem::path mo_path ();
+#endif
typedef int SourceFrame;
-struct DCPFrameRate
+struct FrameRateConversion
{
- DCPFrameRate (float);
+ FrameRateConversion (float, int);
/** @return factor by which to multiply a source frame rate
to get the effective rate after any skip or repeat has happened.
return 1;
}
-
- /** frames per second for the DCP */
- int frames_per_second;
+
/** true to skip every other frame */
bool skip;
/** true to repeat every frame once */
bool repeat;
/** true if this DCP will run its video faster or slower than the source
- * without taking into account `repeat'.
+ * without taking into account `repeat' nor `skip'.
* (e.g. change_speed will be true if
* source is 29.97fps, DCP is 30fps
* source is 14.50fps, DCP is 30fps
* source is 12.50fps, DCP is 25fps)
*/
bool change_speed;
+
+ std::string description;
};
+int best_dcp_frame_rate (float);
+
enum ContentType {
STILL, ///< content is still images
VIDEO ///< content is a video
public:
AudioBuffers (int channels, int frames);
AudioBuffers (AudioBuffers const &);
+ AudioBuffers (boost::shared_ptr<const AudioBuffers>);
~AudioBuffers ();
float** data () const {
extern bool still_image_file (std::string);
extern std::pair<std::string, int> cpu_info ();
+class LocaleGuard
+{
+public:
+ LocaleGuard ();
+ ~LocaleGuard ();
+
+private:
+ char* _old;
+};
+
+
#endif