X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Futil.h;h=301a8bc4e9398dd48babbf84475ba24dd980b77a;hb=967dc3f4461d4b8caf809ebce7bdcb6e818809f0;hp=1af6500856770d33796a462e91f337b404210e9d;hpb=7ffd5bd9b4571c2db06a8c50419fe90b06ef1a07;p=dcpomatic.git diff --git a/src/lib/util.h b/src/lib/util.h index 1af650085..301a8bc4e 100644 --- a/src/lib/util.h +++ b/src/lib/util.h @@ -41,6 +41,8 @@ extern "C" { #define TIMING(...) #endif +#define MAX_AUDIO_CHANNELS 6 + class Scaler; extern std::string seconds_to_hms (int); @@ -54,6 +56,15 @@ 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, VIDEO @@ -157,8 +168,10 @@ 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 int stride_round_up (int, int const *, int); +extern int stride_lookup (int c, int const * stride); extern std::multimap read_key_value (std::istream& s); extern int get_required_int (std::multimap const & kv, std::string k); extern float get_required_float (std::multimap const & kv, std::string k); @@ -210,6 +223,7 @@ class AudioBuffers { public: AudioBuffers (int channels, int frames); + AudioBuffers (AudioBuffers const &); ~AudioBuffers (); float** data () const { @@ -218,6 +232,10 @@ public: float* data (int) const; + int channels () const { + return _channels; + } + int frames () const { return _frames; } @@ -226,14 +244,18 @@ public: 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); +extern bool still_image_file (std::string); + #endif