summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bink.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/bink.c b/src/bink.c
index d3310f6..eba59e3 100644
--- a/src/bink.c
+++ b/src/bink.c
@@ -148,26 +148,6 @@ static int DecodeAudioFrame(struct binkMovie* aMovie)
return 0;
if (!aMovie->alInited) {
- alGenSources(1, &aMovie->alSource);
- AL_CHECK();
-
- alGenBuffers(FRAMEQUEUESIZE, aMovie->alBuffers);
- AL_CHECK();
-
- alSource3f(aMovie->alSource, AL_POSITION, 0.0, 0.0, 0.0);
- alSource3f(aMovie->alSource, AL_VELOCITY, 0.0, 0.0, 0.0);
- alSource3f(aMovie->alSource, AL_DIRECTION, 0.0, 0.0, 0.0);
- alSourcef(aMovie->alSource, AL_ROLLOFF_FACTOR, 0.0);
- alSourcei(aMovie->alSource, AL_SOURCE_RELATIVE, AL_TRUE);
- alSourcef(aMovie->alSource, AL_PITCH, 1);
- alSourcef(aMovie->alSource, AL_GAIN, 1.0);
-
- AL_CHECK();
-
- aMovie->alNumFreeBuffers = FRAMEQUEUESIZE;
- for (int i=0; i < aMovie->alNumFreeBuffers; i++)
- aMovie->alFreeBuffers[i] = aMovie->alBuffers[i];
-
switch (aMovie->audioFrame->channel_layout) {
case AV_CH_LAYOUT_MONO:
aMovie->alFormat = (aMovie->audioFrame->format == AV_SAMPLE_FMT_U8) ?
@@ -373,6 +353,25 @@ static int BinkStartMovie(struct binkMovie* aMovie, const char* aFilename,
aMovie->audioCodecContext = context;
aMovie->audioStreamIndex = i;
aMovie->audioFrame = av_frame_alloc();
+
+ alGenSources(1, &aMovie->alSource);
+ AL_CHECK();
+
+ alGenBuffers(FRAMEQUEUESIZE, aMovie->alBuffers);
+ AL_CHECK();
+
+ alSource3f(aMovie->alSource, AL_POSITION, 0.0, 0.0, 0.0);
+ alSource3f(aMovie->alSource, AL_VELOCITY, 0.0, 0.0, 0.0);
+ alSource3f(aMovie->alSource, AL_DIRECTION, 0.0, 0.0, 0.0);
+ alSourcef(aMovie->alSource, AL_ROLLOFF_FACTOR, 0.0);
+ alSourcei(aMovie->alSource, AL_SOURCE_RELATIVE, AL_TRUE);
+ alSourcef(aMovie->alSource, AL_PITCH, 1.0);
+ alSourcef(aMovie->alSource, AL_GAIN, 1.0);
+
+ aMovie->alNumFreeBuffers = FRAMEQUEUESIZE;
+ for (int i = 0; i < aMovie->alNumFreeBuffers; i++)
+ aMovie->alFreeBuffers[i] = aMovie->alBuffers[i];
+
numStreams++;
} else {
avcodec_free_context(&context);