Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
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
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
af892e7e
Commit
af892e7e
authored
Jan 07, 2011
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
player_thread: make variables more local
parent
b5645ab2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
36 deletions
+19
-36
player_thread.c
src/player_thread.c
+19
-36
No files found.
src/player_thread.c
View file @
af892e7e
...
...
@@ -356,16 +356,9 @@ player_check_decoder_startup(struct player *player)
static
bool
player_send_silence
(
struct
player
*
player
)
{
struct
music_chunk
*
chunk
;
size_t
frame_size
=
audio_format_frame_size
(
&
player
->
play_audio_format
);
/* this formula ensures that we don't send
partial frames */
unsigned
num_frames
=
sizeof
(
chunk
->
data
)
/
frame_size
;
assert
(
audio_format_defined
(
&
player
->
play_audio_format
));
chunk
=
music_buffer_allocate
(
player_buffer
);
struct
music_chunk
*
chunk
=
music_buffer_allocate
(
player_buffer
);
if
(
chunk
==
NULL
)
{
g_warning
(
"Failed to allocate silence buffer"
);
return
false
;
...
...
@@ -375,6 +368,12 @@ player_send_silence(struct player *player)
chunk
->
audio_format
=
player
->
play_audio_format
;
#endif
size_t
frame_size
=
audio_format_frame_size
(
&
player
->
play_audio_format
);
/* this formula ensures that we don't send
partial frames */
unsigned
num_frames
=
sizeof
(
chunk
->
data
)
/
frame_size
;
chunk
->
times
=
-
1
.
0
;
/* undefined time stamp */
chunk
->
length
=
num_frames
*
frame_size
;
memset
(
chunk
->
data
,
0
,
chunk
->
length
);
...
...
@@ -396,8 +395,6 @@ static bool player_seek_decoder(struct player *player)
{
struct
song
*
song
=
pc
.
next_song
;
struct
decoder_control
*
dc
=
player
->
dc
;
double
where
;
bool
ret
;
assert
(
pc
.
next_song
!=
NULL
);
...
...
@@ -413,8 +410,7 @@ static bool player_seek_decoder(struct player *player)
/* re-start the decoder */
player_dc_start
(
player
,
player
->
pipe
);
ret
=
player_wait_for_decoder
(
player
);
if
(
!
ret
)
{
if
(
!
player_wait_for_decoder
(
player
))
{
/* decoder failure */
player_command_finished
();
return
false
;
...
...
@@ -435,8 +431,7 @@ static bool player_seek_decoder(struct player *player)
/* wait for the decoder to complete initialization */
while
(
player
->
decoder_starting
)
{
ret
=
player_check_decoder_startup
(
player
);
if
(
!
ret
)
{
if
(
!
player_check_decoder_startup
(
player
))
{
/* decoder failure */
player_command_finished
();
return
false
;
...
...
@@ -445,14 +440,13 @@ static bool player_seek_decoder(struct player *player)
/* send the SEEK command */
where
=
pc
.
seek_where
;
double
where
=
pc
.
seek_where
;
if
(
where
>
pc
.
total_time
)
where
=
pc
.
total_time
-
0
.
1
;
if
(
where
<
0
.
0
)
where
=
0
.
0
;
ret
=
dc_seek
(
dc
,
where
+
song
->
start_ms
/
1000
.
0
);
if
(
!
ret
)
{
if
(
!
dc_seek
(
dc
,
where
+
song
->
start_ms
/
1000
.
0
))
{
/* decoder failure */
player_command_finished
();
return
false
;
...
...
@@ -583,14 +577,12 @@ static void player_process_command(struct player *player)
static
void
update_song_tag
(
struct
song
*
song
,
const
struct
tag
*
new_tag
)
{
struct
tag
*
old_tag
;
if
(
song_is_file
(
song
))
/* don't update tags of local files, only remote
streams may change tags dynamically */
return
;
old_tag
=
song
->
tag
;
struct
tag
*
old_tag
=
song
->
tag
;
song
->
tag
=
tag_dup
(
new_tag
);
if
(
old_tag
!=
NULL
)
...
...
@@ -648,15 +640,14 @@ static bool
play_next_chunk
(
struct
player
*
player
)
{
struct
decoder_control
*
dc
=
player
->
dc
;
struct
music_chunk
*
chunk
=
NULL
;
unsigned
cross_fade_position
;
bool
success
;
if
(
!
audio_output_all_wait
(
64
))
/* the output pipe is still large enough, don't send
another chunk */
return
true
;
unsigned
cross_fade_position
;
struct
music_chunk
*
chunk
=
NULL
;
if
(
player
->
xfade
==
XFADE_ENABLED
&&
player_dc_at_next_song
(
player
)
&&
(
cross_fade_position
=
music_pipe_size
(
player
->
pipe
))
...
...
@@ -732,9 +723,7 @@ play_next_chunk(struct player *player)
/* play the current chunk */
success
=
play_chunk
(
player
->
song
,
chunk
,
&
player
->
play_audio_format
);
if
(
!
success
)
{
if
(
!
play_chunk
(
player
->
song
,
chunk
,
&
player
->
play_audio_format
))
{
music_buffer_return
(
player_buffer
,
chunk
);
player_lock
();
...
...
@@ -776,11 +765,9 @@ play_next_chunk(struct player *player)
static
bool
player_song_border
(
struct
player
*
player
)
{
char
*
uri
;
player
->
xfade
=
XFADE_UNKNOWN
;
uri
=
song_get_uri
(
player
->
song
);
char
*
uri
=
song_get_uri
(
player
->
song
);
g_message
(
"played
\"
%s
\"
"
,
uri
);
g_free
(
uri
);
...
...
@@ -875,15 +862,12 @@ static void do_play(struct decoder_control *dc)
if
(
player
.
decoder_starting
)
{
/* wait until the decoder is initialized completely */
bool
success
;
const
struct
song
*
song
;
success
=
player_check_decoder_startup
(
&
player
);
if
(
!
success
)
if
(
!
player_check_decoder_startup
(
&
player
))
break
;
/* seek to the beginning of the range */
song
=
decoder_current_song
(
dc
);
const
struct
song
*
song
=
decoder_current_song
(
dc
);
if
(
song
!=
NULL
&&
song
->
start_ms
>
0
&&
!
dc_seek
(
dc
,
song
->
start_ms
/
1000
.
0
))
player_dc_stop
(
&
player
);
...
...
@@ -1092,10 +1076,9 @@ static gpointer player_task(G_GNUC_UNUSED gpointer arg)
void
player_create
(
void
)
{
GError
*
e
=
NULL
;
assert
(
pc
.
thread
==
NULL
);
GError
*
e
=
NULL
;
pc
.
thread
=
g_thread_create
(
player_task
,
NULL
,
true
,
&
e
);
if
(
pc
.
thread
==
NULL
)
MPD_ERROR
(
"Failed to spawn player task: %s"
,
e
->
message
);
...
...
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