mirror of
https://github.com/mpv-player/mpv
synced 2024-12-23 15:22:09 +00:00
eec7f61b5f
Although the origins lie somewhere in libaf, which was written by "anders" and who explicitly disagreed with the LGPL relicensing, we can change the license of these files, because all code was written by "alex", who agreed with the relicensing. The only things that remain from anders' code is the AF_FORMAT_ and af_ prefixes (see e.g.66f4e563
). It was alex who redid this file and added the format identifiers we have today (507121f7
). It's also nice to see that alex actually claimed copyright on format.c (221a599f
). In commitefb50cab
even the bitmask concept (which anders introduced with his early af_format.c code) was removed, and essentially all lines and symbols by anders were dropped. To put it into perspective: the original af_format code was for converting actual sample data and relied on OSS sample format identifiers, mpv's format.c/h provides its own sample formats, but does not do any data conversion. Remove an now inaccurate comment from format.c (it somehow even survived the typo that was present in the original commit). Also remove most of the format.c include statements - most of them are technically anders' code. We keep limits.h though.
80 lines
2.2 KiB
C
80 lines
2.2 KiB
C
/*
|
|
* This file is part of mpv.
|
|
*
|
|
* mpv is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 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 Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef MPLAYER_AF_FORMAT_H
|
|
#define MPLAYER_AF_FORMAT_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
|
|
enum af_format {
|
|
AF_FORMAT_UNKNOWN = 0,
|
|
|
|
AF_FORMAT_U8,
|
|
AF_FORMAT_S16,
|
|
AF_FORMAT_S24,
|
|
AF_FORMAT_S32,
|
|
AF_FORMAT_FLOAT,
|
|
AF_FORMAT_DOUBLE,
|
|
|
|
// Planar variants
|
|
AF_FORMAT_U8P,
|
|
AF_FORMAT_S16P,
|
|
AF_FORMAT_S32P,
|
|
AF_FORMAT_FLOATP,
|
|
AF_FORMAT_DOUBLEP,
|
|
|
|
// All of these use IEC61937 framing, and otherwise pretend to be like PCM.
|
|
AF_FORMAT_S_AAC,
|
|
AF_FORMAT_S_AC3,
|
|
AF_FORMAT_S_DTS,
|
|
AF_FORMAT_S_DTSHD,
|
|
AF_FORMAT_S_EAC3,
|
|
AF_FORMAT_S_MP3,
|
|
AF_FORMAT_S_TRUEHD,
|
|
|
|
AF_FORMAT_COUNT
|
|
};
|
|
|
|
const char *af_fmt_to_str(int format);
|
|
|
|
int af_fmt_to_bytes(int format);
|
|
int af_fmt_change_bytes(int format, int bytes);
|
|
|
|
bool af_fmt_is_valid(int format);
|
|
bool af_fmt_is_unsigned(int format);
|
|
bool af_fmt_is_float(int format);
|
|
bool af_fmt_is_int(int format);
|
|
bool af_fmt_is_planar(int format);
|
|
bool af_fmt_is_spdif(int format);
|
|
bool af_fmt_is_pcm(int format);
|
|
|
|
int af_fmt_to_planar(int format);
|
|
int af_fmt_from_planar(int format);
|
|
|
|
// Amount of bytes that contain audio of the given duration, aligned to frames.
|
|
int af_fmt_seconds_to_bytes(int format, float seconds, int channels, int samplerate);
|
|
|
|
void af_fill_silence(void *dst, size_t bytes, int format);
|
|
|
|
void af_get_best_sample_formats(int src_format, int out_formats[AF_FORMAT_COUNT]);
|
|
int af_select_best_samplerate(int src_sampelrate, const int *available);
|
|
|
|
int af_format_sample_alignment(int format);
|
|
|
|
#endif /* MPLAYER_AF_FORMAT_H */
|