Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

54 lines
1.7KB

  1. #ifndef _flv_parser_h_
  2. #define _flv_parser_h_
  3. #include <stdint.h>
  4. #include <stddef.h>
  5. #include "flv-header.h"
  6. #if defined(__cplusplus)
  7. extern "C" {
  8. #endif
  9. /// Audio/Video Elementary Stream
  10. /// @param[in] param user-defined parameter
  11. /// @param[in] codec audio/video format (see more flv-proto.h)
  12. /// @param[in] data audio/video element data, AAC: AAC-Frame, H.264: MP4 Stream, MP3-Raw data
  13. /// @param[in] bytes data length in byte
  14. /// @param[in] pts audio/video presentation timestamp
  15. /// @param[in] dts audio/video decoding timestamp
  16. /// @param[in] flags 1-video keyframe, other-undefined
  17. /// @return 0-ok, other-error
  18. typedef int (*flv_parser_handler)(void* param, int codec, const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
  19. /// Input FLV Audio/Video Stream
  20. /// @param[in] type 8-audio, 9-video, 18-script (see more flv-proto.h)
  21. /// @param[in] data flv audio/video Stream, AudioTagHeader/VideoTagHeader + A/V Data
  22. /// @param[in] bytes data length in byte
  23. /// @param[in] timestamp milliseconds relative to the first tag(DTS)
  24. /// @return 0-ok, other-error
  25. int flv_parser_tag(int type, const void* data, size_t bytes, uint32_t timestamp, flv_parser_handler handler, void* param);
  26. struct flv_parser_t
  27. {
  28. int state;
  29. size_t bytes;
  30. size_t expect;
  31. uint8_t ptr[32];
  32. struct flv_header_t header;
  33. struct flv_tag_header_t tag;
  34. struct flv_audio_tag_header_t audio;
  35. struct flv_video_tag_header_t video;
  36. uint8_t* body;
  37. void* (*alloc)(void* param, size_t bytes);
  38. void (*free)(void* param, void* ptr);
  39. };
  40. int flv_parser_input(struct flv_parser_t* parser, const uint8_t* data, size_t bytes, flv_parser_handler handler, void* param);
  41. #if defined(__cplusplus)
  42. }
  43. #endif
  44. #endif /* !_flv_parser_h_ */