summaryrefslogtreecommitdiffstats
path: root/audio/filter
diff options
context:
space:
mode:
authorferreum <code@ferreum.de>2023-08-13 18:07:51 +0200
committerNiklas Haas <github-daiK1o@haasn.dev>2023-09-20 14:36:23 +0200
commit87cc7ed9554cc18486fedd4645a4bd48fb863fd7 (patch)
tree48f5443c556d10d7d43add1726097d1c43ff3d12 /audio/filter
parent0d64f795c7940d3a1383b936b5c0346ce74af912 (diff)
downloadmpv-87cc7ed9554cc18486fedd4645a4bd48fb863fd7.tar.bz2
mpv-87cc7ed9554cc18486fedd4645a4bd48fb863fd7.tar.xz
af_scaletempo2: move latency calculation to internal function
Diffstat (limited to 'audio/filter')
-rw-r--r--audio/filter/af_scaletempo2.c5
-rw-r--r--audio/filter/af_scaletempo2_internals.c6
-rw-r--r--audio/filter/af_scaletempo2_internals.h1
3 files changed, 9 insertions, 3 deletions
diff --git a/audio/filter/af_scaletempo2.c b/audio/filter/af_scaletempo2.c
index 4e9d5f9464..cf74e6504f 100644
--- a/audio/filter/af_scaletempo2.c
+++ b/audio/filter/af_scaletempo2.c
@@ -108,9 +108,8 @@ static void process(struct mp_filter *f)
double pts = mp_aframe_get_pts(p->pending);
if (pts != MP_NOPTS_VALUE) {
- double frame_delay = p->data.input_buffer_frames - p->data.search_block_index
- + p->data.num_complete_frames * p->speed
- + out_samples * p->speed;
+ double frame_delay = mp_scaletempo2_get_latency(&p->data, p->speed)
+ + out_samples * p->speed;
mp_aframe_set_pts(out, pts - frame_delay / mp_aframe_get_effective_rate(out));
}
diff --git a/audio/filter/af_scaletempo2_internals.c b/audio/filter/af_scaletempo2_internals.c
index ccfa3aebcb..e8cd59d3c9 100644
--- a/audio/filter/af_scaletempo2_internals.c
+++ b/audio/filter/af_scaletempo2_internals.c
@@ -694,6 +694,12 @@ int mp_scaletempo2_fill_buffer(struct mp_scaletempo2 *p,
return rendered_frames;
}
+double mp_scaletempo2_get_latency(struct mp_scaletempo2 *p, double playback_rate)
+{
+ return p->input_buffer_frames - p->search_block_index
+ + p->num_complete_frames * playback_rate;
+}
+
bool mp_scaletempo2_frames_available(struct mp_scaletempo2 *p)
{
return can_perform_wsola(p) || p->num_complete_frames > 0;
diff --git a/audio/filter/af_scaletempo2_internals.h b/audio/filter/af_scaletempo2_internals.h
index c95256b199..b062159966 100644
--- a/audio/filter/af_scaletempo2_internals.h
+++ b/audio/filter/af_scaletempo2_internals.h
@@ -114,6 +114,7 @@ struct mp_scaletempo2 {
void mp_scaletempo2_destroy(struct mp_scaletempo2 *p);
void mp_scaletempo2_reset(struct mp_scaletempo2 *p);
void mp_scaletempo2_init(struct mp_scaletempo2 *p, int channels, int rate);
+double mp_scaletempo2_get_latency(struct mp_scaletempo2 *p, double playback_rate);
int mp_scaletempo2_fill_input_buffer(struct mp_scaletempo2 *p,
uint8_t **planes, int frame_size, bool final);
int mp_scaletempo2_fill_buffer(struct mp_scaletempo2 *p,