00001 /* 00002 * Copyright (C) 2003-2009 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 <stddef.h> 00024 00025 struct audio_format; 00026 00027 /* 00028 * Linearly mixes two PCM buffers. Both must have the same length and 00029 * the same audio format. The formula is: 00030 * 00031 * s1 := s1 * portion1 + s2 * (1 - portion1) 00032 * 00033 * @param buffer1 the first PCM buffer, and the destination buffer 00034 * @param buffer2 the second PCM buffer 00035 * @param size the size of both buffers in bytes 00036 * @param format the audio format of both buffers 00037 * @param portion1 a number between 0.0 and 1.0 specifying the portion 00038 * of the first buffer in the mix; portion2 = (1.0 - portion1) 00039 */ 00040 void 00041 pcm_mix(void *buffer1, const void *buffer2, size_t size, 00042 const struct audio_format *format, float portion1); 00043 00044 #endif