MPD

- Main Page
- Data Structures
- Files

- File List
- Globals

# src/pcm_volume.h

Go to the documentation of this file.

    00001 /*
    00002  * Copyright (C) 2003-2010 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_VOLUME_H
    00021 #define PCM_VOLUME_H
    00022
    00023 #include "pcm_prng.h"
    00024
    00025 #include <stdint.h>
    00026 #include <stdbool.h>
    00027
    00028 enum {
    00030         PCM_VOLUME_1 = 1024,
    00031 };
    00032
    00033 struct audio_format;
    00034
    00039 static inline int
    00040 pcm_float_to_volume(float volume)
    00041 {
    00042         return volume * PCM_VOLUME_1 + 0.5;
    00043 }
    00044
    00049 static inline int
    00050 pcm_volume_dither(void)
    00051 {
    00052         static unsigned long state;
    00053         uint32_t r;
    00054
    00055         r = state = pcm_prng(state);
    00056
    00057         return (r & 511) - ((r >> 9) & 511);
    00058 }
    00059
    00069 bool
    00070 pcm_volume(void *buffer, int length,
    00071            const struct audio_format *format,
    00072            int volume);
    00073
    00074 #endif