| 12345678910111213141516171819202122232425262728 |
- #ifndef STREAM_H
- #define STREAM_H
- #include "common.h"
- typedef enum { SS_IDLE=0, SS_LIVE, SS_PUSHING, SS_ERROR } StreamState;
- typedef struct {
- int used; int id; int channel;
- char session_id[64]; char rtmp_url[MAX_PATH_SIZE];
- StreamState state;
- uint64_t frames; uint64_t bytes_pushed; int64_t start_ms;
- /* PS encapsulation scratch */
- uint8_t ps_buf[MAX_BUF_SIZE]; size_t ps_len;
- uint64_t pts_base; uint64_t dts_base;
- pthread_mutex_t lock;
- } StreamSession;
- int stream_init(void);
- int stream_start_listen(void);
- int stream_stop_listen(void);
- int stream_open(int channel, const char*rtmp_url, int*out_id);
- int stream_push_frame(int id, const uint8_t*nalu, size_t n, uint64_t pts_ms, uint64_t dts_ms, int keyframe);
- int stream_close(int id);
- int stream_find_by_channel(int channel);
- StreamSession* stream_get_session(int id);
- void stream_stats(int*active, uint64_t*total_frames, uint64_t*total_bytes);
- void stream_cleanup(void);
- /* PS -> live helper used by main simulate loop & self test */
- int stream_simulate_loop(int channel, int frames);
- #endif
|