add support for parsing extended channel name descriptor 0xA0

[email protected] (Michael Krufky)
Newsgroups gmane.comp.video.videolan.libdvbpsi.devel
Message-ID <[email protected]>
libdvbpsi | branch: master | Michael Krufky <[email protected]> | Sun May 19 17:47:05 2013 -0400| [0d969f66b6b39cb19b08ee6e6b20deda98d6f37b] | committer: Jean-Paul Saman

add support for parsing extended channel name descriptor 0xA0

Signed-off-by: Michael Krufky <[email protected]>

> http://git.videolan.org/gitweb.cgi/libdvbpsi.git/?a=commit;h=0d969f66b6b39cb19b08ee6e6b20deda98d6f37b
---

 src/Makefile.am         |    4 ++-
 src/descriptors/dr_a0.c |   71 +++++++++++++++++++++++++++++++++++++++++++++
 src/descriptors/dr_a0.h |   74 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 148 insertions(+), 1 deletion(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index e8a0b6c..61ec5ae 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -69,6 +69,7 @@ pkginclude_HEADERS = dvbpsi.h psi.h descriptor.h demux.h \
 		     descriptors/dr_83.h \
 		     descriptors/dr_86.h \
 		     descriptors/dr_8a.h \
+		     descriptors/dr_a0.h \
                      descriptors/dr.h
 
 descriptors_src = descriptors/dr_02.c \
@@ -119,7 +120,8 @@ descriptors_src = descriptors/dr_02.c \
                   descriptors/dr_7c.c \
                   descriptors/dr_83.c \
                   descriptors/dr_86.c \
-		  descriptors/dr_8a.c
+		  descriptors/dr_8a.c \
+		  descriptors/dr_a0.c
 
 tables_src = tables/pat.c tables/pat_private.h \
              tables/pmt.c tables/pmt_private.h \
diff --git a/src/descriptors/dr_a0.c b/src/descriptors/dr_a0.c
new file mode 100644
index 0000000..4a4a890
--- /dev/null
+++ b/src/descriptors/dr_a0.c
@@ -0,0 +1,71 @@
+/*
+Copyright (C) 2013  Michael Krufky
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+dr_a0.c
+
+Decode Extended Channel Name Descriptor.
+
+*/
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+#if defined(HAVE_INTTYPES_H)
+#include <inttypes.h>
+#elif defined(HAVE_STDINT_H)
+#include <stdint.h>
+#endif
+
+#include "../dvbpsi.h"
+#include "../dvbpsi_private.h"
+#include "../descriptor.h"
+
+#include "dr_a0.h"
+
+/*****************************************************************************
+ * dvbpsi_ExtendedChannelNameDr
+ *****************************************************************************/
+dvbpsi_extended_channel_name_dr_t *dvbpsi_ExtendedChannelNameDr(dvbpsi_descriptor_t *p_descriptor)
+{
+    dvbpsi_extended_channel_name_dr_t *p_decoded;
+
+    /* Check the tag */
+    if (p_descriptor->i_tag != 0xA0)
+        return NULL;
+
+    /* Don't decode twice */
+    if (p_descriptor->p_decoded)
+        return p_descriptor->p_decoded;
+
+    /* Check length */
+    if (!p_descriptor->i_length)
+        return NULL;
+
+    p_decoded = (dvbpsi_extended_channel_name_dr_t*)malloc(sizeof(dvbpsi_extended_channel_name_dr_t));
+    if (!p_decoded)
+        return NULL;
+
+    p_descriptor->p_decoded = (void*)p_decoded;
+
+    p_decoded->i_long_channel_name_length = p_descriptor->i_length;
+    memcpy(p_decoded->i_long_channel_name, p_descriptor->p_data, p_descriptor->i_length);
+
+    return p_decoded;
+}
diff --git a/src/descriptors/dr_a0.h b/src/descriptors/dr_a0.h
new file mode 100644
index 0000000..7c1394e
--- /dev/null
+++ b/src/descriptors/dr_a0.h
@@ -0,0 +1,74 @@
+/*
+Copyright (C) 2013  Michael Krufky
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+dr_a0.h
+
+Decode Extended Channel Name Descriptor.
+
+*/
+
+/*!
+ * \file dr_a0.h
+ * \author Michael Krufky
+ * \brief Decode Extended Channel Name Descriptor.
+ */
+
+#ifndef _DR_A0_H
+#define _DR_A0_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * dvbpsi_extended_channel_name_dr_s
+ *****************************************************************************/
+/*!
+ * \struct dvbpsi_extended_channel_name_dr_s
+ * \brief Extended Channel Name Descriptor
+ *
+ * This structure is used to store a decoded Extended Channel Name descriptor.
+ */
+/*!
+ * \typedef struct dvbpsi_extended_channel_name_dr_s dvbpsi_extended_channel_name_dr_t
+ * \brief dvbpsi_extended_channel_name_dr_t type definition.
+ */
+typedef struct dvbpsi_extended_channel_name_dr_s
+{
+    uint8_t    i_long_channel_name_length;  /*!< Length in bytes */
+    uint8_t    i_long_channel_name[256];    /*!< multiple string structure format. */
+
+}dvbpsi_extended_channel_name_dr_t;
+
+/*****************************************************************************
+ * dvbpsi_ExtendedChannelNameDr
+ *****************************************************************************/
+/*!
+ * \fn dvbpsi_extended_channel_name_dr_t dvbpsi_ExtendedChannelNameDr(dvbpsi_descriptor_t *p_descriptor)
+ * \brief Decode a Extended Channel Name descriptor (tag 0xA0)
+ * \param p_descriptor Raw descriptor to decode.
+ * \return NULL if the descriptor could not be decoded or a pointer to a
+ *         dvbpsi_extended_channel_name_dr_t structure.
+ */
+dvbpsi_extended_channel_name_dr_t *dvbpsi_ExtendedChannelNameDr(dvbpsi_descriptor_t *p_descriptor);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+

_______________________________________________
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.