Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

před 10 měsíci
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef _mpeg_muxer_h_
  2. #define _mpeg_muxer_h_
  3. #include <stdint.h>
  4. #include <stddef.h>
  5. #include "mpeg-ps.h"
  6. #include "mpeg-ts.h"
  7. #include "mpeg-ts-proto.h"
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. typedef struct mpeg_muxer_t mpeg_muxer_t;
  12. typedef struct ps_muxer_func_t mpeg_muxer_func_t;
  13. /// Create/Destroy MPEG2-TS/PS muxer
  14. mpeg_muxer_t *mpeg_muxer_create(int is_ps, const mpeg_muxer_func_t *func, void *param);
  15. int mpeg_muxer_destroy(mpeg_muxer_t *muxer);
  16. /// Add audio/video stream
  17. /// @param[in] codecid PSI_STREAM_H264/PSI_STREAM_H265/PSI_STREAM_AAC, see more @mpeg-ts-proto.h
  18. /// @param[in] extradata itu h.222.0 program and program element descriptors, NULL for H.264/H.265/AAC
  19. /// @param[in] bytes extradata size in byte
  20. /// @return <=0-error, >0-audio/video stream id
  21. int mpeg_muxer_add_stream(mpeg_muxer_t *muxer, int codecid, const void *extradata, size_t extradata_size);
  22. /// input ES
  23. /// @param[in] muxer object return by mpeg_muxer_create
  24. /// @param[in] stream stream id, return by mpeg_muxer_add_stream
  25. /// @param[in] flags 0x0001-video IDR frame, 0x8000-H.264/H.265 with AUD
  26. /// @param[in] pts presentation time stamp(in 90KHZ)
  27. /// @param[in] dts decoding time stamp(in 90KHZ)
  28. /// @param[in] data ES memory
  29. /// @param[in] bytes ES length in byte
  30. /// @return 0-ok, ENOMEM-alloc failed, <0-error
  31. int mpeg_muxer_input(mpeg_muxer_t *muxer, int stream, int flags, int64_t pts, int64_t dts, const void *data, size_t bytes);
  32. ///////////////////// The following interfaces are only applicable to mpeg-ts ///////////////////////////////
  33. /// Reset PAT/PCR period
  34. int mpeg_muxer_reset(mpeg_muxer_t *muxer);
  35. /// FOR MULTI-PROGRAM TS STREAM ONLY
  36. /// Add a program
  37. /// @param[in] pn program number, valid value: [1, 0xFFFF]
  38. /// @return 0-OK, <0-error
  39. int mpeg_muxer_add_program(mpeg_muxer_t *muxer, uint16_t pn, const void *info, int bytes);
  40. /// Remove a program by program number
  41. /// @param[in] pn program number, valid value: [1, 0xFFFF]
  42. /// @return 0-OK, <0-error
  43. int mpeg_muxer_remove_program(mpeg_muxer_t *muxer, uint16_t pn);
  44. /// Add program stream(same as mpeg_ts_add_stream except program number)
  45. /// @param[in] pn mpeg_ts_add_program program number
  46. /// @return 0-OK, <0-error
  47. int mpeg_muxer_add_program_stream(mpeg_muxer_t *muxer, uint16_t pn, int codecid, const void *extra_data, size_t extra_data_size);
  48. #ifdef __cplusplus
  49. }
  50. #endif
  51. #endif /* !_mpeg_muxer_h_ */