autoexit
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 4 Feb 2010 01:54:24 +0000 (01:54 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 4 Feb 2010 01:54:24 +0000 (01:54 +0000)
implements issue1019

Originally committed as revision 21634 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffplay.c

index 7be73b0..dbe5001 100644 (file)
--- a/ffplay.c
+++ b/ffplay.c
@@ -227,6 +227,7 @@ static enum AVDiscard skip_loop_filter= AVDISCARD_DEFAULT;
 static int error_recognition = FF_ER_CAREFUL;
 static int error_concealment = 3;
 static int decoder_reorder_pts= -1;
 static int error_recognition = FF_ER_CAREFUL;
 static int error_concealment = 3;
 static int decoder_reorder_pts= -1;
+static int autoexit;
 
 /* current context */
 static int is_full_screen;
 
 /* current context */
 static int is_full_screen;
@@ -2102,6 +2103,10 @@ static int decode_thread(void *arg)
                 packet_queue_put(&is->videoq, pkt);
             }
             SDL_Delay(10);
                 packet_queue_put(&is->videoq, pkt);
             }
             SDL_Delay(10);
+            if(autoexit && is->audioq.size + is->videoq.size + is->subtitleq.size ==0){
+                ret=AVERROR_EOF;
+                goto fail;
+            }
             continue;
         }
         ret = av_read_frame(ic, pkt);
             continue;
         }
         ret = av_read_frame(ic, pkt);
@@ -2557,6 +2562,7 @@ static const OptionDef options[] = {
     { "ec", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_concealment}, "set error concealment options",  "bit_mask" },
     { "sync", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
     { "threads", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" },
     { "ec", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_concealment}, "set error concealment options",  "bit_mask" },
     { "sync", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
     { "threads", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" },
+    { "autoexit", OPT_BOOL | OPT_EXPERT, {(void*)&autoexit}, "exit at the end", "" },
     { "default", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" },
     { NULL, },
 };
     { "default", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" },
     { NULL, },
 };