Bink: move format-independent AL initialization to BinkStartMovie
This commit is contained in:
parent
ea39a84273
commit
2bc7bac0f3
1 changed files with 19 additions and 20 deletions
39
src/bink.c
39
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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue