stream.h 1.1 KB

12345678910111213141516171819202122232425262728
  1. #ifndef STREAM_H
  2. #define STREAM_H
  3. #include "common.h"
  4. typedef enum { SS_IDLE=0, SS_LIVE, SS_PUSHING, SS_ERROR } StreamState;
  5. typedef struct {
  6. int used; int id; int channel;
  7. char session_id[64]; char rtmp_url[MAX_PATH_SIZE];
  8. StreamState state;
  9. uint64_t frames; uint64_t bytes_pushed; int64_t start_ms;
  10. /* PS encapsulation scratch */
  11. uint8_t ps_buf[MAX_BUF_SIZE]; size_t ps_len;
  12. uint64_t pts_base; uint64_t dts_base;
  13. pthread_mutex_t lock;
  14. } StreamSession;
  15. int stream_init(void);
  16. int stream_start_listen(void);
  17. int stream_stop_listen(void);
  18. int stream_open(int channel, const char*rtmp_url, int*out_id);
  19. int stream_push_frame(int id, const uint8_t*nalu, size_t n, uint64_t pts_ms, uint64_t dts_ms, int keyframe);
  20. int stream_close(int id);
  21. int stream_find_by_channel(int channel);
  22. StreamSession* stream_get_session(int id);
  23. void stream_stats(int*active, uint64_t*total_frames, uint64_t*total_bytes);
  24. void stream_cleanup(void);
  25. /* PS -> live helper used by main simulate loop & self test */
  26. int stream_simulate_loop(int channel, int frames);
  27. #endif