Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/sound.c')
-rw-r--r--source/blender/blenkernel/intern/sound.c47
1 files changed, 46 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index c61fa793367..ccb10f080e3 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -1213,7 +1213,6 @@ static bool sound_info_from_playback_handle(void *playback_handle, SoundInfo *so
AUD_SoundInfo info = AUD_getInfo(playback_handle);
sound_info->specs.channels = (eSoundChannels)info.specs.channels;
sound_info->length = info.length;
- sound_info->start_offset = info.start_offset;
return true;
}
@@ -1231,6 +1230,44 @@ bool BKE_sound_info_get(struct Main *main, struct bSound *sound, SoundInfo *soun
return result;
}
+bool BKE_sound_stream_info_get(struct Main *main, const char *filepath, int stream, SoundStreamInfo *sound_info)
+{
+ const char *path;
+ char str[FILE_MAX];
+ AUD_Sound *sound;
+ AUD_StreamInfo *stream_infos;
+ int stream_count;
+
+ BLI_strncpy(str, filepath, sizeof(str));
+ path = BKE_main_blendfile_path(main);
+ BLI_path_abs(str, path);
+
+ sound = AUD_Sound_file(str);
+ if (!sound) {
+ return false;
+ }
+
+ stream_count = AUD_Sound_getFileStreams(sound, &stream_infos);
+
+ AUD_Sound_free(sound);
+
+ if (!stream_infos) {
+ return false;
+ }
+
+ if ((stream < 0) || (stream >= stream_count)) {
+ free(stream_infos);
+ return false;
+ }
+
+ sound_info->start = stream_infos[stream].start;
+ sound_info->duration = stream_infos[stream].duration;
+
+ free(stream_infos);
+
+ return true;
+}
+
#else /* WITH_AUDASPACE */
# include "BLI_utildefines.h"
@@ -1400,6 +1437,14 @@ bool BKE_sound_info_get(struct Main *UNUSED(main),
return false;
}
+bool BKE_sound_stream_info_get(struct Main *UNUSED(main),
+ const char *UNUSED(filepath),
+ int UNUSED(stream),
+ SoundStreamInfo *UNUSED(sound_info))
+{
+ return false;
+}
+
#endif /* WITH_AUDASPACE */
void BKE_sound_reset_scene_runtime(Scene *scene)