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
debc8558
Commit
debc8558
authored
8 years ago
by
Max Kellermann
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v0.19.x'
parents
10e32454
49c04ccf
sisyphus
0.23.15-alt1
0.23.14-alt1
0.23.13-alt1
0.23.12-alt1
0.23.11-alt1
0.23.8-alt3
0.23.8-alt2
0.23.8-alt1
0.21.24-alt1.1
0.21.24-alt1
0.20.23-alt3
0.20.23-alt2
0.20.23-alt1
0.20.21-alt1
0.20.15-alt1
mpd/0.20.6-alt1
gb-sisyphus-task339776.6100
gb-sisyphus-task337393.100
gb-sisyphus-task337176.300
gb-sisyphus-task334590.100
gb-sisyphus-task333607.100
gb-sisyphus-task331543.2500
gb-sisyphus-task328663.4700
gb-sisyphus-task325064.100
gb-sisyphus-task319111.4000
gb-sisyphus-task313704.100
gb-sisyphus-task312885.100
gb-sisyphus-task308905.3200
gb-sisyphus-task305294.500
gb-sisyphus-task304007.100
gb-sisyphus-task303674.1700
gb-sisyphus-task298681.300
gb-sisyphus-task296051.1000
gb-sisyphus-task274827.100
gb-sisyphus-task269249.2000
gb-sisyphus-task266579.400
gb-sisyphus-task258132.600
gb-sisyphus-task254601.200
gb-sisyphus-task253310.100
gb-sisyphus-task252214.300
gb-sisyphus-task251539.6100
gb-sisyphus-task247988.7000
gb-sisyphus-task238768.6000
gb-sisyphus-task229151.100
gb-sisyphus-task227574.200
gb-sisyphus-task226762.6000
gb-sisyphus-task219546.1700
gb-sisyphus-task213491.100
gb-sisyphus-task198806.100
gb-sisyphus-task181400.100
gb-p9-task277538.2600
gb-c9f2-task327704.1100
No related merge requests found
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
36 additions
and
25 deletions
+36
-25
NEWS
NEWS
+5
-0
mpdconf.example
doc/mpdconf.example
+1
-1
FfmpegDecoderPlugin.cxx
src/decoder/plugins/FfmpegDecoderPlugin.cxx
+1
-1
SidplayDecoderPlugin.cxx
src/decoder/plugins/SidplayDecoderPlugin.cxx
+12
-8
CompositeStorage.cxx
src/storage/CompositeStorage.cxx
+6
-12
CompositeStorage.hxx
src/storage/CompositeStorage.hxx
+9
-2
TagItem.hxx
src/tag/TagItem.hxx
+2
-1
No files found.
NEWS
View file @
debc8558
...
@@ -54,6 +54,11 @@ ver 0.20 (not yet released)
...
@@ -54,6 +54,11 @@ ver 0.20 (not yet released)
* update
* update
- apply .mpdignore matches to subdirectories
- apply .mpdignore matches to subdirectories
ver 0.19.20 (not yet released)
* decoder
- ffmpeg: ignore empty packets
- sidplay: fix playback speed with libsidplayfp
ver 0.19.19 (2016/08/23)
ver 0.19.19 (2016/08/23)
* decoder
* decoder
- ffmpeg: bug fix for FFmpeg 3.1 support
- ffmpeg: bug fix for FFmpeg 3.1 support
...
...
This diff is collapsed.
Click to expand it.
doc/mpdconf.example
View file @
debc8558
...
@@ -165,7 +165,7 @@
...
@@ -165,7 +165,7 @@
# Permissions #################################################################
# Permissions #################################################################
#
#
# If this setting is set, MPD will require password authorization. The password
# If this setting is set, MPD will require password authorization. The password
#
can
setting can be specified multiple times for different password profiles.
# setting can be specified multiple times for different password profiles.
#
#
#password "password@read,add,control,admin"
#password "password@read,add,control,admin"
#
#
...
...
This diff is collapsed.
Click to expand it.
src/decoder/plugins/FfmpegDecoderPlugin.cxx
View file @
debc8558
...
@@ -757,7 +757,7 @@ FfmpegDecode(Decoder &decoder, InputStream &input,
...
@@ -757,7 +757,7 @@ FfmpegDecode(Decoder &decoder, InputStream &input,
FfmpegCheckTag
(
decoder
,
input
,
format_context
,
audio_stream
);
FfmpegCheckTag
(
decoder
,
input
,
format_context
,
audio_stream
);
#endif
#endif
if
(
packet
.
stream_index
==
audio_stream
)
{
if
(
packet
.
s
ize
>
0
&&
packet
.
s
tream_index
==
audio_stream
)
{
cmd
=
ffmpeg_send_packet
(
decoder
,
input
,
cmd
=
ffmpeg_send_packet
(
decoder
,
input
,
packet
,
packet
,
*
codec_context
,
*
codec_context
,
...
...
This diff is collapsed.
Click to expand it.
src/decoder/plugins/SidplayDecoderPlugin.cxx
View file @
debc8558
...
@@ -357,12 +357,19 @@ sidplay_file_decode(Decoder &decoder, Path path_fs)
...
@@ -357,12 +357,19 @@ sidplay_file_decode(Decoder &decoder, Path path_fs)
DecoderCommand
cmd
;
DecoderCommand
cmd
;
do
{
do
{
short
buffer
[
4096
];
short
buffer
[
4096
];
size_t
nbytes
;
nbytes
=
player
.
play
(
buffer
,
ARRAY_SIZE
(
buffer
));
const
auto
result
=
player
.
play
(
buffer
,
ARRAY_SIZE
(
buffer
));
if
(
nbytes
=
=
0
)
if
(
result
<
=
0
)
break
;
break
;
#ifdef HAVE_SIDPLAYFP
/* libsidplayfp returns the number of samples */
const
size_t
nbytes
=
result
*
sizeof
(
buffer
[
0
]);
#else
/* libsidplay2 returns the number of bytes */
const
size_t
nbytes
=
result
;
#endif
decoder_timestamp
(
decoder
,
(
double
)
player
.
time
()
/
timebase
);
decoder_timestamp
(
decoder
,
(
double
)
player
.
time
()
/
timebase
);
cmd
=
decoder_data
(
decoder
,
nullptr
,
buffer
,
nbytes
,
0
);
cmd
=
decoder_data
(
decoder
,
nullptr
,
buffer
,
nbytes
,
0
);
...
@@ -379,12 +386,9 @@ sidplay_file_decode(Decoder &decoder, Path path_fs)
...
@@ -379,12 +386,9 @@ sidplay_file_decode(Decoder &decoder, Path path_fs)
}
}
/* ignore data until target time is reached */
/* ignore data until target time is reached */
while
(
data_time
<
target_time
)
{
while
(
data_time
<
target_time
&&
nbytes
=
player
.
play
(
buffer
,
ARRAY_SIZE
(
buffer
));
player
.
play
(
buffer
,
ARRAY_SIZE
(
buffer
))
>
0
)
if
(
nbytes
==
0
)
break
;
data_time
=
player
.
time
();
data_time
=
player
.
time
();
}
decoder_command_finished
(
decoder
);
decoder_command_finished
(
decoder
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/storage/CompositeStorage.cxx
View file @
debc8558
...
@@ -266,22 +266,13 @@ CompositeStorage::FindStorage(const char *uri) const
...
@@ -266,22 +266,13 @@ CompositeStorage::FindStorage(const char *uri) const
return
result
;
return
result
;
}
}
CompositeStorage
::
FindResult
CompositeStorage
::
FindStorage
(
const
char
*
uri
,
Error
&
error
)
const
{
auto
result
=
FindStorage
(
uri
);
if
(
result
.
directory
==
nullptr
)
error
.
Set
(
composite_domain
,
"No such directory"
);
return
result
;
}
bool
bool
CompositeStorage
::
GetInfo
(
const
char
*
uri
,
bool
follow
,
StorageFileInfo
&
info
,
CompositeStorage
::
GetInfo
(
const
char
*
uri
,
bool
follow
,
StorageFileInfo
&
info
,
Error
&
error
)
Error
&
error
)
{
{
const
ScopeLock
protect
(
mutex
);
const
ScopeLock
protect
(
mutex
);
auto
f
=
FindStorage
(
uri
,
error
);
auto
f
=
FindStorage
(
uri
);
if
(
f
.
directory
->
storage
!=
nullptr
&&
if
(
f
.
directory
->
storage
!=
nullptr
&&
f
.
directory
->
storage
->
GetInfo
(
f
.
uri
,
follow
,
info
,
error
))
f
.
directory
->
storage
->
GetInfo
(
f
.
uri
,
follow
,
info
,
error
))
return
true
;
return
true
;
...
@@ -296,6 +287,7 @@ CompositeStorage::GetInfo(const char *uri, bool follow, StorageFileInfo &info,
...
@@ -296,6 +287,7 @@ CompositeStorage::GetInfo(const char *uri, bool follow, StorageFileInfo &info,
return
true
;
return
true
;
}
}
error
.
Set
(
composite_domain
,
"No such directory"
);
return
false
;
return
false
;
}
}
...
@@ -305,13 +297,15 @@ CompositeStorage::OpenDirectory(const char *uri,
...
@@ -305,13 +297,15 @@ CompositeStorage::OpenDirectory(const char *uri,
{
{
const
ScopeLock
protect
(
mutex
);
const
ScopeLock
protect
(
mutex
);
auto
f
=
FindStorage
(
uri
,
error
);
auto
f
=
FindStorage
(
uri
);
const
Directory
*
directory
=
f
.
directory
->
Find
(
f
.
uri
);
const
Directory
*
directory
=
f
.
directory
->
Find
(
f
.
uri
);
if
(
directory
==
nullptr
||
directory
->
children
.
empty
())
{
if
(
directory
==
nullptr
||
directory
->
children
.
empty
())
{
/* no virtual directories here */
/* no virtual directories here */
if
(
f
.
directory
->
storage
==
nullptr
)
if
(
f
.
directory
->
storage
==
nullptr
)
{
error
.
Set
(
composite_domain
,
"No such directory"
);
return
nullptr
;
return
nullptr
;
}
return
f
.
directory
->
storage
->
OpenDirectory
(
f
.
uri
,
error
);
return
f
.
directory
->
storage
->
OpenDirectory
(
f
.
uri
,
error
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/storage/CompositeStorage.hxx
View file @
debc8558
...
@@ -44,7 +44,7 @@ class CompositeStorage final : public Storage {
...
@@ -44,7 +44,7 @@ class CompositeStorage final : public Storage {
*/
*/
struct
Directory
{
struct
Directory
{
/**
/**
* The #Storage mounted n this virtual directory. All
* The #Storage mounted
i
n this virtual directory. All
* "leaf" Directory instances must have a #Storage.
* "leaf" Directory instances must have a #Storage.
* Other Directory instances may have one, and child
* Other Directory instances may have one, and child
* mounts will be "mixed" in.
* mounts will be "mixed" in.
...
@@ -154,9 +154,16 @@ private:
...
@@ -154,9 +154,16 @@ private:
}
}
}
}
/**
* Follow the given URI path, and find the outermost directory
* which is a #Storage mount point. If there are no mounts,
* it returns the root directory (with a nullptr "storage"
* attribute, of course). FindResult::uri contains the
* remaining unused part of the URI (may be empty if all of
* the URI was used).
*/
gcc_pure
gcc_pure
FindResult
FindStorage
(
const
char
*
uri
)
const
;
FindResult
FindStorage
(
const
char
*
uri
)
const
;
FindResult
FindStorage
(
const
char
*
uri
,
Error
&
error
)
const
;
const
char
*
MapToRelativeUTF8
(
const
Directory
&
directory
,
const
char
*
MapToRelativeUTF8
(
const
Directory
&
directory
,
const
char
*
uri
)
const
;
const
char
*
uri
)
const
;
...
...
This diff is collapsed.
Click to expand it.
src/tag/TagItem.hxx
View file @
debc8558
...
@@ -34,13 +34,14 @@ struct TagItem {
...
@@ -34,13 +34,14 @@ struct TagItem {
/**
/**
* the value of this tag; this is a variable length string
* the value of this tag; this is a variable length string
*/
*/
char
value
[
sizeof
(
long
)
-
sizeof
(
type
)
];
char
value
[
1
];
TagItem
()
=
default
;
TagItem
()
=
default
;
TagItem
(
const
TagItem
&
other
)
=
delete
;
TagItem
(
const
TagItem
&
other
)
=
delete
;
TagItem
&
operator
=
(
const
TagItem
&
other
)
=
delete
;
TagItem
&
operator
=
(
const
TagItem
&
other
)
=
delete
;
};
};
static_assert
(
sizeof
(
TagItem
)
==
2
,
"Unexpected size"
);
static_assert
(
alignof
(
TagItem
)
==
1
,
"Unexpected alignment"
);
static_assert
(
alignof
(
TagItem
)
==
1
,
"Unexpected alignment"
);
#endif
#endif
This diff is collapsed.
Click to expand it.
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