@ -207,6 +207,7 @@ typedef struct VideoState {
char filename [ 1024 ] ;
int width , height , xleft , ytop ;
int step ;
# if CONFIG_AVFILTER
AVFilterContext * out_video_filter ; ///<the last filter in the video chain
@ -240,7 +241,6 @@ static int show_status = 1;
static int av_sync_type = AV_SYNC_AUDIO_MASTER ;
static int64_t start_time = AV_NOPTS_VALUE ;
static int64_t duration = AV_NOPTS_VALUE ;
static int step = 0 ;
static int thread_count = 1 ;
static int workaround_bugs = 1 ;
static int fast = 0 ;
@ -1794,9 +1794,8 @@ static int video_thread(void *arg)
if ( ret < 0 )
goto the_end ;
if ( step )
if ( cur_stream )
stream_toggle_pause ( cur_stream ) ;
if ( cur_stream & & cur_stream - > step )
stream_toggle_pause ( cur_stream ) ;
}
the_end :
# if CONFIG_AVFILTER
@ -2648,21 +2647,18 @@ static void toggle_full_screen(void)
video_open ( cur_stream ) ;
}
static void toggle_pause ( void )
static void toggle_pause ( VideoState * is )
{
if ( cur_stream )
stream_toggle_pause ( cur_stream ) ;
step = 0 ;
stream_toggle_pause ( is ) ;
is - > step = 0 ;
}
static void step_to_next_frame ( void )
static void step_to_next_frame ( VideoState * is )
{
if ( cur_stream ) {
/* if the stream is paused unpause it, then step */
if ( cur_stream - > paused )
stream_toggle_pause ( cur_stream ) ;
}
step = 1 ;
/* if the stream is paused unpause it, then step */
if ( is - > paused )
stream_toggle_pause ( is ) ;
is - > step = 1 ;
}
static void toggle_audio_display ( void )
@ -2702,10 +2698,12 @@ static void event_loop(void)
break ;
case SDLK_p :
case SDLK_SPACE :
toggle_pause ( ) ;
if ( cur_stream )
toggle_pause ( cur_stream ) ;
break ;
case SDLK_s : //S: Step to next frame
step_to_next_frame ( ) ;
if ( cur_stream )
step_to_next_frame ( cur_stream ) ;
break ;
case SDLK_a :
if ( cur_stream )