Commit 70b55cdd authored by Michael Krufky's avatar Michael Krufky Committed by Jean-Paul Saman

dr_a1: convert from linked list to array

Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
parent 9ce75c05
......@@ -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
......
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment