diff options
author | wm4 <wm4@nowhere> | 2013-04-05 19:47:51 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-05-12 21:24:54 +0200 |
commit | f7a427676c0fe3c12509e3d9a243301f93626b0a (patch) | |
tree | 8dc8a2371a3e561ebb03f0bd17c2d59135c9f872 /audio/audio.h | |
parent | 0042735d7aefb2f05a79ba2eae741a63f22ea0c9 (diff) | |
download | mpv-f7a427676c0fe3c12509e3d9a243301f93626b0a.tar.bz2 mpv-f7a427676c0fe3c12509e3d9a243301f93626b0a.tar.xz |
audio: add some setters for mp_audio, and require filters to use them
mp_audio has some redundant fields. Setters like mp_audio_set_format()
initialize these properly.
Also move the mp_audio struct to a the file audio.c.
We can remove a mysterious line of code from af.c:
in.format |= af_bits2fmt(in.bps * 8);
I'm not sure if this was ever actually needed, or if it was some kind of
"make it work" quick-fix that works against the way things were supposed
to work. All filters etc. now set the format correctly, so if there ever
was a need for this code, it's definitely gone.
Diffstat (limited to 'audio/audio.h')
-rw-r--r-- | audio/audio.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/audio/audio.h b/audio/audio.h new file mode 100644 index 0000000000..f39069cf73 --- /dev/null +++ b/audio/audio.h @@ -0,0 +1,38 @@ +/* + * This file is part of mpv. + * + * mpv is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * mpv is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with mpv. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef MP_AUDIO_H +#define MP_AUDIO_H + +#include "format.h" + +// Audio data chunk +struct mp_audio { + void *audio; // data buffer + int len; // buffer length (in bytes) + int rate; // sample rate + int nch; // number of channels, use mp_audio_set_channels() to set + int format; // format (AF_FORMAT_...), use mp_audio_set_format() to set + // Redundant fields, for convenience + int bps; // bytes per sample (redundant with format) +}; + +void mp_audio_set_format(struct mp_audio *mpa, int format); +void mp_audio_set_num_channels(struct mp_audio *mpa, int num_channels); +void mp_audio_copy_config(struct mp_audio *dst, const struct mp_audio *src); + +#endif |