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 e4a66ba347..79514e4380 100644 --- a/src/add-ons/media/media-add-ons/mixer/MixerUtils.cpp +++ b/src/add-ons/media/media-add-ons/mixer/MixerUtils.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "MixerUtils.h" #include "debug.h" @@ -159,3 +160,31 @@ CopySamples(float *_dst, int32 _dst_sample_offset, dst += dst_sample_offset; } } + +int64 +frames_for_duration(double framerate, bigtime_t duration) +{ + return (int64) ceil(framerate * double(duration) / 1000000.0); +} + +bigtime_t +duration_for_frames(double framerate, int64 frames) +{ + return (bigtime_t)((1000000.0 * frames) / framerate); +} + +int +bytes_per_frame(const media_multi_audio_format & format) +{ + return format.channel_count * (format.format & 0xf); +} + +int +frames_per_buffer(const media_multi_audio_format & format) +{ + int frames = 0; + if (bytes_per_frame(format) > 0) { + frames = format.buffer_size / bytes_per_frame(format); + } + return frames; +} 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 8366c5c537..5708b0cac3 100644 --- a/src/add-ons/media/media-add-ons/mixer/MixerUtils.h +++ b/src/add-ons/media/media-add-ons/mixer/MixerUtils.h @@ -1,4 +1,3 @@ -#include void string_for_channel_mask(char *str, uint32 mask); void fix_multiaudio_format(media_multi_audio_format *format); @@ -13,13 +12,11 @@ void CopySamples(float *_dst, int32 _dst_sample_offset, const float *_src, int32 _src_sample_offset, int32 _sample_count); +int bytes_per_frame(const media_multi_audio_format & format); +int frames_per_buffer(const media_multi_audio_format & format); int64 frames_for_duration(double framerate, bigtime_t duration); - -inline int64 frames_for_duration(double framerate, bigtime_t duration) -{ - return (int64) ceil(framerate * double(duration) / 1000000.0); -} +bigtime_t duration_for_frames(double framerate, int64 frames); int ChannelMaskToChannelType(uint32 mask); uint32 ChannelTypeToChannelMask(int type);