[libdvbpsi-devel] dr_a1: convert from linked list to array
Michael Krufky
git at videolan.org
Tue Feb 4 11:21:59 CET 2014
libdvbpsi | branch: master | Michael Krufky <mkrufky at linuxtv.org> | 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 <mkrufky at linuxtv.org>
> 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
More information about the libdvbpsi-devel
mailing list