[FFmpeg-devel] [PATCH 1/3] ffplay: restructure audio stream opening code
Marton Balint
cus at passwd.hu
Sun Mar 3 02:28:36 CET 2013
Preparation for -af support.
Signed-off-by: Marton Balint <cus at passwd.hu>
---
ffplay.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/ffplay.c b/ffplay.c
index 7276c4a..268cde0 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -2089,7 +2089,7 @@ static int audio_decode_frame(VideoState *is)
AVPacket *pkt_temp = &is->audio_pkt_temp;
AVPacket *pkt = &is->audio_pkt;
AVCodecContext *dec = is->audio_st->codec;
- int len1, len2, data_size, resampled_data_size;
+ int len1, data_size, resampled_data_size;
int64_t dec_channel_layout;
int got_frame;
av_unused double audio_clock0;
@@ -2166,6 +2166,7 @@ static int audio_decode_frame(VideoState *is)
uint8_t **out = &is->audio_buf1;
int out_count = (int64_t)wanted_nb_samples * is->audio_tgt.freq / is->frame->sample_rate + 256;
int out_size = av_samples_get_buffer_size(NULL, is->audio_tgt.channels, out_count, is->audio_tgt.fmt, 0);
+ int len2;
if (wanted_nb_samples != is->frame->nb_samples) {
if (swr_set_compensation(is->swr_ctx, (wanted_nb_samples - is->frame->nb_samples) * is->audio_tgt.freq / is->frame->sample_rate,
wanted_nb_samples * is->audio_tgt.freq / is->frame->sample_rate) < 0) {
@@ -2342,6 +2343,7 @@ static int stream_component_open(VideoState *is, int stream_index)
const char *forced_codec_name = NULL;
AVDictionary *opts;
AVDictionaryEntry *t = NULL;
+ int ret;
if (stream_index < 0 || stream_index >= ic->nb_streams)
return -1;
@@ -2391,20 +2393,14 @@ static int stream_component_open(VideoState *is, int stream_index)
return AVERROR_OPTION_NOT_FOUND;
}
- /* prepare audio output */
- if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) {
- 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;
switch (avctx->codec_type) {
case AVMEDIA_TYPE_AUDIO:
- is->audio_stream = stream_index;
- is->audio_st = ic->streams[stream_index];
+ /* prepare audio output */
+ if ((ret = audio_open(is, avctx->channel_layout, avctx->channels, avctx->sample_rate, &is->audio_tgt)) < 0)
+ return ret;
+ is->audio_hw_buf_size = ret;
+ is->audio_src = is->audio_tgt;
is->audio_buf_size = 0;
is->audio_buf_index = 0;
@@ -2417,6 +2413,10 @@ static int stream_component_open(VideoState *is, int stream_index)
memset(&is->audio_pkt, 0, sizeof(is->audio_pkt));
memset(&is->audio_pkt_temp, 0, sizeof(is->audio_pkt_temp));
+
+ is->audio_stream = stream_index;
+ is->audio_st = ic->streams[stream_index];
+
packet_queue_start(&is->audioq);
SDL_PauseAudio(0);
break;
--
1.7.10.4
More information about the ffmpeg-devel
mailing list