diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-04-23 19:11:58 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-04-23 19:11:58 +0200 |
commit | 15176579cb71224c529c1a35ac771cd13192737a (patch) | |
tree | 8ff16f5c9a4af3dd6504984c17cc576dc2a04de2 /include | |
parent | 8bd17b0c9a8529c0e0b1bcad57130759ebcaa004 (diff) |
Fix replay saving freeze, unable to save replay if audio is not provided
Diffstat (limited to 'include')
-rw-r--r-- | include/replay_buffer.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/include/replay_buffer.h b/include/replay_buffer.h index e99b844..600b94b 100644 --- a/include/replay_buffer.h +++ b/include/replay_buffer.h @@ -5,6 +5,8 @@ #include <stdbool.h> #include <libavcodec/packet.h> +typedef struct gsr_replay_buffer gsr_replay_buffer; + typedef struct { AVPacket packet; int ref_counter; @@ -15,15 +17,15 @@ gsr_av_packet* gsr_av_packet_create(const AVPacket *av_packet, double timestamp) gsr_av_packet* gsr_av_packet_ref(gsr_av_packet *self); void gsr_av_packet_unref(gsr_av_packet *self); -typedef struct { +struct gsr_replay_buffer { gsr_av_packet **packets; size_t capacity_num_packets; size_t num_packets; size_t index; pthread_mutex_t mutex; bool mutex_initialized; - bool owns_mutex; -} gsr_replay_buffer; + gsr_replay_buffer *original_replay_buffer; +}; bool gsr_replay_buffer_init(gsr_replay_buffer *self, size_t replay_buffer_num_packets); void gsr_replay_buffer_deinit(gsr_replay_buffer *self); @@ -32,7 +34,7 @@ bool gsr_replay_buffer_append(gsr_replay_buffer *self, const AVPacket *av_packet void gsr_replay_buffer_clear(gsr_replay_buffer *self); gsr_av_packet* gsr_replay_buffer_get_packet_at_index(gsr_replay_buffer *self, size_t index); /* The clone has to be deinitialized before the replay buffer it clones */ -bool gsr_replay_buffer_clone(const gsr_replay_buffer *self, gsr_replay_buffer *destination); +bool gsr_replay_buffer_clone(gsr_replay_buffer *self, gsr_replay_buffer *destination); /* Returns 0 if replay buffer is empty */ size_t gsr_replay_buffer_find_packet_index_by_time_passed(gsr_replay_buffer *self, int seconds); /* Returns -1 if not found */ |