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.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index 8f3b82643e0..88ca0c33624 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -55,7 +55,7 @@ static void sound_sync_callback(void* data, int mode, float time)
}
#endif
-int sound_define_from_str(char *str)
+int sound_define_from_str(const char *str)
{
if (BLI_strcaseeq(str, "NULL"))
return AUD_NULL_DEVICE;
@@ -74,7 +74,7 @@ void sound_force_device(int device)
force_device = device;
}
-void sound_init_once()
+void sound_init_once(void)
{
AUD_initOnce();
}
@@ -110,15 +110,17 @@ void sound_init(struct Main *bmain)
#ifdef WITH_JACK
AUD_setSyncCallback(sound_sync_callback, bmain);
+#else
+ (void)bmain; /* unused */
#endif
}
-void sound_exit()
+void sound_exit(void)
{
AUD_exit();
}
-struct bSound* sound_new_file(struct Main *bmain, char* filename)
+struct bSound* sound_new_file(struct Main *bmain, const char *filename)
{
bSound* sound = NULL;
@@ -129,7 +131,7 @@ struct bSound* sound_new_file(struct Main *bmain, char* filename)
strcpy(str, filename);
- path = /*bmain ? bmain->name :*/ G.sce;
+ path = /*bmain ? bmain->name :*/ G.main->name;
BLI_path_abs(str, path);
@@ -264,7 +266,7 @@ void sound_load(struct Main *bmain, struct bSound* sound)
if(sound->id.lib)
path = sound->id.lib->filepath;
else
- path = /*bmain ? bmain->name :*/ G.sce;
+ path = bmain->name;
BLI_path_abs(fullpath, path);
@@ -274,7 +276,7 @@ void sound_load(struct Main *bmain, struct bSound* sound)
/* or else load it from disk */
else
sound->handle = AUD_load(fullpath);
- } // XXX
+ }
// XXX unused currently
#if 0
break;
@@ -380,7 +382,7 @@ void sound_move_scene_sound(struct Scene *scene, void* handle, int startframe, i
AUD_moveSequencer(scene->sound_scene, handle, startframe / FPS, endframe / FPS, frameskip / FPS);
}
-void sound_start_play_scene(struct Scene *scene)
+static void sound_start_play_scene(struct Scene *scene)
{
scene->sound_scene_handle = AUD_play(scene->sound_scene, 1);
AUD_setLoop(scene->sound_scene_handle, -1);
@@ -433,9 +435,11 @@ void sound_seek_scene(struct bContext *C)
if(scene->audio.flag & AUDIO_SCRUB && !CTX_wm_screen(C)->animtimer)
{
- // AUD_XXX TODO: fix scrubbing, it currently doesn't stop playing
if(scene->audio.flag & AUDIO_SYNC)
+ {
+ AUD_seek(scene->sound_scene_handle, CFRA / FPS);
AUD_seekSequencer(scene->sound_scene_handle, CFRA / FPS);
+ }
else
AUD_seek(scene->sound_scene_handle, CFRA / FPS);
AUD_resume(scene->sound_scene_handle);
@@ -480,3 +484,12 @@ int sound_read_sound_buffer(struct bSound* sound, float* buffer, int length, flo
return AUD_readSound(limiter, buffer, length);
AUD_unload(limiter);
}
+
+int sound_get_channels(struct bSound* sound)
+{
+ AUD_SoundInfo info;
+
+ info = AUD_getInfo(sound->playback_handle);
+
+ return info.specs.channels;
+}