Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d4b7e3de0 | ||
|
|
1674a4ec82 | ||
|
|
ce370bee60 | ||
|
|
2a1f4539f6 | ||
|
|
03018611f8 | ||
|
|
e6c3acaa6f |
6
NEWS
6
NEWS
@@ -1,6 +1,10 @@
|
||||
ver 0.15.16 (2010/??/??)
|
||||
ver 0.15.16 (2011/03/13)
|
||||
* output:
|
||||
- ao: initialize the ao_sample_format struct
|
||||
- jack: fix crash with mono playback
|
||||
* encoders:
|
||||
- lame: explicitly configure the output sample rate
|
||||
* update: log all file permission problems
|
||||
|
||||
|
||||
ver 0.15.15 (2010/11/08)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.60)
|
||||
AC_INIT(mpd, 0.15.16~git, musicpd-dev-team@lists.sourceforge.net)
|
||||
AC_INIT(mpd, 0.15.16, musicpd-dev-team@lists.sourceforge.net)
|
||||
AC_CONFIG_SRCDIR([src/main.c])
|
||||
AM_INIT_AUTOMAKE([foreign 1.9 dist-bzip2])
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
#undef G_LOG_DOMAIN
|
||||
#define G_LOG_DOMAIN "ao"
|
||||
|
||||
/* An ao_sample_format, with all fields set to zero: */
|
||||
static const ao_sample_format OUR_AO_FORMAT_INITIALIZER;
|
||||
|
||||
static unsigned ao_output_ref;
|
||||
|
||||
struct ao_data {
|
||||
@@ -166,7 +169,7 @@ static bool
|
||||
ao_output_open(void *data, struct audio_format *audio_format,
|
||||
GError **error)
|
||||
{
|
||||
ao_sample_format format;
|
||||
ao_sample_format format = OUR_AO_FORMAT_INITIALIZER;
|
||||
struct ao_data *ad = (struct ao_data *)data;
|
||||
|
||||
/* support for 24 bit samples in libao is currently dubious,
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#undef G_LOG_DOMAIN
|
||||
#define G_LOG_DOMAIN "jack"
|
||||
|
||||
static const size_t sample_size = sizeof(jack_default_audio_sample_t);
|
||||
static const size_t jack_sample_size = sizeof(jack_default_audio_sample_t);
|
||||
|
||||
static const char *const port_names[2] = {
|
||||
"left", "right",
|
||||
@@ -118,14 +118,15 @@ mpd_jack_process(jack_nframes_t nframes, void *arg)
|
||||
|
||||
for (unsigned i = 0; i < G_N_ELEMENTS(jd->ringbuffer); ++i) {
|
||||
available = jack_ringbuffer_read_space(jd->ringbuffer[i]);
|
||||
assert(available % sample_size == 0);
|
||||
available /= sample_size;
|
||||
assert(available % jack_sample_size == 0);
|
||||
available /= jack_sample_size;
|
||||
if (available > nframes)
|
||||
available = nframes;
|
||||
|
||||
out = jack_port_get_buffer(jd->ports[i], nframes);
|
||||
jack_ringbuffer_read(jd->ringbuffer[i],
|
||||
(char *)out, available * sample_size);
|
||||
(char *)out,
|
||||
available * jack_sample_size);
|
||||
|
||||
while (available < nframes)
|
||||
/* ringbuffer underrun, fill with silence */
|
||||
@@ -422,7 +423,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error)
|
||||
/* send data symmetrically */
|
||||
space = space1;
|
||||
|
||||
if (space >= frame_size)
|
||||
if (space >= jack_sample_size)
|
||||
break;
|
||||
|
||||
/* XXX do something more intelligent to
|
||||
@@ -430,7 +431,7 @@ mpd_jack_play(void *data, const void *chunk, size_t size, GError **error)
|
||||
g_usleep(1000);
|
||||
}
|
||||
|
||||
space /= sample_size;
|
||||
space /= jack_sample_size;
|
||||
if (space < size)
|
||||
size = space;
|
||||
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
#ifndef MPD_PIPE_H
|
||||
#define MPD_PIPE_H
|
||||
|
||||
#ifndef NDEBUG
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifndef NDEBUG
|
||||
struct audio_format;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -254,6 +254,9 @@ stat_directory(const struct directory *directory, struct stat *st)
|
||||
if (path_fs == NULL)
|
||||
return -1;
|
||||
ret = stat(path_fs, st);
|
||||
if (ret < 0)
|
||||
g_warning("Failed to stat %s: %s", path_fs, g_strerror(errno));
|
||||
|
||||
g_free(path_fs);
|
||||
return ret;
|
||||
}
|
||||
@@ -270,6 +273,9 @@ stat_directory_child(const struct directory *parent, const char *name,
|
||||
return -1;
|
||||
|
||||
ret = stat(path_fs, st);
|
||||
if (ret < 0)
|
||||
g_warning("Failed to stat %s: %s", path_fs, g_strerror(errno));
|
||||
|
||||
g_free(path_fs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user