Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
84506ebd
Commit
84506ebd
authored
Aug 21, 2011
by
Marton Balint
Committed by
Michael Niedermayer
Aug 21, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ffplay: get rid of the global cur_stream variable
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
5db1f94b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
31 deletions
+33
-31
ffplay.c
ffplay.c
+33
-31
No files found.
ffplay.c
View file @
84506ebd
...
...
@@ -267,7 +267,6 @@ static char *vfilters = NULL;
/* current context */
static
int
is_full_screen
;
static
VideoState
*
cur_stream
;
static
int64_t
audio_callback_time
;
static
AVPacket
flush_pkt
;
...
...
@@ -887,11 +886,10 @@ static void stream_close(VideoState *is)
av_free
(
is
);
}
static
void
do_exit
(
void
)
static
void
do_exit
(
VideoState
*
is
)
{
if
(
cur_stream
)
{
stream_close
(
cur_stream
);
cur_stream
=
NULL
;
if
(
is
)
{
stream_close
(
is
);
}
uninit_opts
();
#if CONFIG_AVFILTER
...
...
@@ -942,7 +940,7 @@ static int video_open(VideoState *is){
#endif
if
(
!
screen
)
{
fprintf
(
stderr
,
"SDL: could not set video mode - exiting
\n
"
);
do_exit
();
do_exit
(
is
);
}
if
(
!
window_title
)
window_title
=
input_filename
;
...
...
@@ -958,7 +956,7 @@ static int video_open(VideoState *is){
static
void
video_display
(
VideoState
*
is
)
{
if
(
!
screen
)
video_open
(
cur_stream
);
video_open
(
is
);
if
(
is
->
audio_st
&&
is
->
show_mode
!=
SHOW_MODE_VIDEO
)
video_audio_display
(
is
);
else
if
(
is
->
video_st
)
...
...
@@ -1280,7 +1278,7 @@ static void alloc_picture(void *opaque)
fprintf
(
stderr
,
"Error: the video system does not support an image
\n
"
"size of %dx%d pixels. Try using -lowres or -vf
\"
scale=w:h
\"\n
"
"to reduce the image size.
\n
"
,
vp
->
width
,
vp
->
height
);
do_exit
();
do_exit
(
is
);
}
SDL_LockMutex
(
is
->
pictq_mutex
);
...
...
@@ -1794,8 +1792,8 @@ static int video_thread(void *arg)
if
(
ret
<
0
)
goto
the_end
;
if
(
cur_stream
&&
cur_stream
->
step
)
stream_toggle_pause
(
cur_stream
);
if
(
is
->
step
)
stream_toggle_pause
(
is
);
}
the_end:
#if CONFIG_AVFILTER
...
...
@@ -2496,7 +2494,7 @@ static int read_thread(void *arg)
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
(
is
,
start_time
!=
AV_NOPTS_VALUE
?
start_time
:
0
,
0
,
0
);
}
else
if
(
autoexit
){
ret
=
AVERROR_EOF
;
goto
fail
;
...
...
@@ -2641,10 +2639,10 @@ static void stream_cycle_channel(VideoState *is, int codec_type)
}
static
void
toggle_full_screen
(
void
)
static
void
toggle_full_screen
(
VideoState
*
is
)
{
is_full_screen
=
!
is_full_screen
;
video_open
(
cur_stream
);
video_open
(
is
);
}
static
void
toggle_pause
(
VideoState
*
is
)
...
...
@@ -2661,20 +2659,18 @@ static void step_to_next_frame(VideoState *is)
is
->
step
=
1
;
}
static
void
toggle_audio_display
(
void
)
static
void
toggle_audio_display
(
VideoState
*
is
)
{
if
(
cur_stream
)
{
int
bgcolor
=
SDL_MapRGB
(
screen
->
format
,
0x00
,
0x00
,
0x00
);
cur_stream
->
show_mode
=
(
cur_stream
->
show_mode
+
1
)
%
SHOW_MODE_NB
;
fill_rectangle
(
screen
,
cur_stream
->
xleft
,
cur_stream
->
ytop
,
cur_stream
->
width
,
cur_stream
->
height
,
bgcolor
);
SDL_UpdateRect
(
screen
,
cur_stream
->
xleft
,
cur_stream
->
ytop
,
cur_stream
->
width
,
cur_stream
->
height
);
}
int
bgcolor
=
SDL_MapRGB
(
screen
->
format
,
0x00
,
0x00
,
0x00
);
is
->
show_mode
=
(
is
->
show_mode
+
1
)
%
SHOW_MODE_NB
;
fill_rectangle
(
screen
,
is
->
xleft
,
is
->
ytop
,
is
->
width
,
is
->
height
,
bgcolor
);
SDL_UpdateRect
(
screen
,
is
->
xleft
,
is
->
ytop
,
is
->
width
,
is
->
height
);
}
/* handle an event sent by the GUI */
static
void
event_loop
(
void
)
static
void
event_loop
(
VideoState
*
cur_stream
)
{
SDL_Event
event
;
double
incr
,
pos
,
frac
;
...
...
@@ -2685,16 +2681,16 @@ static void event_loop(void)
switch
(
event
.
type
)
{
case
SDL_KEYDOWN
:
if
(
exit_on_keydown
)
{
do_exit
();
do_exit
(
cur_stream
);
break
;
}
switch
(
event
.
key
.
keysym
.
sym
)
{
case
SDLK_ESCAPE
:
case
SDLK_q
:
do_exit
();
do_exit
(
cur_stream
);
break
;
case
SDLK_f
:
toggle_full_screen
();
toggle_full_screen
(
cur_stream
);
break
;
case
SDLK_p
:
case
SDLK_SPACE
:
...
...
@@ -2718,7 +2714,8 @@ static void event_loop(void)
stream_cycle_channel
(
cur_stream
,
AVMEDIA_TYPE_SUBTITLE
);
break
;
case
SDLK_w
:
toggle_audio_display
();
if
(
cur_stream
)
toggle_audio_display
(
cur_stream
);
break
;
case
SDLK_LEFT
:
incr
=
-
10
.
0
;
...
...
@@ -2759,7 +2756,7 @@ static void event_loop(void)
break
;
case
SDL_MOUSEBUTTONDOWN
:
if
(
exit_on_mousedown
)
{
do_exit
();
do_exit
(
cur_stream
);
break
;
}
case
SDL_MOUSEMOTION
:
...
...
@@ -2806,7 +2803,7 @@ static void event_loop(void)
break
;
case
SDL_QUIT
:
case
FF_QUIT_EVENT
:
do_exit
();
do_exit
(
cur_stream
);
break
;
case
FF_ALLOC_EVENT
:
video_open
(
event
.
user
.
data1
);
...
...
@@ -3007,6 +3004,7 @@ static int opt_help(const char *opt, const char *arg)
int
main
(
int
argc
,
char
**
argv
)
{
int
flags
;
VideoState
*
is
;
av_log_set_flags
(
AV_LOG_SKIP_REPEATED
);
...
...
@@ -3063,9 +3061,13 @@ int main(int argc, char **argv)
av_init_packet
(
&
flush_pkt
);
flush_pkt
.
data
=
"FLUSH"
;
cur_stream
=
stream_open
(
input_filename
,
file_iformat
);
is
=
stream_open
(
input_filename
,
file_iformat
);
if
(
!
is
)
{
fprintf
(
stderr
,
"Failed to initialize VideoState!
\n
"
);
do_exit
(
NULL
);
}
event_loop
();
event_loop
(
is
);
/* never returns */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment