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
84d31e24
Commit
84d31e24
authored
Oct 28, 2017
by
Marton Balint
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ffplay: create the window and the renderer before starting playback
Signed-off-by:
Marton Balint
<
cus@passwd.hu
>
parent
626d200e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
32 deletions
+35
-32
ffplay.c
fftools/ffplay.c
+35
-32
No files found.
fftools/ffplay.c
View file @
84d31e24
...
...
@@ -361,6 +361,7 @@ static AVPacket flush_pkt;
static
SDL_Window
*
window
;
static
SDL_Renderer
*
renderer
;
static
SDL_RendererInfo
renderer_info
=
{
0
};
static
const
struct
TextureFormatEntry
{
enum
AVPixelFormat
format
;
...
...
@@ -1320,38 +1321,15 @@ static int video_open(VideoState *is)
h
=
default_height
;
}
if
(
!
window
)
{
int
flags
=
SDL_WINDOW_SHOWN
;
if
(
!
window_title
)
window_title
=
input_filename
;
if
(
is_full_screen
)
flags
|=
SDL_WINDOW_FULLSCREEN_DESKTOP
;
if
(
borderless
)
flags
|=
SDL_WINDOW_BORDERLESS
;
else
flags
|=
SDL_WINDOW_RESIZABLE
;
window
=
SDL_CreateWindow
(
window_title
,
SDL_WINDOWPOS_UNDEFINED
,
SDL_WINDOWPOS_UNDEFINED
,
w
,
h
,
flags
);
SDL_SetHint
(
SDL_HINT_RENDER_SCALE_QUALITY
,
"linear"
);
if
(
window
)
{
SDL_RendererInfo
info
;
renderer
=
SDL_CreateRenderer
(
window
,
-
1
,
SDL_RENDERER_ACCELERATED
|
SDL_RENDERER_PRESENTVSYNC
);
if
(
!
renderer
)
{
av_log
(
NULL
,
AV_LOG_WARNING
,
"Failed to initialize a hardware accelerated renderer: %s
\n
"
,
SDL_GetError
());
renderer
=
SDL_CreateRenderer
(
window
,
-
1
,
0
);
}
if
(
renderer
)
{
if
(
!
SDL_GetRendererInfo
(
renderer
,
&
info
))
av_log
(
NULL
,
AV_LOG_VERBOSE
,
"Initialized %s renderer.
\n
"
,
info
.
name
);
}
}
}
else
{
SDL_SetWindowSize
(
window
,
w
,
h
);
}
if
(
!
window_title
)
window_title
=
input_filename
;
SDL_SetWindowTitle
(
window
,
window_title
);
if
(
!
window
||
!
renderer
)
{
av_log
(
NULL
,
AV_LOG_FATAL
,
"SDL: could not set video mode - exiting
\n
"
);
do_exit
(
is
);
}
SDL_SetWindowSize
(
window
,
w
,
h
);
SDL_SetWindowPosition
(
window
,
SDL_WINDOWPOS_CENTERED
,
SDL_WINDOWPOS_CENTERED
);
if
(
is_full_screen
)
SDL_SetWindowFullscreen
(
window
,
SDL_WINDOW_FULLSCREEN_DESKTOP
);
SDL_ShowWindow
(
window
);
is
->
width
=
w
;
is
->
height
=
h
;
...
...
@@ -1362,7 +1340,7 @@ static int video_open(VideoState *is)
/* display the current picture, if any */
static
void
video_display
(
VideoState
*
is
)
{
if
(
!
window
)
if
(
!
is
->
width
)
video_open
(
is
);
SDL_SetRenderDrawColor
(
renderer
,
0
,
0
,
0
,
255
);
...
...
@@ -3744,6 +3722,31 @@ int main(int argc, char **argv)
av_init_packet
(
&
flush_pkt
);
flush_pkt
.
data
=
(
uint8_t
*
)
&
flush_pkt
;
if
(
!
display_disable
)
{
int
flags
=
SDL_WINDOW_HIDDEN
;
if
(
borderless
)
flags
|=
SDL_WINDOW_BORDERLESS
;
else
flags
|=
SDL_WINDOW_RESIZABLE
;
window
=
SDL_CreateWindow
(
program_name
,
SDL_WINDOWPOS_UNDEFINED
,
SDL_WINDOWPOS_UNDEFINED
,
default_width
,
default_height
,
flags
);
SDL_SetHint
(
SDL_HINT_RENDER_SCALE_QUALITY
,
"linear"
);
if
(
window
)
{
renderer
=
SDL_CreateRenderer
(
window
,
-
1
,
SDL_RENDERER_ACCELERATED
|
SDL_RENDERER_PRESENTVSYNC
);
if
(
!
renderer
)
{
av_log
(
NULL
,
AV_LOG_WARNING
,
"Failed to initialize a hardware accelerated renderer: %s
\n
"
,
SDL_GetError
());
renderer
=
SDL_CreateRenderer
(
window
,
-
1
,
0
);
}
if
(
renderer
)
{
if
(
!
SDL_GetRendererInfo
(
renderer
,
&
renderer_info
))
av_log
(
NULL
,
AV_LOG_VERBOSE
,
"Initialized %s renderer.
\n
"
,
renderer_info
.
name
);
}
}
if
(
!
window
||
!
renderer
)
{
av_log
(
NULL
,
AV_LOG_FATAL
,
"Failed to create window or renderer: %s"
,
SDL_GetError
());
do_exit
(
NULL
);
}
}
is
=
stream_open
(
input_filename
,
file_iformat
);
if
(
!
is
)
{
av_log
(
NULL
,
AV_LOG_FATAL
,
"Failed to initialize VideoState!
\n
"
);
...
...
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