diff --git a/src/add-ons/media/media-add-ons/mixer/MixerUtils.cpp b/src/add-ons/media/media-add-ons/mixer/MixerUtils.cpp index 24bf41a912..9b6af0242a 100644 --- a/src/add-ons/media/media-add-ons/mixer/MixerUtils.cpp +++ b/src/add-ons/media/media-add-ons/mixer/MixerUtils.cpp @@ -194,3 +194,25 @@ frames_per_buffer(const media_multi_audio_format & format) } return frames; } + +bigtime_t +buffer_duration(const media_multi_audio_format & format) +{ + bigtime_t duration = 0; + if (format.buffer_size > 0 && format.frame_rate > 0 && bytes_per_frame(format) > 0) { + duration = s_to_us((format.buffer_size / bytes_per_frame(format)) / format.frame_rate); + } + return duration; +} + +double +us_to_s(bigtime_t usecs) +{ + return (usecs / 1000000.0); +} + +bigtime_t +s_to_us(double secs) +{ + return (bigtime_t) (secs * 1000000.0); +} diff --git a/src/add-ons/media/media-add-ons/mixer/MixerUtils.h b/src/add-ons/media/media-add-ons/mixer/MixerUtils.h index b20dadd17c..792f2437cf 100644 --- a/src/add-ons/media/media-add-ons/mixer/MixerUtils.h +++ b/src/add-ons/media/media-add-ons/mixer/MixerUtils.h @@ -12,6 +12,8 @@ void CopySamples(float *_dst, int32 _dst_sample_offset, const float *_src, int32 _src_sample_offset, int32 _sample_count); +bigtime_t buffer_duration(const media_multi_audio_format & format); + int bytes_per_sample(const media_multi_audio_format & format); int bytes_per_frame(const media_multi_audio_format & format); @@ -22,3 +24,6 @@ bigtime_t duration_for_frames(double framerate, int64 frames); int ChannelMaskToChannelType(uint32 mask); uint32 ChannelTypeToChannelMask(int type); + +double us_to_s(bigtime_t usecs); +bigtime_t s_to_us(double secs);