Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

101 Zeilen
2.8KB

  1. #ifndef _mpeg_ts_internal_h_
  2. #define _mpeg_ts_internal_h_
  3. #include "mpeg-proto.h"
  4. #include "mpeg-types.h"
  5. #include "mpeg-pes-internal.h"
  6. #include "mpeg-util.h"
  7. #define TS_PACKET_SIZE 188
  8. #define TS_SYNC_BYTE 0x47
  9. struct ts_adaptation_field_t
  10. {
  11. unsigned int adaptation_field_length : 8;
  12. unsigned int discontinuity_indicator : 1;
  13. unsigned int random_access_indicator : 1;
  14. unsigned int elementary_stream_priority_indicator : 1;
  15. unsigned int PCR_flag : 1;
  16. unsigned int OPCR_flag : 1;
  17. unsigned int splicing_point_flag : 1;
  18. unsigned int transport_private_data_flag : 1;
  19. unsigned int adaptation_field_extension_flag : 1;
  20. int64_t program_clock_reference_base; // 33-bits
  21. unsigned int program_clock_reference_extension; // 9-bits
  22. int64_t original_program_clock_reference_base; // 33-bits
  23. unsigned int original_program_clock_reference_extension; // 9-bits
  24. unsigned int splice_countdown : 8;
  25. unsigned int transport_private_data_length : 8;
  26. unsigned int adaptation_field_extension_length : 8;
  27. unsigned int ltw_flag : 1;
  28. unsigned int piecewise_rate_flag : 1;
  29. unsigned int seamless_splice_flag : 1;
  30. unsigned int ltw_valid_flag : 1;
  31. unsigned int ltw_offset : 15;
  32. unsigned int piecewise_rate : 22;
  33. unsigned int Splice_type : 4;
  34. int64_t DTS_next_AU;
  35. };
  36. struct ts_packet_header_t
  37. {
  38. unsigned int transport_error_indicator : 1;
  39. unsigned int payload_unit_start_indicator : 1;
  40. unsigned int transport_priority : 1;
  41. unsigned int transport_scrambling_control : 2;
  42. unsigned int adaptation_field_control : 2;
  43. unsigned int continuity_counter : 4;
  44. struct ts_adaptation_field_t adaptation;
  45. };
  46. struct pmt_t
  47. {
  48. unsigned int pid; // PID : 13 [0x0010, 0x1FFE]
  49. unsigned int pn; // program_number: 16 [1, 0xFFFF]
  50. unsigned int ver; // version_number : 5
  51. unsigned int cc; // continuity_counter : 4
  52. unsigned int PCR_PID; // 13-bits
  53. unsigned int pminfo_len;// program_info_length : 12
  54. uint8_t* pminfo; // program_info;
  55. char provider[64];
  56. char name[64];
  57. unsigned int stream_count;
  58. struct pes_t streams[4];
  59. };
  60. struct pat_t
  61. {
  62. unsigned int tsid; // transport_stream_id : 16;
  63. unsigned int ver; // version_number : 5;
  64. unsigned int cc; //continuity_counter : 4;
  65. unsigned int pmt_count;
  66. unsigned int pmt_capacity;
  67. struct pmt_t pmt_default[1];
  68. struct pmt_t* pmts;
  69. };
  70. struct pmt_t* pat_alloc_pmt(struct pat_t* pat);
  71. struct pmt_t* pat_find(struct pat_t* pat, uint16_t pn);
  72. size_t pat_read(struct pat_t *pat, const uint8_t* data, size_t bytes);
  73. size_t pat_write(const struct pat_t *pat, uint8_t *data);
  74. size_t pmt_read(struct pmt_t *pmt, const uint8_t* data, size_t bytes);
  75. size_t pmt_write(const struct pmt_t *pmt, uint8_t *data);
  76. size_t sdt_read(struct pat_t *pat, const uint8_t* data, size_t bytes);
  77. size_t sdt_write(const struct pat_t* pat, uint8_t* data);
  78. #endif /* !_mpeg_ts_internal_h_ */