[FFmpeg-devel] [PATCH 3/6] ffplay: remove VideoState from audio_open
Marton Balint
cus at passwd.hu
Sat Jun 2 22:26:27 CEST 2012
Signed-off-by: Marton Balint <cus at passwd.hu>
---
ffplay.c | 20 +++++++++++---------
1 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/ffplay.c b/ffplay.c
index 8ccb815..993ee52 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -2242,7 +2242,7 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
is->audio_current_pts_drift = is->audio_current_pts - audio_callback_time / 1000000.0;
}
-static int audio_open(VideoState *is, int64_t channel_layout, int channels, int sample_rate)
+static int audio_open(void *opaque, int64_t channel_layout, int channels, int sample_rate, struct AudioParams *audio)
{
SDL_AudioSpec wanted_spec, spec;
const char *env;
@@ -2272,7 +2272,7 @@ static int audio_open(VideoState *is, int64_t channel_layout, int channels, int
wanted_spec.silence = 0;
wanted_spec.samples = SDL_AUDIO_BUFFER_SIZE;
wanted_spec.callback = sdl_audio_callback;
- wanted_spec.userdata = is;
+ wanted_spec.userdata = opaque;
if (SDL_OpenAudio(&wanted_spec, &spec) < 0) {
fprintf(stderr, "SDL_OpenAudio: %s\n", SDL_GetError());
return -1;
@@ -2289,12 +2289,11 @@ static int audio_open(VideoState *is, int64_t channel_layout, int channels, int
}
}
- is->audio_hw_buf_size = spec.size;
- is->audio_src.fmt = is->audio_tgt.fmt = AV_SAMPLE_FMT_S16;
- is->audio_src.freq = is->audio_tgt.freq = spec.freq;
- is->audio_src.channel_layout = is->audio_tgt.channel_layout = wanted_channel_layout;
- is->audio_src.channels = is->audio_tgt.channels = spec.channels;
- return 0;
+ audio->fmt = AV_SAMPLE_FMT_S16;
+ audio->freq = spec.freq;
+ audio->channel_layout = wanted_channel_layout;
+ audio->channels = spec.channels;
+ return spec.size;
}
/* open a given stream. Return 0 if OK */
@@ -2351,8 +2350,11 @@ static int stream_component_open(VideoState *is, int stream_index)
/* prepare audio output */
if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) {
- if (audio_open(is, avctx->channel_layout, avctx->channels, avctx->sample_rate) < 0)
+ int audio_hw_buf_size = audio_open(is, avctx->channel_layout, avctx->channels, avctx->sample_rate, &is->audio_src);
+ if (audio_hw_buf_size < 0)
return -1;
+ is->audio_hw_buf_size = audio_hw_buf_size;
+ is->audio_tgt = is->audio_src;
}
ic->streams[stream_index]->discard = AVDISCARD_DEFAULT;
--
1.7.3.4
More information about the ffmpeg-devel
mailing list