feat: 增加日志模块

This commit is contained in:
2026-04-18 12:52:39 +08:00
parent b700dab484
commit 212459a8e4
18 changed files with 938 additions and 42 deletions

View File

@@ -6,22 +6,34 @@
#include <stdint.h>
#include "gps_buffer.h"
#include "omni_common.h"
#include "peer_kcp_client.h"
#ifdef __cplusplus
extern "C" {
#endif
#if defined(__GNUC__)
typedef struct __attribute__((packed)) video_pipeline_packet_metadata {
#else
typedef struct video_pipeline_packet_metadata {
#endif
uint64_t timestamp_ms;
double latitude;
double longitude;
uint32_t capture_to_send_ms;
} video_pipeline_packet_metadata_t;
typedef struct video_stage_logger {
omni_file_logger_t file_logger;
int enabled;
uint64_t sample_mod;
} video_stage_logger_t;
typedef void (*video_pipeline_progress_fn)(void *context);
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
_Static_assert(sizeof(video_pipeline_packet_metadata_t) == 24, "video trailer metadata must be 24 bytes");
_Static_assert(sizeof(video_pipeline_packet_metadata_t) == 28, "video trailer metadata must be 28 bytes");
#endif
typedef struct video_pipeline_config {
@@ -43,6 +55,7 @@ typedef struct video_pipeline_config {
int hard_backpressure_hold_ms;
int frame_stall_reconnect_ms;
kcp_session_stats_logger_t *stats_logger;
video_stage_logger_t *stage_logger;
int stats_interval_ms;
video_pipeline_progress_fn progress_callback;
void *progress_context;
@@ -57,6 +70,8 @@ typedef struct video_pipeline_stats {
uint64_t backlog_resets;
uint64_t last_frame_bytes;
uint32_t last_backlog_segments;
uint32_t last_capture_to_send_ms;
double avg_capture_to_send_ms;
int connected;
char last_error[256];
char last_backlog_reason[128];
@@ -70,6 +85,8 @@ void video_pipeline_config_load_env(video_pipeline_config_t *config);
int video_pipeline_stats_init(video_pipeline_stats_t *stats);
void video_pipeline_stats_destroy(video_pipeline_stats_t *stats);
void video_pipeline_stats_snapshot(video_pipeline_stats_t *stats, video_pipeline_stats_t *out_stats);
video_stage_logger_t *video_stage_logger_open_jsonl(const char *path, uint64_t sample_mod);
void video_stage_logger_close(video_stage_logger_t *logger);
int video_pipeline_run(const video_pipeline_config_t *config, video_pipeline_stats_t *stats, volatile sig_atomic_t *stop_requested);
#ifdef __cplusplus