pcm_resample: renamed implementation functions
Added diversion functions to pcm_resample.c. These check which resampler is enabled at compile time (libsamplerate or fallback). This prepares the following patch.
This commit is contained in:
		| @@ -101,6 +101,7 @@ mpd_headers = \ | ||||
| 	src/pcm_channels.h \ | ||||
| 	src/pcm_format.h \ | ||||
| 	src/pcm_resample.h \ | ||||
| 	src/pcm_resample_internal.h \ | ||||
| 	src/pcm_dither.h \ | ||||
| 	src/pcm_prng.h \ | ||||
| 	src/permission.h \ | ||||
|   | ||||
| @@ -17,7 +17,7 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #include "pcm_resample.h" | ||||
| #include "pcm_resample_internal.h" | ||||
| #include "config.h" | ||||
|  | ||||
| #include <string.h> | ||||
| @@ -33,3 +33,50 @@ void pcm_resample_init(struct pcm_resample_state *state) | ||||
|  | ||||
| 	pcm_buffer_init(&state->buffer); | ||||
| } | ||||
|  | ||||
| void pcm_resample_deinit(struct pcm_resample_state *state) | ||||
| { | ||||
| #ifdef HAVE_LIBSAMPLERATE | ||||
| 	pcm_resample_lsr_deinit(state); | ||||
| #else | ||||
| 	pcm_resample_fallback_deinit(state); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| const int16_t * | ||||
| pcm_resample_16(struct pcm_resample_state *state, | ||||
| 		uint8_t channels, | ||||
| 		unsigned src_rate, | ||||
| 		const int16_t *src_buffer, size_t src_size, | ||||
| 		unsigned dest_rate, | ||||
| 		size_t *dest_size_r) | ||||
| { | ||||
| #ifdef HAVE_LIBSAMPLERATE | ||||
| 	return pcm_resample_lsr_16(state, channels, | ||||
| 				   src_rate, src_buffer, src_size, | ||||
| 				   dest_rate, dest_size_r); | ||||
| #else | ||||
| 	return pcm_resample_fallback_16(state, channels, | ||||
| 					src_rate, src_buffer, src_size, | ||||
| 					dest_rate, dest_size_r); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| const int32_t * | ||||
| pcm_resample_32(struct pcm_resample_state *state, | ||||
| 		uint8_t channels, | ||||
| 		unsigned src_rate, | ||||
| 		const int32_t *src_buffer, size_t src_size, | ||||
| 		unsigned dest_rate, | ||||
| 		size_t *dest_size_r) | ||||
| { | ||||
| #ifdef HAVE_LIBSAMPLERATE | ||||
| 	return pcm_resample_lsr_32(state, channels, | ||||
| 				   src_rate, src_buffer, src_size, | ||||
| 				   dest_rate, dest_size_r); | ||||
| #else | ||||
| 	return pcm_resample_fallback_32(state, channels, | ||||
| 					src_rate, src_buffer, src_size, | ||||
| 					dest_rate, dest_size_r); | ||||
| #endif | ||||
| } | ||||
|   | ||||
| @@ -17,24 +17,25 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #include "pcm_resample.h" | ||||
| #include "pcm_resample_internal.h" | ||||
|  | ||||
| #include <assert.h> | ||||
| #include <glib.h> | ||||
|  | ||||
| void pcm_resample_deinit(struct pcm_resample_state *state) | ||||
| void | ||||
| pcm_resample_fallback_deinit(struct pcm_resample_state *state) | ||||
| { | ||||
| 	pcm_buffer_deinit(&state->buffer); | ||||
| } | ||||
|  | ||||
| /* resampling code blatantly ripped from ESD */ | ||||
| const int16_t * | ||||
| pcm_resample_16(struct pcm_resample_state *state, | ||||
| 		uint8_t channels, | ||||
| 		unsigned src_rate, | ||||
| 		const int16_t *src_buffer, size_t src_size, | ||||
| 		unsigned dest_rate, | ||||
| 		size_t *dest_size_r) | ||||
| pcm_resample_fallback_16(struct pcm_resample_state *state, | ||||
| 			 uint8_t channels, | ||||
| 			 unsigned src_rate, | ||||
| 			 const int16_t *src_buffer, size_t src_size, | ||||
| 			 unsigned dest_rate, | ||||
| 			 size_t *dest_size_r) | ||||
| { | ||||
| 	unsigned src_pos, dest_pos = 0; | ||||
| 	unsigned src_frames = src_size / channels / sizeof(*src_buffer); | ||||
| @@ -70,12 +71,13 @@ pcm_resample_16(struct pcm_resample_state *state, | ||||
| } | ||||
|  | ||||
| const int32_t * | ||||
| pcm_resample_32(struct pcm_resample_state *state, | ||||
| 		uint8_t channels, | ||||
| 		unsigned src_rate, | ||||
| 		const int32_t *src_buffer, G_GNUC_UNUSED size_t src_size, | ||||
| 		unsigned dest_rate, | ||||
| 		size_t *dest_size_r) | ||||
| pcm_resample_fallback_32(struct pcm_resample_state *state, | ||||
| 			 uint8_t channels, | ||||
| 			 unsigned src_rate, | ||||
| 			 const int32_t *src_buffer, | ||||
| 			 G_GNUC_UNUSED size_t src_size, | ||||
| 			 unsigned dest_rate, | ||||
| 			 size_t *dest_size_r) | ||||
| { | ||||
| 	unsigned src_pos, dest_pos = 0; | ||||
| 	unsigned src_frames = src_size / channels / sizeof(*src_buffer); | ||||
|   | ||||
							
								
								
									
										79
									
								
								src/pcm_resample_internal.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								src/pcm_resample_internal.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,79 @@ | ||||
| /* | ||||
|  * Copyright (C) 2003-2009 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org | ||||
|  * | ||||
|  * This program 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. | ||||
|  * | ||||
|  * This program 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 this program; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| /** \file | ||||
|  * | ||||
|  * Internal declarations for the pcm_resample library.  The "internal" | ||||
|  * resampler is called "fallback" in the MPD source, so the file name | ||||
|  * of this header is somewhat unrelated to it. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPD_PCM_RESAMPLE_INTERNAL_H | ||||
| #define MPD_PCM_RESAMPLE_INTERNAL_H | ||||
|  | ||||
| #include "pcm_resample.h" | ||||
| #include "config.h" | ||||
|  | ||||
| #ifdef HAVE_LIBSAMPLERATE | ||||
|  | ||||
| void | ||||
| pcm_resample_lsr_deinit(struct pcm_resample_state *state); | ||||
|  | ||||
| const int16_t * | ||||
| pcm_resample_lsr_16(struct pcm_resample_state *state, | ||||
| 		    uint8_t channels, | ||||
| 		    unsigned src_rate, | ||||
| 		    const int16_t *src_buffer, size_t src_size, | ||||
| 		    unsigned dest_rate, | ||||
| 		    size_t *dest_size_r); | ||||
|  | ||||
| const int32_t * | ||||
| pcm_resample_lsr_32(struct pcm_resample_state *state, | ||||
| 		    uint8_t channels, | ||||
| 		    unsigned src_rate, | ||||
| 		    const int32_t *src_buffer, | ||||
| 		    G_GNUC_UNUSED size_t src_size, | ||||
| 		    unsigned dest_rate, | ||||
| 		    size_t *dest_size_r); | ||||
|  | ||||
| #else | ||||
|  | ||||
| void | ||||
| pcm_resample_fallback_deinit(struct pcm_resample_state *state); | ||||
|  | ||||
| const int16_t * | ||||
| pcm_resample_fallback_16(struct pcm_resample_state *state, | ||||
| 			 uint8_t channels, | ||||
| 			 unsigned src_rate, | ||||
| 			 const int16_t *src_buffer, size_t src_size, | ||||
| 			 unsigned dest_rate, | ||||
| 			 size_t *dest_size_r); | ||||
|  | ||||
| const int32_t * | ||||
| pcm_resample_fallback_32(struct pcm_resample_state *state, | ||||
| 			 uint8_t channels, | ||||
| 			 unsigned src_rate, | ||||
| 			 const int32_t *src_buffer, | ||||
| 			 G_GNUC_UNUSED size_t src_size, | ||||
| 			 unsigned dest_rate, | ||||
| 			 size_t *dest_size_r); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -17,7 +17,7 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #include "pcm_resample.h" | ||||
| #include "pcm_resample_internal.h" | ||||
| #include "conf.h" | ||||
| #include "config.h" | ||||
|  | ||||
| @@ -30,7 +30,8 @@ | ||||
| #undef G_LOG_DOMAIN | ||||
| #define G_LOG_DOMAIN "pcm" | ||||
|  | ||||
| void pcm_resample_deinit(struct pcm_resample_state *state) | ||||
| void | ||||
| pcm_resample_lsr_deinit(struct pcm_resample_state *state) | ||||
| { | ||||
| 	if (state->state != NULL) | ||||
| 		state->state = src_delete(state->state); | ||||
| @@ -116,12 +117,12 @@ pcm_resample_set(struct pcm_resample_state *state, | ||||
| } | ||||
|  | ||||
| const int16_t * | ||||
| pcm_resample_16(struct pcm_resample_state *state, | ||||
| 		uint8_t channels, | ||||
| 		unsigned src_rate, | ||||
| 		const int16_t *src_buffer, size_t src_size, | ||||
| 		unsigned dest_rate, | ||||
| 		size_t *dest_size_r) | ||||
| pcm_resample_lsr_16(struct pcm_resample_state *state, | ||||
| 		    uint8_t channels, | ||||
| 		    unsigned src_rate, | ||||
| 		    const int16_t *src_buffer, size_t src_size, | ||||
| 		    unsigned dest_rate, | ||||
| 		    size_t *dest_size_r) | ||||
| { | ||||
| 	SRC_DATA *data = &state->data; | ||||
| 	size_t data_in_size; | ||||
| @@ -186,12 +187,12 @@ src_float_to_int_array (const float *in, int *out, int len) | ||||
| #endif | ||||
|  | ||||
| const int32_t * | ||||
| pcm_resample_32(struct pcm_resample_state *state, | ||||
| 		uint8_t channels, | ||||
| 		unsigned src_rate, | ||||
| 		const int32_t *src_buffer, size_t src_size, | ||||
| 		unsigned dest_rate, | ||||
| 		size_t *dest_size_r) | ||||
| pcm_resample_lsr_32(struct pcm_resample_state *state, | ||||
| 		    uint8_t channels, | ||||
| 		    unsigned src_rate, | ||||
| 		    const int32_t *src_buffer, size_t src_size, | ||||
| 		    unsigned dest_rate, | ||||
| 		    size_t *dest_size_r) | ||||
| { | ||||
| 	SRC_DATA *data = &state->data; | ||||
| 	size_t data_in_size; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann