]> git.sesse.net Git - ffmpeg/commitdiff
ffplay: use avctx->channels and avctx->freq before avcodec_open2 consistently
authorMarton Balint <cus@passwd.hu>
Sun, 2 Oct 2011 09:00:40 +0000 (11:00 +0200)
committerMarton Balint <cus@passwd.hu>
Sun, 2 Oct 2011 19:21:46 +0000 (21:21 +0200)
ffplay.c

index 66a17e813b9e7c5496630b4caddd159c8976d06f..d346bc5cc9940eea2413cad42f4d8f39d3020f3c 100644 (file)
--- a/ffplay.c
+++ b/ffplay.c
@@ -2183,8 +2183,15 @@ static int stream_component_open(VideoState *is, int stream_index)
     if(codec->capabilities & CODEC_CAP_DR1)
         avctx->flags |= CODEC_FLAG_EMU_EDGE;
 
-    wanted_spec.freq = avctx->sample_rate;
-    wanted_spec.channels = avctx->channels;
+    if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) {
+        if(avctx->sample_rate <= 0 || avctx->channels <= 0){
+            fprintf(stderr, "Invalid sample rate or channel count\n");
+            return -1;
+        }
+        wanted_spec.freq = avctx->sample_rate;
+        wanted_spec.channels = avctx->channels;
+    }
+
     if (!codec ||
         avcodec_open2(avctx, codec, &opts) < 0)
         return -1;
@@ -2195,10 +2202,6 @@ static int stream_component_open(VideoState *is, int stream_index)
 
     /* prepare audio output */
     if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) {
-        if(avctx->sample_rate <= 0 || avctx->channels <= 0){
-            fprintf(stderr, "Invalid sample rate or channel count\n");
-            return -1;
-        }
         wanted_spec.format = AUDIO_S16SYS;
         wanted_spec.silence = 0;
         wanted_spec.samples = SDL_AUDIO_BUFFER_SIZE;
@@ -2225,7 +2228,7 @@ static int stream_component_open(VideoState *is, int stream_index)
         is->audio_diff_avg_count = 0;
         /* since we do not have a precise anough audio fifo fullness,
            we correct audio sync only if larger than this threshold */
-        is->audio_diff_threshold = 2.0 * SDL_AUDIO_BUFFER_SIZE / avctx->sample_rate;
+        is->audio_diff_threshold = 2.0 * SDL_AUDIO_BUFFER_SIZE / wanted_spec.freq;
 
         memset(&is->audio_pkt, 0, sizeof(is->audio_pkt));
         packet_queue_init(&is->audioq);