X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Futil.h;h=7aa9f25e14f01be88c0e4e43bda5b55bc0700b4b;hb=d7fe5fa4178af87b5f1e5a571a78313fa00c3327;hp=a6d95b85d3f004ee46eb1c4abe0f1dd75dd87174;hpb=453aa554e67d6a0c0ad74a16f5f877dec5a5c219;p=dcpomatic.git diff --git a/src/lib/util.h b/src/lib/util.h index a6d95b85d..7aa9f25e1 100644 --- a/src/lib/util.h +++ b/src/lib/util.h @@ -36,7 +36,7 @@ extern "C" { #include "compose.hpp" #ifdef DVDOMATIC_DEBUG -#define TIMING(...) _log->microsecond_log (String::compose (__VA_ARGS__), Log::TIMING); +#define TIMING(...) _film->log()->microsecond_log (String::compose (__VA_ARGS__), Log::TIMING); #else #define TIMING(...) #endif @@ -52,6 +52,16 @@ extern void dvdomatic_setup (); extern std::vector 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 (); + +typedef int SourceFrame; + +struct DCPFrameRate +{ + int frames_per_second; + int skip; + bool run_fast; +}; enum ContentType { STILL, @@ -82,6 +92,8 @@ struct Size int height; }; +extern bool operator== (Size const & a, Size const & b); + /** A description of the crop of an image or video. */ struct Crop { @@ -154,6 +166,7 @@ struct Rect extern std::string crop_string (Position, Size); extern int dcp_audio_sample_rate (int); +extern DCPFrameRate dcp_frame_rate (float); extern std::string colour_lut_index_to_name (int index); extern int round_up (int, int); extern std::multimap read_key_value (std::istream& s); @@ -207,6 +220,7 @@ class AudioBuffers { public: AudioBuffers (int channels, int frames); + AudioBuffers (AudioBuffers const &); ~AudioBuffers (); float** data () const { @@ -215,20 +229,29 @@ public: float* data (int) const; + int channels () const { + return _channels; + } + int frames () const { return _frames; } void set_frames (int f); + void make_silent (); + + void copy_from (AudioBuffers* from, int frames_to_copy, int read_offset, int write_offset); + void move (int from, int to, int frames); + private: - /* no copy construction */ - AudioBuffers (AudioBuffers const &); - int _channels; int _frames; + int _allocated_frames; float** _data; }; +extern int64_t video_frames_to_audio_frames (SourceFrame v, float audio_sample_rate, float frames_per_second); + #endif