/* current context */
static int is_full_screen;
-static PlayerState *cur_stream;
+static PlayerState *player;
static int64_t audio_callback_time;
static AVPacket flush_pkt;
static void video_display(PlayerState *is)
{
if (!screen)
- video_open(cur_stream);
+ video_open(player);
if (is->audio_st && is->show_audio)
video_audio_display(is);
else if (is->video_st)
static void do_exit(void)
{
- if (cur_stream) {
- player_close(cur_stream);
- cur_stream = NULL;
+ if (player) {
+ player_close(player);
+ player = NULL;
}
uninit_opts();
avformat_network_deinit();
if (step)
- if (cur_stream)
- stream_pause(cur_stream);
+ if (player)
+ stream_pause(player);
}
the_end:
#if CONFIG_AVFILTER
SDL_Delay(10);
if (is->audioq.size + is->videoq.size + is->subtitleq.size == 0) {
if (loop != 1 && (!loop || --loop)) {
- stream_seek(cur_stream, start_time != AV_NOPTS_VALUE ? start_time : 0, 0, 0);
+ stream_seek(player, start_time != AV_NOPTS_VALUE ? start_time : 0, 0, 0);
} else if (!noautoexit) {
ret = AVERROR_EOF;
goto fail;
/* OS X needs to empty the picture_queue */
int i;
for (i = 0; i < VIDEO_PICTURE_QUEUE_SIZE; i++)
- cur_stream->pictq[i].reallocate = 1;
+ player->pictq[i].reallocate = 1;
#endif
is_full_screen = !is_full_screen;
- video_open(cur_stream);
+ video_open(player);
}
static void toggle_pause(void)
{
- if (cur_stream)
- stream_pause(cur_stream);
+ if (player)
+ stream_pause(player);
step = 0;
}
static void step_to_next_frame(void)
{
- if (cur_stream) {
+ if (player) {
/* if the stream is paused unpause it, then step */
- if (cur_stream->paused)
- stream_pause(cur_stream);
+ if (player->paused)
+ stream_pause(player);
}
step = 1;
}
static void toggle_audio_display(void)
{
- if (cur_stream) {
+ if (player) {
int bgcolor = SDL_MapRGB(screen->format, 0x00, 0x00, 0x00);
- cur_stream->show_audio = (cur_stream->show_audio + 1) % 3;
+ player->show_audio = (player->show_audio + 1) % 3;
fill_rectangle(screen,
- cur_stream->xleft, cur_stream->ytop, cur_stream->width, cur_stream->height,
+ player->xleft, player->ytop, player->width, player->height,
bgcolor);
- SDL_UpdateRect(screen, cur_stream->xleft, cur_stream->ytop, cur_stream->width, cur_stream->height);
+ SDL_UpdateRect(screen, player->xleft, player->ytop, player->width, player->height);
}
}
step_to_next_frame();
break;
case SDLK_a:
- if (cur_stream)
- stream_cycle_channel(cur_stream, AVMEDIA_TYPE_AUDIO);
+ if (player)
+ stream_cycle_channel(player, AVMEDIA_TYPE_AUDIO);
break;
case SDLK_v:
- if (cur_stream)
- stream_cycle_channel(cur_stream, AVMEDIA_TYPE_VIDEO);
+ if (player)
+ stream_cycle_channel(player, AVMEDIA_TYPE_VIDEO);
break;
case SDLK_t:
- if (cur_stream)
- stream_cycle_channel(cur_stream, AVMEDIA_TYPE_SUBTITLE);
+ if (player)
+ stream_cycle_channel(player, AVMEDIA_TYPE_SUBTITLE);
break;
case SDLK_w:
toggle_audio_display();
break;
case SDLK_PAGEUP:
- seek_chapter(cur_stream, 1);
+ seek_chapter(player, 1);
break;
case SDLK_PAGEDOWN:
- seek_chapter(cur_stream, -1);
+ seek_chapter(player, -1);
break;
case SDLK_LEFT:
incr = -10.0;
case SDLK_DOWN:
incr = -60.0;
do_seek:
- if (cur_stream) {
+ if (player) {
if (seek_by_bytes) {
- if (cur_stream->video_stream >= 0 && cur_stream->video_current_pos >= 0) {
- pos = cur_stream->video_current_pos;
- } else if (cur_stream->audio_stream >= 0 && cur_stream->audio_pkt.pos >= 0) {
- pos = cur_stream->audio_pkt.pos;
+ if (player->video_stream >= 0 && player->video_current_pos >= 0) {
+ pos = player->video_current_pos;
+ } else if (player->audio_stream >= 0 && player->audio_pkt.pos >= 0) {
+ pos = player->audio_pkt.pos;
} else
- pos = avio_tell(cur_stream->ic->pb);
- if (cur_stream->ic->bit_rate)
- incr *= cur_stream->ic->bit_rate / 8.0;
+ pos = avio_tell(player->ic->pb);
+ if (player->ic->bit_rate)
+ incr *= player->ic->bit_rate / 8.0;
else
incr *= 180000.0;
pos += incr;
- stream_seek(cur_stream, pos, incr, 1);
+ stream_seek(player, pos, incr, 1);
} else {
- pos = get_master_clock(cur_stream);
+ pos = get_master_clock(player);
pos += incr;
- stream_seek(cur_stream, (int64_t)(pos * AV_TIME_BASE), (int64_t)(incr * AV_TIME_BASE), 0);
+ stream_seek(player, (int64_t)(pos * AV_TIME_BASE), (int64_t)(incr * AV_TIME_BASE), 0);
}
}
break;
break;
x = event.motion.x;
}
- if (cur_stream) {
- if (seek_by_bytes || cur_stream->ic->duration <= 0) {
- uint64_t size = avio_size(cur_stream->ic->pb);
- stream_seek(cur_stream, size*x/cur_stream->width, 0, 1);
+ if (player) {
+ if (seek_by_bytes || player->ic->duration <= 0) {
+ uint64_t size = avio_size(player->ic->pb);
+ stream_seek(player, size*x/player->width, 0, 1);
} else {
int64_t ts;
int ns, hh, mm, ss;
int tns, thh, tmm, tss;
- tns = cur_stream->ic->duration / 1000000LL;
+ tns = player->ic->duration / 1000000LL;
thh = tns / 3600;
tmm = (tns % 3600) / 60;
tss = (tns % 60);
- frac = x / cur_stream->width;
+ frac = x / player->width;
ns = frac * tns;
hh = ns / 3600;
mm = (ns % 3600) / 60;
ss = (ns % 60);
fprintf(stderr, "Seek to %2.0f%% (%2d:%02d:%02d) of total duration (%2d:%02d:%02d) \n", frac*100,
hh, mm, ss, thh, tmm, tss);
- ts = frac * cur_stream->ic->duration;
- if (cur_stream->ic->start_time != AV_NOPTS_VALUE)
- ts += cur_stream->ic->start_time;
- stream_seek(cur_stream, ts, 0, 0);
+ ts = frac * player->ic->duration;
+ if (player->ic->start_time != AV_NOPTS_VALUE)
+ ts += player->ic->start_time;
+ stream_seek(player, ts, 0, 0);
}
}
break;
case SDL_VIDEORESIZE:
- if (cur_stream) {
+ if (player) {
screen = SDL_SetVideoMode(event.resize.w, event.resize.h, 0,
SDL_HWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_HWACCEL);
- screen_width = cur_stream->width = event.resize.w;
- screen_height = cur_stream->height = event.resize.h;
+ screen_width = player->width = event.resize.w;
+ screen_height = player->height = event.resize.h;
}
break;
case SDL_QUIT:
break;
case FF_REFRESH_EVENT:
video_refresh_timer(event.user.data1);
- cur_stream->refresh = 0;
+ player->refresh = 0;
break;
default:
break;
av_init_packet(&flush_pkt);
flush_pkt.data = (uint8_t *)&flush_pkt;
- cur_stream = stream_open(input_filename, file_iformat);
+ player = stream_open(input_filename, file_iformat);
event_loop();