mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	Merge commit '38ded3bb31'
				
					
				
			This commit is contained in:
		
						commit
						2e250aaebb
					
				
					 7 changed files with 36 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -904,6 +904,11 @@ static int a2dp_process_render(struct userdata *u) {
 | 
			
		|||
                             (void*) p, u->write_memchunk.length,
 | 
			
		||||
                             d, left,
 | 
			
		||||
                             &written);
 | 
			
		||||
 | 
			
		||||
        PA_ONCE_BEGIN {
 | 
			
		||||
            pa_log_debug("Using SBC encoder implementation: %s", pa_strnull(sbc_get_implementation_info(&a2dp->sbc)));
 | 
			
		||||
        } PA_ONCE_END;
 | 
			
		||||
 | 
			
		||||
        pa_memblock_release(u->write_memchunk.memblock);
 | 
			
		||||
 | 
			
		||||
        if (encoded <= 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1349,9 +1354,6 @@ static int add_sink(struct userdata *u) {
 | 
			
		|||
 | 
			
		||||
        u->sink->userdata = u;
 | 
			
		||||
        u->sink->parent.process_msg = sink_process_msg;
 | 
			
		||||
 | 
			
		||||
        pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
 | 
			
		||||
        pa_sink_set_rtpoll(u->sink, u->rtpoll);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
/*     u->sink->get_volume = sink_get_volume_cb; */
 | 
			
		||||
| 
						 | 
				
			
			@ -1396,9 +1398,6 @@ static int add_source(struct userdata *u) {
 | 
			
		|||
 | 
			
		||||
        u->source->userdata = u;
 | 
			
		||||
        u->source->parent.process_msg = source_process_msg;
 | 
			
		||||
 | 
			
		||||
        pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
 | 
			
		||||
        pa_source_set_rtpoll(u->source, u->rtpoll);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
/*     u->source->get_volume = source_get_volume_cb; */
 | 
			
		||||
| 
						 | 
				
			
			@ -1523,9 +1522,9 @@ static void stop_thread(struct userdata *u) {
 | 
			
		|||
        u->source = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pa_thread_mq_done(&u->thread_mq);
 | 
			
		||||
 | 
			
		||||
    if (u->rtpoll) {
 | 
			
		||||
        pa_thread_mq_done(&u->thread_mq);
 | 
			
		||||
 | 
			
		||||
        pa_rtpoll_free(u->rtpoll);
 | 
			
		||||
        u->rtpoll = NULL;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1559,11 +1558,17 @@ static int start_thread(struct userdata *u) {
 | 
			
		|||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (u->sink)
 | 
			
		||||
    if (u->sink) {
 | 
			
		||||
        pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
 | 
			
		||||
        pa_sink_set_rtpoll(u->sink, u->rtpoll);
 | 
			
		||||
        pa_sink_put(u->sink);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (u->source)
 | 
			
		||||
    if (u->source) {
 | 
			
		||||
        pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
 | 
			
		||||
        pa_source_set_rtpoll(u->source, u->rtpoll);
 | 
			
		||||
        pa_source_put(u->source);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -985,7 +985,7 @@ int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
 | 
			
		|||
	char *ptr;
 | 
			
		||||
	int i, ch, framelen, samples;
 | 
			
		||||
 | 
			
		||||
	if (!sbc && !input)
 | 
			
		||||
	if (!sbc || !input)
 | 
			
		||||
		return -EIO;
 | 
			
		||||
 | 
			
		||||
	priv = sbc->priv;
 | 
			
		||||
| 
						 | 
				
			
			@ -1053,7 +1053,7 @@ int sbc_encode(sbc_t *sbc, void *input, int input_len, void *output,
 | 
			
		|||
			const uint8_t *pcm, int16_t X[2][SBC_X_BUFFER_SIZE],
 | 
			
		||||
			int nsamples, int nchannels);
 | 
			
		||||
 | 
			
		||||
	if (!sbc && !input)
 | 
			
		||||
	if (!sbc || !input)
 | 
			
		||||
		return -EIO;
 | 
			
		||||
 | 
			
		||||
	priv = sbc->priv;
 | 
			
		||||
| 
						 | 
				
			
			@ -1221,6 +1221,20 @@ uint16_t sbc_get_codesize(sbc_t *sbc)
 | 
			
		|||
	return subbands * blocks * channels * 2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *sbc_get_implementation_info(sbc_t *sbc)
 | 
			
		||||
{
 | 
			
		||||
	struct sbc_priv *priv;
 | 
			
		||||
 | 
			
		||||
	if (!sbc)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	priv = sbc->priv;
 | 
			
		||||
	if (!priv)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	return priv->enc_state.implementation_info;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sbc_reinit(sbc_t *sbc, unsigned long flags)
 | 
			
		||||
{
 | 
			
		||||
	struct sbc_priv *priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -89,6 +89,7 @@ int sbc_encode(sbc_t *sbc, void *input, int input_len, void *output,
 | 
			
		|||
int sbc_get_frame_length(sbc_t *sbc);
 | 
			
		||||
int sbc_get_frame_duration(sbc_t *sbc);
 | 
			
		||||
uint16_t sbc_get_codesize(sbc_t *sbc);
 | 
			
		||||
const char *sbc_get_implementation_info(sbc_t *sbc);
 | 
			
		||||
void sbc_finish(sbc_t *sbc);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -456,6 +456,7 @@ void sbc_init_primitives(struct sbc_encoder_state *state)
 | 
			
		|||
 | 
			
		||||
	/* Default implementation for scale factors calculation */
 | 
			
		||||
	state->sbc_calc_scalefactors = sbc_calc_scalefactors;
 | 
			
		||||
	state->implementation_info = "Generic C";
 | 
			
		||||
 | 
			
		||||
	/* X86/AMD64 optimizations */
 | 
			
		||||
#ifdef SBC_BUILD_WITH_MMX_SUPPORT
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,6 +62,7 @@ struct sbc_encoder_state {
 | 
			
		|||
	void (*sbc_calc_scalefactors)(int32_t sb_sample_f[16][2][8],
 | 
			
		||||
			uint32_t scale_factor[2][8],
 | 
			
		||||
			int blocks, int channels, int subbands);
 | 
			
		||||
	const char *implementation_info;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -313,6 +313,7 @@ void sbc_init_primitives_mmx(struct sbc_encoder_state *state)
 | 
			
		|||
	if (check_mmx_support()) {
 | 
			
		||||
		state->sbc_analyze_4b_4s = sbc_analyze_4b_4s_mmx;
 | 
			
		||||
		state->sbc_analyze_4b_8s = sbc_analyze_4b_8s_mmx;
 | 
			
		||||
		state->implementation_info = "MMX";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -240,6 +240,7 @@ void sbc_init_primitives_neon(struct sbc_encoder_state *state)
 | 
			
		|||
{
 | 
			
		||||
	state->sbc_analyze_4b_4s = sbc_analyze_4b_4s_neon;
 | 
			
		||||
	state->sbc_analyze_4b_8s = sbc_analyze_4b_8s_neon;
 | 
			
		||||
	state->implementation_info = "NEON";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue