aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2025-04-23 19:11:58 +0200
committerdec05eba <dec05eba@protonmail.com>2025-04-23 19:11:58 +0200
commit15176579cb71224c529c1a35ac771cd13192737a (patch)
tree8ff16f5c9a4af3dd6504984c17cc576dc2a04de2 /include
parent8bd17b0c9a8529c0e0b1bcad57130759ebcaa004 (diff)
Fix replay saving freeze, unable to save replay if audio is not provided
Diffstat (limited to 'include')
-rw-r--r--include/replay_buffer.h10
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 */