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