st_section.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * section and descriptor parser
  3. *
  4. * Copyright (C) 2005 Kenneth Aafloy (kenneth@linuxtv.org)
  5. * Copyright (C) 2005 Andrew de Quincey (adq_dvb@lidskialf.net)
  6. *
  7. * This library is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2.1 of the License, or (at your option) any later version.
  11. *
  12. * This library is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with this library; if not, write to the Free Software
  19. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
  20. */
  21. #ifndef _UCSI_DVB_ST_SECTION_H
  22. #define _UCSI_DVB_ST_SECTION_H 1
  23. #ifdef __cplusplus
  24. extern "C"
  25. {
  26. #endif
  27. #include <libucsi/section.h>
  28. /**
  29. * dvb_st_section structure.
  30. */
  31. struct dvb_st_section {
  32. struct section head;
  33. /* uint8_t data[] */
  34. };
  35. /**
  36. * Process a dvb_st_section.
  37. *
  38. * @param section Generic section header.
  39. * @return dvb_st_section pointer, or NULL on error.
  40. */
  41. struct dvb_st_section *dvb_st_section_codec(struct section *section);
  42. /**
  43. * Accessor for data field of dvb_st_section.
  44. *
  45. * @param st dvb_st_section Pointer.
  46. * @return Pointer to field.
  47. */
  48. static inline uint8_t*
  49. dvb_st_section_data(struct dvb_st_section* st)
  50. {
  51. return (uint8_t*) st + sizeof(struct dvb_st_section);
  52. }
  53. /**
  54. * Calculate length of data field of dvb_st_section.
  55. *
  56. * @param st dvb_st_section Pointer.
  57. * @return Length in bytes.
  58. */
  59. static inline int
  60. dvb_st_section_data_length(struct dvb_st_section* st)
  61. {
  62. return st->head.length;
  63. }
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. #endif