mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-25 13:01:07 +00:00
textahead: fix previous buffers
Actually implement a proper queue. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1033>
This commit is contained in:
parent
439ada614c
commit
f59d00b8e6
1 changed files with 4 additions and 3 deletions
|
@ -6,6 +6,7 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: MPL-2.0
|
// SPDX-License-Identifier: MPL-2.0
|
||||||
|
|
||||||
|
use std::collections::VecDeque;
|
||||||
use std::sync::{Mutex, MutexGuard};
|
use std::sync::{Mutex, MutexGuard};
|
||||||
|
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
|
@ -54,7 +55,7 @@ struct Input {
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
struct State {
|
struct State {
|
||||||
previous: Vec<Input>,
|
previous: VecDeque<Input>,
|
||||||
pending: Vec<Input>,
|
pending: Vec<Input>,
|
||||||
done: bool,
|
done: bool,
|
||||||
/// Segment for which we should send a buffer with ahead text. Only set if `Settings.buffer_start_segment` is set.
|
/// Segment for which we should send a buffer with ahead text. Only set if `Settings.buffer_start_segment` is set.
|
||||||
|
@ -425,10 +426,10 @@ impl TextAhead {
|
||||||
let duration = current.duration;
|
let duration = current.duration;
|
||||||
|
|
||||||
if settings.n_previous > 0 {
|
if settings.n_previous > 0 {
|
||||||
state.previous.push(current);
|
state.previous.push_back(current);
|
||||||
|
|
||||||
if state.previous.len() > settings.n_previous as usize {
|
if state.previous.len() > settings.n_previous as usize {
|
||||||
state.previous.pop();
|
state.previous.pop_front();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue