@ -922,7 +922,7 @@ static void do_exit(VideoState *is)
exit ( 0 ) ;
}
static int video_open ( VideoState * is ) {
static int video_open ( VideoState * is , int force_set_video_mode ) {
int flags = SDL_HWSURFACE | SDL_ASYNCBLIT | SDL_HWACCEL ;
int w , h ;
@ -949,7 +949,7 @@ static int video_open(VideoState *is){
h = 480 ;
}
if ( screen & & is - > width = = screen - > w & & screen - > w = = w
& & is - > height = = screen - > h & & screen - > h = = h )
& & is - > height = = screen - > h & & screen - > h = = h & & ! force_set_video_mode )
return 0 ;
screen = SDL_SetVideoMode ( w , h , 0 , flags ) ;
if ( ! screen ) {
@ -970,7 +970,7 @@ static int video_open(VideoState *is){
static void video_display ( VideoState * is )
{
if ( ! screen )
video_open ( is ) ;
video_open ( is , 0 ) ;
if ( is - > audio_st & & is - > show_mode ! = SHOW_MODE_VIDEO )
video_audio_display ( is ) ;
else if ( is - > video_st )
@ -2043,7 +2043,8 @@ static int audio_decode_frame(VideoState *is, double *pts_ptr)
AVPacket * pkt = & is - > audio_pkt ;
AVCodecContext * dec = is - > audio_st - > codec ;
int len1 , len2 , data_size , resampled_data_size ;
int64_t dec_channel_layout , got_frame ;
int64_t dec_channel_layout ;
int got_frame ;
double pts ;
int new_packet = 0 ;
int flush_complete = 0 ;
@ -2144,6 +2145,7 @@ static int audio_decode_frame(VideoState *is, double *pts_ptr)
/* free the current packet */
if ( pkt - > data )
av_free_packet ( pkt ) ;
memset ( pkt_temp , 0 , sizeof ( * pkt_temp ) ) ;
if ( is - > paused | | is - > audioq . abort_request ) {
return - 1 ;
@ -2781,7 +2783,7 @@ static void toggle_full_screen(VideoState *is)
is - > pictq [ i ] . reallocate = 1 ;
}
# endif
video_open ( is ) ;
video_open ( is , 1 ) ;
}
static void toggle_pause ( VideoState * is )
@ -2850,6 +2852,12 @@ static void event_loop(VideoState *cur_stream)
case SDLK_w :
toggle_audio_display ( cur_stream ) ;
break ;
case SDLK_PAGEUP :
incr = 600.0 ;
goto do_seek ;
case SDLK_PAGEDOWN :
incr = - 600.0 ;
goto do_seek ;
case SDLK_LEFT :
incr = - 10.0 ;
goto do_seek ;
@ -2933,7 +2941,7 @@ static void event_loop(VideoState *cur_stream)
do_exit ( cur_stream ) ;
break ;
case FF_ALLOC_EVENT :
video_open ( event . user . data1 ) ;
video_open ( event . user . data1 , 0 ) ;
alloc_picture ( event . user . data1 ) ;
break ;
case FF_REFRESH_EVENT :
@ -3119,6 +3127,7 @@ static int opt_help(const char *opt, const char *arg)
" s activate frame-step mode \n "
" left/right seek backward/forward 10 seconds \n "
" down/up seek backward/forward 1 minute \n "
" page down/page up seek backward/forward 10 minutes \n "
" mouse click seek to percentage in file corresponding to fraction of width \n "
) ;
return 0 ;