diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pulsecore/source-output.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index 9c75b39c..de543a57 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -359,7 +359,7 @@ pa_usec_t pa_source_output_get_latency(pa_source_output *o) {  /* Called from thread context */  void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {      size_t length; -    size_t limit; +    size_t limit, mbs = 0;      pa_source_output_assert_ref(o);      pa_assert(PA_SOURCE_OUTPUT_LINKED(o->thread_info.state)); @@ -396,6 +396,12 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {          else {              pa_memchunk rchunk; +            if (mbs == 0) +                mbs = pa_resampler_max_block_size(o->thread_info.resampler); + +            if (qchunk.length > mbs) +                qchunk.length = mbs; +              pa_resampler_run(o->thread_info.resampler, &qchunk, &rchunk);              if (rchunk.length > 0) @@ -405,6 +411,7 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {          }          pa_memblock_unref(qchunk.memblock); +        pa_memblockq_drop(o->thread_info.delay_memblockq, qchunk.length);      }  }  | 
