MPD 0.17~git
|
00001 /* 00002 * Copyright (C) 2003-2011 The Music Player Daemon Project 00003 * http://www.musicpd.org 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; either version 2 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License along 00016 * with this program; if not, write to the Free Software Foundation, Inc., 00017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00018 */ 00019 00020 #ifndef PCM_MIX_H 00021 #define PCM_MIX_H 00022 00023 #include "audio_format.h" 00024 00025 #include <stdbool.h> 00026 #include <stddef.h> 00027 00028 /* 00029 * Linearly mixes two PCM buffers. Both must have the same length and 00030 * the same audio format. The formula is: 00031 * 00032 * s1 := s1 * portion1 + s2 * (1 - portion1) 00033 * 00034 * @param buffer1 the first PCM buffer, and the destination buffer 00035 * @param buffer2 the second PCM buffer 00036 * @param size the size of both buffers in bytes 00037 * @param format the sample format of both buffers 00038 * @param portion1 a number between 0.0 and 1.0 specifying the portion 00039 * of the first buffer in the mix; portion2 = (1.0 - portion1). The value 00040 * NaN is used by the MixRamp code to specify that simple addition is required. 00041 * 00042 * @return true on success, false if the format is not supported 00043 */ 00044 G_GNUC_WARN_UNUSED_RESULT 00045 bool 00046 pcm_mix(void *buffer1, const void *buffer2, size_t size, 00047 enum sample_format format, float portion1); 00048 00049 #endif