On 11/4/2017 3:54 PM, Marton Balint wrote: > It allows us to specify what kind of audio parameter changes are allowed. > > Should fix ticket #6721.
Seems to work. Thanks. > > Signed-off-by: Marton Balint <c...@passwd.hu> > --- > fftools/ffplay.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/fftools/ffplay.c b/fftools/ffplay.c > index c264e92535..bd1457c7e3 100644 > --- a/fftools/ffplay.c > +++ b/fftools/ffplay.c > @@ -362,6 +362,7 @@ static AVPacket flush_pkt; > static SDL_Window *window; > static SDL_Renderer *renderer; > static SDL_RendererInfo renderer_info = {0}; > +static SDL_AudioDeviceID audio_dev; > > static const struct TextureFormatEntry { > enum AVPixelFormat format; > @@ -1192,7 +1193,7 @@ static void stream_component_close(VideoState *is, int > stream_index) > switch (codecpar->codec_type) { > case AVMEDIA_TYPE_AUDIO: > decoder_abort(&is->auddec, &is->sampq); > - SDL_CloseAudio(); > + SDL_CloseAudioDevice(audio_dev); > decoder_destroy(&is->auddec); > swr_free(&is->swr_ctx); > av_freep(&is->audio_buf1); > @@ -2451,7 +2452,7 @@ static void sdl_audio_callback(void *opaque, Uint8 > *stream, int len) > else { > memset(stream, 0, len1); > if (!is->muted && is->audio_buf) > - SDL_MixAudio(stream, (uint8_t *)is->audio_buf + > is->audio_buf_index, len1, is->audio_volume); > + SDL_MixAudioFormat(stream, (uint8_t *)is->audio_buf + > is->audio_buf_index, AUDIO_S16SYS, len1, is->audio_volume); > } > len -= len1; > stream += len1; > @@ -2496,7 +2497,7 @@ static int audio_open(void *opaque, int64_t > wanted_channel_layout, int wanted_nb > wanted_spec.samples = FFMAX(SDL_AUDIO_MIN_BUFFER_SIZE, 2 << > av_log2(wanted_spec.freq / SDL_AUDIO_MAX_CALLBACKS_PER_SEC)); > wanted_spec.callback = sdl_audio_callback; > wanted_spec.userdata = opaque; > - while (SDL_OpenAudio(&wanted_spec, &spec) < 0) { > + while (!(audio_dev = SDL_OpenAudioDevice(NULL, 0, &wanted_spec, &spec, > SDL_AUDIO_ALLOW_FREQUENCY_CHANGE | SDL_AUDIO_ALLOW_CHANNELS_CHANGE))) { > av_log(NULL, AV_LOG_WARNING, "SDL_OpenAudio (%d channels, %d Hz): > %s\n", > wanted_spec.channels, wanted_spec.freq, SDL_GetError()); > wanted_spec.channels = next_nb_channels[FFMIN(7, > wanted_spec.channels)]; > @@ -2659,7 +2660,7 @@ static int stream_component_open(VideoState *is, int > stream_index) > } > if ((ret = decoder_start(&is->auddec, audio_thread, is)) < 0) > goto out; > - SDL_PauseAudio(0); > + SDL_PauseAudioDevice(audio_dev, 0); > break; > case AVMEDIA_TYPE_VIDEO: > is->video_stream = stream_index; _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel