aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@linuxtv.org>2013-05-21 01:03:52 (GMT)
committerJean-Paul Saman <jean-paul.saman@m2x.nl>2014-02-04 09:52:03 (GMT)
commit70b55cdd0819dcc143f7dbd5ede6e4db8557524a (patch)
tree5a2dfdfebce1cb6207d8e80f375bb28537125f24
parent9ce75c05fd7ff37fd8952b7b121e0ff8ae614f32 (diff)
dr_a1: convert from linked list to array
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
-rw-r--r--src/descriptors/dr_a1.c44
-rw-r--r--src/descriptors/dr_a1.h17
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

Privacy Policy