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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.