From f7a427676c0fe3c12509e3d9a243301f93626b0a Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 5 Apr 2013 19:47:51 +0200 Subject: 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. --- audio/audio.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 audio/audio.h (limited to 'audio/audio.h') 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 . + */ + +#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 -- cgit v1.2.3