選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

mpeg-element-descriptor.h 5.9KB

10ヶ月前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. #ifndef _mpeg_element_descriptor_h_
  2. #define _mpeg_element_descriptor_h_
  3. #include "mpeg-util.h"
  4. #define SERVICE_ID 0x71
  5. #define SERVICE_NAME "ireader/media-server"
  6. int mpeg_elment_descriptor(struct mpeg_bits_t* reader);
  7. typedef struct _video_stream_descriptor_t
  8. {
  9. uint32_t multiple_frame_rate_flag : 1;
  10. // Table 2-47 - Frame rate code
  11. // 23.976/24.0/25.0/29.97/30.0/50.0/59.94/60.0
  12. uint32_t frame_rate_code : 4;
  13. uint32_t MPEG_1_only_flag : 1;
  14. uint32_t constrained_parameter_flag : 1;
  15. uint32_t still_picture_flag : 1;
  16. // MPEG_1_only_flag == 0
  17. uint32_t profile_and_level_indication : 8;
  18. uint32_t chroma_format : 2;
  19. uint32_t frame_rate_extension_flag : 1;
  20. } video_stream_descriptor_t;
  21. int video_stream_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  22. typedef struct _audio_stream_descriptor_t
  23. {
  24. uint32_t free_format_flag : 1;
  25. uint32_t ID : 1;
  26. uint32_t layer : 2;
  27. uint32_t variable_rate_audio_indicator : 1;
  28. } audio_stream_descriptor_t;
  29. int audio_stream_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  30. /*
  31. Table 2-50 - Hierarchy_type field values
  32. Value Description
  33. 0 Reserved
  34. 1 Spatial Scalability
  35. 2 SNR Scalability
  36. 3 Temporal Scalability
  37. 4 Data partitioning
  38. 5 Extension bitstream
  39. 6 Private Stream
  40. 7 Multi-view Profile
  41. 8 Combined Scalability
  42. 9 MVC video sub-bitstream
  43. 10-14 Reserved
  44. 15 Base layer or MVC base view sub-bitstream or AVC video sub-bitstream of MVC
  45. */
  46. typedef struct _hierarchy_descriptor_t
  47. {
  48. uint32_t no_view_scalability_flag : 1;
  49. uint32_t no_temporal_scalability_flag : 1;
  50. uint32_t no_spatial_scalability_flag : 1;
  51. uint32_t no_quality_scalability_flag : 1;
  52. uint32_t hierarchy_type : 4;
  53. uint32_t tref_present_flag : 1;
  54. uint32_t reserved1 : 1;
  55. uint32_t hierarchy_layer_index : 6;
  56. uint32_t reserved2 : 2;
  57. uint32_t hierarchy_embedded_layer_index : 6;
  58. uint32_t reserved3 : 2;
  59. uint32_t hierarchy_channel : 6;
  60. } hierarchy_descriptor_t;
  61. int hierarchy_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  62. int registration_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  63. typedef struct _language_descriptor_t
  64. {
  65. uint32_t code : 24;
  66. uint32_t audio : 8;
  67. } language_descriptor_t;
  68. int language_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  69. typedef struct _system_clock_descriptor_t
  70. {
  71. uint32_t external_clock_reference_indicator : 1;
  72. uint32_t clock_accuracy_integer : 6;
  73. uint32_t clock_accuracy_exponent : 3;
  74. } system_clock_descriptor_t;
  75. int system_clock_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  76. typedef struct _mpeg4_video_descriptor_t
  77. {
  78. uint8_t visual_profile_and_level;
  79. } mpeg4_video_descriptor_t;
  80. int mpeg4_video_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  81. typedef struct _metadata_pointer_descriptor
  82. {
  83. uint32_t metadata_application_format_identifier;
  84. uint32_t metadata_format_identifier;
  85. uint8_t metadata_service_id;
  86. uint8_t metadata_locator_record_length;
  87. uint8_t MPEG_carriage_flags;
  88. uint16_t program_number;
  89. uint16_t transport_stream_location;
  90. uint16_t transport_stream_id;
  91. } metadata_pointer_descriptor_t;
  92. int metadata_pointer_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  93. typedef struct _metadata_descriptor_t
  94. {
  95. uint32_t metadata_application_format_identifier;
  96. uint32_t metadata_format_identifier;
  97. uint8_t metadata_service_id;
  98. uint8_t service_identification_length;
  99. uint8_t decoder_config_flags;
  100. uint8_t decoder_config_length;
  101. uint8_t dec_config_identification_record_length;
  102. uint8_t decoder_config_metadata_service_id;
  103. } metadata_descriptor_t;
  104. int metadata_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  105. typedef struct _mpeg4_audio_descriptor_t
  106. {
  107. uint8_t profile_and_level;
  108. } mpeg4_audio_descriptor_t;
  109. int mpeg4_audio_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  110. typedef struct _avc_video_descriptor_t
  111. {
  112. uint32_t profile_idc : 8;
  113. uint32_t constraint_set0_flag : 1;
  114. uint32_t constraint_set1_flag : 1;
  115. uint32_t constraint_set2_flag : 1;
  116. uint32_t constraint_set3_flag : 1;
  117. uint32_t constraint_set4_flag : 1;
  118. uint32_t constraint_set5_flag : 1;
  119. uint32_t AVC_compatible_flags : 2;
  120. uint32_t level_idc : 8;
  121. uint32_t AVC_still_present : 1;
  122. uint32_t AVC_24_hour_picture_flag : 1;
  123. uint32_t frame_packing_SEI_not_present_flag : 1;
  124. } avc_video_descriptor_t;
  125. int avc_video_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  126. typedef struct _avc_timing_hrd_descriptor_t
  127. {
  128. uint32_t hrd_management_valid_flag : 1;
  129. uint32_t picture_and_timing_info_present : 1;
  130. uint32_t _90kHZ_flag : 1;
  131. uint32_t fixed_frame_rate_flag : 1;
  132. uint32_t temporal_poc_flag : 1;
  133. uint32_t picture_to_display_conversion_flag : 1;
  134. uint32_t N;
  135. uint32_t K;
  136. uint32_t num_unit_in_tick;
  137. } avc_timing_hrd_descriptor_t;
  138. int avc_timing_hrd_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  139. typedef struct _mpeg2_aac_descriptor_t
  140. {
  141. uint32_t profile : 8;
  142. uint32_t channel_configuration : 8;
  143. uint32_t additional_information : 8;
  144. } mpeg2_aac_descriptor_t;
  145. int mpeg2_aac_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  146. typedef struct _svc_extension_descriptor_t
  147. {
  148. uint16_t width;
  149. uint16_t height;
  150. uint16_t frame_rate;
  151. uint16_t average_bitrate;
  152. uint16_t maximum_bitrate;
  153. uint32_t quality_id_start : 4;
  154. uint32_t quality_id_end : 4;
  155. uint32_t temporal_id_start : 3;
  156. uint32_t temporal_id_end : 3;
  157. uint32_t dependency_id : 3;
  158. uint32_t no_sei_nal_unit_present : 1;
  159. } svc_extension_descriptor_t;
  160. int svc_extension_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  161. typedef struct _mvc_extension_descriptor_t
  162. {
  163. uint16_t average_bit_rate;
  164. uint16_t maximum_bitrate;
  165. uint32_t view_order_index_min : 10;
  166. uint32_t view_order_index_max : 10;
  167. uint32_t temporal_id_start : 3;
  168. uint32_t temporal_id_end : 3;
  169. uint32_t no_sei_nal_unit_present : 1;
  170. uint32_t no_prefix_nal_unit_present : 1;
  171. } mvc_extension_descriptor_t;
  172. int mvc_extension_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  173. int clock_extension_descriptor(struct mpeg_bits_t* reader, uint8_t len);
  174. size_t clock_extension_descriptor_write(uint8_t* data, size_t bytes, int64_t clock);
  175. size_t service_extension_descriptor_write(uint8_t* data, size_t bytes);
  176. #endif /* !_mpeg_element_descriptor_h_ */