size_t process_frames;
pa_usec_t process_usec;
- pa_usec_t reference_process_usec;
+
+ /* process_bytes and reference_process_bytes must be same logically,
+ * but they have a different scale */
size_t process_bytes;
size_t reference_process_bytes;
}
int pa_processor_bind_reference(pa_processor *processor,
- uint32_t process_msec,
pa_sample_spec *reference_ss,
pa_channel_map *reference_chmap) {
pa_assert(reference_ss);
pa_assert(reference_chmap);
- processor->reference_process_usec = process_msec * PA_USEC_PER_MSEC;
- if (processor->reference_process_usec < processor->process_usec) {
- pa_log_error("Failed to bind reference. ref_usec(%" PRId64 "), process_usec(%" PRId64 ")",
- processor->reference_process_usec, processor->process_usec);
- return -1;
- }
-
sample_spec = *processor->output_ss;
channel_map = *processor->output_chmap;
}
processor->reference_memblockq_ss = sample_spec;
- processor->reference_process_bytes = pa_usec_to_bytes(processor->reference_process_usec, &processor->reference_memblockq_ss);
+ processor->reference_process_bytes = pa_usec_to_bytes(processor->process_usec, &processor->reference_memblockq_ss);
/* Create memblockq */
pa_silence_memchunk_get(&processor->core->silence_cache, processor->core->mempool, &silence, &sample_spec, 0);
&silence);
pa_memblock_unref(silence.memblock);
- pa_log_debug("Created reference memblockq rate(%d), channels(%d), msec(%u), bytes(%zu)",
+ pa_log_debug("Created reference memblockq rate(%d), channels(%d), msec(%" PRId64 "), minreq bytes(%zu)",
sample_spec.rate,
sample_spec.channels,
- process_msec,
+ processor->process_usec / PA_USEC_PER_MSEC,
processor->reference_process_bytes);
return 0;
pa_memblock_unref(silence.memblock);
- pa_log_info("push n(%u) silence blocks. latency(%" PRId64 "), ref_process_bytes(%zu) "
+ pa_log_info("push n(%u) silence blocks. latency(%" PRId64 "), ref_process_msec(%" PRId64 ") "
"write_index(%" PRId64 "->%" PRId64 "), read_index(%" PRId64 "->%" PRId64 ")",
pa_memblockq_get_nblocks(processor->reference_memblockq),
latency,
- processor->reference_process_bytes,
+ pa_bytes_to_usec(processor->reference_process_bytes,
+ &processor->reference_memblockq_ss) / PA_USEC_PER_MSEC,
write_index, pa_memblockq_get_write_index(processor->reference_memblockq),
read_index, pa_memblockq_get_read_index(processor->reference_memblockq));
return 0;
}
-// TODO naming
int pa_processor_process(pa_processor *processor, pa_memchunk *chunk, pa_memchunk *ochunk) {
int r = -1;
int8_t *recording = NULL;
ochunk->length = ichunk.length;
ochunk->memblock = pa_memblock_new(processor->core->mempool, ochunk->length);
- recording = pa_memblock_acquire(ichunk.memblock);
- reference = pa_memblock_acquire(rchunk.memblock);
- output = pa_memblock_acquire(ochunk->memblock);
+ recording = pa_memblock_acquire_chunk(&ichunk);
+ reference = pa_memblock_acquire_chunk(&rchunk);
+ output = pa_memblock_acquire_chunk(ochunk);
debug_timestamp_begin(processor);
pa_memblock_unref(ichunk.memblock);
pa_memblockq_drop(processor->output_memblockq, ichunk.length);
- pa_log_debug("Post-process. rec(%" PRIu64 "ms), ref(%" PRIu64 "msms) out(%" PRIu64 "ms), "
- "silence(%d), windex:rindex(%" PRId64 ":%" PRId64 ")",
+ pa_log_debug("Post-process. rec(%" PRIu64 "ms), ref(%" PRIu64 "ms) out(%" PRIu64 "ms), "
+ "silence(%d), reference memblockq windex:rindex(%" PRId64 ":%" PRId64 ")",
pa_bytes_to_usec(ichunk.length, processor->output_ss) / PA_USEC_PER_MSEC,
pa_bytes_to_usec(rchunk.length, &processor->reference_memblockq_ss) / PA_USEC_PER_MSEC,
pa_bytes_to_usec(ochunk->length, processor->output_ss) / PA_USEC_PER_MSEC,