dr_a1: convert from linked list to array
[email protected] (Michael Krufky)
| Newsgroups | gmane.comp.video.videolan.libdvbpsi.devel |
|---|---|
| Message-ID | <[email protected]> |
libdvbpsi | branch: master | Michael Krufky <[email protected]> | Mon May 20 21:03:52 2013 -0400| [70b55cdd0819dcc143f7dbd5ede6e4db8557524a] | committer: Jean-Paul Saman dr_a1: convert from linked list to array Signed-off-by: Michael Krufky <[email protected]> > http://git.videolan.org/gitweb.cgi/libdvbpsi.git/?a=commit;h=70b55cdd0819dcc143f7dbd5ede6e4db8557524a --- src/descriptors/dr_a1.c | 44 ++------------------------------------------ src/descriptors/dr_a1.h | 17 +---------------- 2 files changed, 3 insertions(+), 58 deletions(-) diff --git a/src/descriptors/dr_a1.c b/src/descriptors/dr_a1.c index e855c19..d4ac666 100644 --- a/src/descriptors/dr_a1.c +++ b/src/descriptors/dr_a1.c @@ -80,31 +80,12 @@ dvbpsi_DecodeServiceLocationDr (dvbpsi_descriptor_t * p_descriptor) for (int i = 0; i < p_decoded->i_number_elements; i++) { - dvbpsi_service_location_element_t *p_element = - (dvbpsi_service_location_element_t *) - malloc (sizeof (dvbpsi_service_location_element_t)); - - if (!p_element) - return NULL; - - memset (p_element, 0, sizeof (dvbpsi_service_location_element_t)); + dvbpsi_service_location_element_t *p_element = &p_decoded->elements[i]; p_element->i_stream_type = buf[0]; - p_element->i_elementary_pid = - ((uint16_t) (buf[1] & 0x1f) << 8) | buf[2]; + p_element->i_elementary_pid = ((uint16_t) (buf[1] & 0x1f) << 8) | buf[2]; memcpy (p_element->i_iso_639_code, &buf[3], 3); - if (p_decoded->p_first_element == NULL) - p_decoded->p_first_element = p_element; - else - { - dvbpsi_service_location_element_t *p_last_element = - p_decoded->p_first_element; - while (p_last_element->p_next != NULL) - p_last_element = p_last_element->p_next; - p_last_element->p_next = p_element; - } - buf += 6; } @@ -112,27 +93,6 @@ dvbpsi_DecodeServiceLocationDr (dvbpsi_descriptor_t * p_descriptor) return p_decoded; } -/***************************************************************************** - * dvbpsi_FreeServiceLocationDr - *****************************************************************************/ -void -dvbpsi_FreeServiceLocationDr (dvbpsi_service_location_dr_t * descriptor) -{ - dvbpsi_service_location_element_t *p_element = NULL; - - if (descriptor == NULL) - return; - - p_element = descriptor->p_first_element; - - while (p_element) - { - dvbpsi_service_location_element_t *p_next = p_element->p_next; - free (p_element); - p_element = p_next; - } -} - #if 0 /***************************************************************************** * dvbpsi_GenServiceDr diff --git a/src/descriptors/dr_a1.h b/src/descriptors/dr_a1.h index 867f9ca..09fa5d2 100644 --- a/src/descriptors/dr_a1.h +++ b/src/descriptors/dr_a1.h @@ -41,9 +41,6 @@ extern "C" uint8_t i_stream_type; uint16_t i_elementary_pid; char i_iso_639_code[3]; - - struct dvbpsi_service_location_element_s *p_next; - } dvbpsi_service_location_element_t; /***************************************************************************** @@ -65,7 +62,7 @@ extern "C" uint16_t i_pcr_pid; /*!< PCR_PID */ uint8_t i_number_elements; /*!< number of elements used for this service */ - dvbpsi_service_location_element_t *p_first_element; + dvbpsi_service_location_element_t elements[0xff]; } dvbpsi_service_location_dr_t; @@ -84,18 +81,6 @@ extern "C" dvbpsi_service_location_dr_t *dvbpsi_DecodeServiceLocationDr (dvbpsi_descriptor_t * p_descriptor); - -/***************************************************************************** - * dvbpsi_FreeServiceLocationDr - *****************************************************************************/ -/*! - * \fn void dvbpsi_FreeServiceLocationDr( - dvbpsi_service_location_dr_t * p_descriptor) - * \brief frees service location descriptor - * \param p_descriptor pointer to the descriptor structure - */ - void dvbpsi_FreeServiceLocationDr (dvbpsi_service_location_dr_t * - p_descriptor); #if 0 /***************************************************************************** * dvbpsi_GenServiceDataDr _______________________________________________ libdvbpsi-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libdvbpsi-devel