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;
|
return 0;
|
||||||
|
|
||||||
if (!aMovie->alInited) {
|
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) {
|
switch (aMovie->audioFrame->channel_layout) {
|
||||||
case AV_CH_LAYOUT_MONO:
|
case AV_CH_LAYOUT_MONO:
|
||||||
aMovie->alFormat = (aMovie->audioFrame->format == AV_SAMPLE_FMT_U8) ?
|
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->audioCodecContext = context;
|
||||||
aMovie->audioStreamIndex = i;
|
aMovie->audioStreamIndex = i;
|
||||||
aMovie->audioFrame = av_frame_alloc();
|
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++;
|
numStreams++;
|
||||||
} else {
|
} else {
|
||||||
avcodec_free_context(&context);
|
avcodec_free_context(&context);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue