atsc_psip_section.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "atsc_psip_section.h"
  2. struct ATSC_extended_channel_name_descriptor read_ATSC_extended_channel_name_descriptor(const u8 *b)
  3. {
  4. struct ATSC_extended_channel_name_descriptor v;
  5. v.descriptor_tag = getBits(b, 0, 8);
  6. v.descriptor_length = getBits(b, 8, 8);
  7. v.TODO = getBits(b, 16, 1);
  8. return v;
  9. }
  10. struct ATSC_service_location_descriptor read_ATSC_service_location_descriptor(const u8 *b)
  11. {
  12. struct ATSC_service_location_descriptor v;
  13. v.descriptor_tag = getBits(b, 0, 8);
  14. v.descriptor_length = getBits(b, 8, 8);
  15. v.reserved = getBits(b, 16, 3);
  16. v.PCR_PID = getBits(b, 19,13);
  17. v.number_elements = getBits(b, 32, 8);
  18. return v;
  19. }
  20. struct ATSC_service_location_element read_ATSC_service_location_element(const u8 *b)
  21. {
  22. struct ATSC_service_location_element v;
  23. v.stream_type = getBits(b, 0, 8);
  24. v.reserved = getBits(b, 8, 3);
  25. v.elementary_PID = getBits(b, 11,13);
  26. v.ISO_639_language_code = getBits(b, 24,24);
  27. return v;
  28. }
  29. struct tvct_channel read_tvct_channel(const u8 *b)
  30. {
  31. struct tvct_channel v;
  32. v.short_name0 = getBits(b, 0,16);
  33. v.short_name1 = getBits(b, 16,16);
  34. v.short_name2 = getBits(b, 32,16);
  35. v.short_name3 = getBits(b, 48,16);
  36. v.short_name4 = getBits(b, 64,16);
  37. v.short_name5 = getBits(b, 80,16);
  38. v.short_name6 = getBits(b, 96,16);
  39. v.reserved0 = getBits(b,112, 4);
  40. v.major_channel_number = getBits(b,116,10);
  41. v.minor_channel_number = getBits(b,126,10);
  42. v.modulation_mode = getBits(b,136, 8);
  43. v.carrier_frequency = getBits(b,144,32);
  44. v.channel_TSID = getBits(b,176,16);
  45. v.program_number = getBits(b,192,16);
  46. v.ETM_location = getBits(b,208, 2);
  47. v.access_controlled = getBits(b,210, 1);
  48. v.hidden = getBits(b,211, 1);
  49. v.reserved1 = getBits(b,212, 2);
  50. v.hide_guide = getBits(b,214, 1);
  51. v.reserved2 = getBits(b,215, 3);
  52. v.service_type = getBits(b,218, 6);
  53. v.source_id = getBits(b,224,16);
  54. v.reserved3 = getBits(b,240, 6);
  55. v.descriptors_length = getBits(b,246,10);
  56. return v;
  57. }