[PATCH] Add 0x40 0x41 0x49 descriptor support
Roberto Corno <[email protected]>
| Newsgroups | gmane.comp.video.videolan.libdvbpsi.devel |
|---|---|
| Message-ID | <CAO6YRm-bF6+zcRWiPBiDzAZuNnOGXc8QXDGpuNW7vznsg7gSww@mail.gmail.com> |
Hi Jean Paul,
here are the patches attached as you requested.
I've fixed all the issues you pointed out in your last email, everything
should be fine now.
I've attached the patch for the descriptor 0x40 too (the one I've asked you
about yesterday)
Kind regards,
Roberto
_______________________________________________
libdvbpsi-devel mailing list
[email protected]
http://mailman.videolan.org/listinfo/libdvbpsi-devel
0001-Add-0x40-descriptor-support.patch
(application/octet-stream, 3.9 KB)
From 16eca8ef19c1283b7eecfa61d579018eb33d0e43 Mon Sep 17 00:00:00 2001 From: Roberto Corno <[email protected]> Date: Tue, 22 May 2012 10:54:35 +0200 Subject: [PATCH 1/3] Add 0x40 descriptor support --- src/Makefile.am | 6 ++++-- src/descriptors/dr_40.c | 18 +++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 356bbc2..cda6fae 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -4,7 +4,7 @@ pkgincludedir = $(includedir)/dvbpsi lib_LTLIBRARIES = libdvbpsi.la -libdvbpsi_la_SOURCES = dvbpsi.c dvbpsi_private.h \ +libdvbpsi_la_SOURCES = dvbpsi.c dvbpsi_private.h custom.c \ psi.c \ demux.c \ descriptor.c \ @@ -13,7 +13,7 @@ libdvbpsi_la_SOURCES = dvbpsi.c dvbpsi_private.h \ libdvbpsi_la_LDFLAGS = -version-info 8:0:0 -no-undefined -pkginclude_HEADERS = dvbpsi.h psi.h descriptor.h demux.h \ +pkginclude_HEADERS = dvbpsi.h psi.h descriptor.h demux.h custom.h \ tables/pat.h tables/pmt.h tables/sdt.h tables/eit.h \ tables/cat.h tables/nit.h tables/tot.h tables/sis.h \ tables/bat.h \ @@ -31,6 +31,7 @@ pkginclude_HEADERS = dvbpsi.h psi.h descriptor.h demux.h \ descriptors/dr_0d.h \ descriptors/dr_0e.h \ descriptors/dr_0f.h \ + descriptors/dr_40.h descriptors/dr_42.h \ descriptors/dr_43.h \ descriptors/dr_44.h \ @@ -63,6 +64,7 @@ descriptors_src = descriptors/dr_02.c \ descriptors/dr_0d.c \ descriptors/dr_0e.c \ descriptors/dr_0f.c \ + descriptors/dr_40.c descriptors/dr_42.c \ descriptors/dr_43.c \ descriptors/dr_44.c \ diff --git a/src/descriptors/dr_40.c b/src/descriptors/dr_40.c index 19e12be..163b836 100644 --- a/src/descriptors/dr_40.c +++ b/src/descriptors/dr_40.c @@ -48,12 +48,12 @@ dvbpsi_network_name_dr_t* dvbpsi_DecodeNetworkNameDr( dvbpsi_network_name_dr_t * p_decoded; /* Check the tag */ - if (!dvbpsi_CanDecodeAsDescriptor(p_descriptor, 0x40)) + if (p_descriptor->i_tag != 0x40) return NULL; /* Don't decode twice */ - if (dvbpsi_IsDescriptorDecoded(p_descriptor)) - return p_descriptor->p_decoded; + if (p_descriptor->p_decoded) + return p_descriptor->p_decoded; /* Allocate memory */ p_decoded = (dvbpsi_network_name_dr_t*)calloc(1, sizeof(dvbpsi_network_name_dr_t)); @@ -62,7 +62,7 @@ dvbpsi_network_name_dr_t* dvbpsi_DecodeNetworkNameDr( /* Decode data */ p_decoded->i_name_length = p_descriptor->i_length <= 255 ? - p_descriptor->i_lenght : 255; + p_descriptor->i_length : 255; if (p_decoded->i_name_length) memcpy(p_decoded->i_name_byte, p_descriptor->p_data, @@ -84,6 +84,7 @@ dvbpsi_descriptor_t * dvbpsi_GenNetworkNameDr( /* Create the descriptor */ dvbpsi_descriptor_t * p_descriptor = dvbpsi_NewDescriptor(0x40, p_decoded->i_name_length, NULL); + if (!p_descriptor) return NULL; @@ -96,9 +97,12 @@ dvbpsi_descriptor_t * dvbpsi_GenNetworkNameDr( if (b_duplicate) { /* Duplicate decoded data */ - p_descriptor->p_decoded = - dvbpsi_DuplicateDecodedDescriptor(p_descriptor->p_decoded, - sizeof(dvbpsi_network_name_dr_t)); + dvbpsi_network_name_dr_t * p_dup_decoded = + (dvbpsi_network_name_dr_t*)calloc(1, sizeof(dvbpsi_network_name_dr_t)); + if(p_dup_decoded) + memcpy(p_dup_decoded, p_decoded, sizeof(dvbpsi_network_name_dr_t)); + + p_descriptor->p_decoded = (void*)p_dup_decoded; } return p_descriptor; -- 1.7.5.4
0002-Add-0x41-descriptor-support.patch
(application/octet-stream, 9.8 KB)
From eeb92c719f86389114fcb5c8cb00fcf40c0f36da Mon Sep 17 00:00:00 2001 From: Roberto Corno <[email protected]> Date: Tue, 22 May 2012 10:56:29 +0200 Subject: [PATCH 2/3] Add 0x41 descriptor support --- src/Makefile.am | 2 + src/descriptors/dr.h | 1 + src/descriptors/dr_41.c | 121 +++++++++++++++++++++++++++++++++++++++++++++++ src/descriptors/dr_41.h | 104 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 228 insertions(+), 0 deletions(-) create mode 100644 src/descriptors/dr_41.c create mode 100644 src/descriptors/dr_41.h diff --git a/src/Makefile.am b/src/Makefile.am index cda6fae..795dcb8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -32,6 +32,7 @@ pkginclude_HEADERS = dvbpsi.h psi.h descriptor.h demux.h custom.h \ descriptors/dr_0e.h \ descriptors/dr_0f.h \ descriptors/dr_40.h + descriptors/dr_41.h \ descriptors/dr_42.h \ descriptors/dr_43.h \ descriptors/dr_44.h \ @@ -65,6 +66,7 @@ descriptors_src = descriptors/dr_02.c \ descriptors/dr_0e.c \ descriptors/dr_0f.c \ descriptors/dr_40.c + descriptors/dr_41.c \ descriptors/dr_42.c \ descriptors/dr_43.c \ descriptors/dr_44.c \ diff --git a/src/descriptors/dr.h b/src/descriptors/dr.h index 93b27ee..5e71541 100644 --- a/src/descriptors/dr.h +++ b/src/descriptors/dr.h @@ -47,6 +47,7 @@ #include "dr_0e.h" #include "dr_0f.h" #include "dr_40.h" +#include "dr_41.h" #include "dr_42.h" #include "dr_43.h" #include "dr_44.h" diff --git a/src/descriptors/dr_41.c b/src/descriptors/dr_41.c new file mode 100644 index 0000000..48fb582 --- /dev/null +++ b/src/descriptors/dr_41.c @@ -0,0 +1,121 @@ +/* + * dr_41.c + * Copyright (C) 2012 VideoLAN + * + * Authors: rcorno (May 21, 2012) + * + * 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 + * + *****************************************************************************/ + +#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_41.h" + +/***************************************************************************** + * dvbpsi_DecodeServiceListDr + *****************************************************************************/ +dvbpsi_service_list_dr_t* dvbpsi_DecodeServiceListDr( + dvbpsi_descriptor_t * p_descriptor) +{ + dvbpsi_service_list_dr_t * p_decoded; + int i,service_count; + + /* Check the tag */ + if (p_descriptor->i_tag != 0x41) + return NULL; + + /* Don't decode twice */ + if (p_descriptor->p_decoded) + return p_descriptor->p_decoded; + + /* Check the length */ + service_count = p_descriptor->i_length / 3; + if((p_descriptor->i_length < 1) || (p_descriptor->i_length % 3 != 0) || (service_count>63)) + return NULL; + + /* Allocate memory */ + p_decoded = (dvbpsi_service_list_dr_t*)calloc(1, sizeof(dvbpsi_service_list_dr_t)); + if (!p_decoded) + return NULL; + + /* Decode data */ + p_decoded->i_service_count = service_count; + i=0; + while( i < p_decoded->i_service_count ) { + p_decoded->i_service[i].i_service_id = ((uint16_t)(p_descriptor->p_data[i*3]) << 8) + | p_descriptor->p_data[i*3+1]; + p_decoded->i_service[i].i_service_type = p_descriptor->p_data[i*3+2]; + i++; + } + + p_descriptor->p_decoded = (void*)p_decoded; + + return p_decoded; +} + + +/***************************************************************************** + * dvbpsi_GenServiceListDr + *****************************************************************************/ +dvbpsi_descriptor_t * dvbpsi_GenServiceListDr( + dvbpsi_service_list_dr_t * p_decoded, + bool b_duplicate) +{ + /* Check the length */ + if (p_decoded->i_service_count > 63) + return NULL; + + /* Create the descriptor */ + dvbpsi_descriptor_t * p_descriptor = + dvbpsi_NewDescriptor(0x83, p_decoded->i_service_count*3, NULL); + + if (!p_descriptor) + return NULL; + + /* Encode data */ + int i = 0; + while( i < p_decoded->i_service_count ) { + p_descriptor->p_data[i*3] = p_decoded->i_service[i].i_service_id >> 8; + p_descriptor->p_data[i*3+1] = p_decoded->i_service[i].i_service_id; + p_descriptor->p_data[i*3+2] = p_decoded->i_service[i].i_service_type; + i++; + } + + if (b_duplicate) + { + /* Duplicate decoded data */ + p_descriptor->p_decoded = + dvbpsi_DuplicateDecodedDescriptor(p_descriptor->p_decoded, + sizeof(dvbpsi_service_list_dr_t)); + } + + return p_descriptor; +} diff --git a/src/descriptors/dr_41.h b/src/descriptors/dr_41.h new file mode 100644 index 0000000..dc7b171 --- /dev/null +++ b/src/descriptors/dr_41.h @@ -0,0 +1,104 @@ +/***************************************************************************** + * dr_41.h + * Copyright (C) 2012 VideoLAN + * + * Authors: rcorno (May 21, 2012) + * + * 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 + * + *****************************************************************************/ + +/*! + * \file <dr_41.h> + * \author Corno Roberto <[email protected]> + * \brief Application interface for the DVB "service list" + * descriptor decoder and generator. + * + * Application interface for the DVB "service list" descriptor + * decoder and generator. This descriptor's definition can be found in + * ETSI EN 300 468 section 6.2.35. + */ + +#ifndef DR_41_H_ +#define DR_41_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************** + * dvbpsi_network_name_dr_t + *****************************************************************************/ +/*! + * \struct dvbpsi_service_list_dr_t + * \brief "service list" descriptor structure. + * + * This structure is used to store a decoded "service list" + * descriptor. (ETSI EN 300 468 section 6.2.35). + */ +/*! + * \typedef struct dvbpsi_service_list_dr_s dvbpsi_service_list_dr_t + * \brief dvbpsi_service_list_dr_t type definition. + */ +typedef struct dvbpsi_service_list_dr_s +{ + uint8_t i_service_count; /*!< length of the i_service_list + array */ + struct { + uint16_t i_service_id; /*!< service id */ + uint8_t i_service_type; /*!< service type */ + } i_service[64]; + +} dvbpsi_service_list_dr_t; + +/***************************************************************************** + * dvbpsi_DecodeServiceListDr + *****************************************************************************/ +/*! + * \fn dvbpsi_service_list_dr_t * dvbpsi_DecodeServiceListDr( + dvbpsi_descriptor_t * p_descriptor) + * \brief "service list" descriptor decoder. + * \param p_descriptor pointer to the descriptor structure + * \return a pointer to a new "service list" descriptor structure + * which contains the decoded data. + */ +dvbpsi_service_list_dr_t* dvbpsi_DecodeServiceListDr( + dvbpsi_descriptor_t * p_descriptor); + + +/***************************************************************************** + * dvbpsi_GenServiceListDr + *****************************************************************************/ +/*! + * \fn dvbpsi_descriptor_t * dvbpsi_GenServiceListDr( + dvbpsi_service_list_dr_t * p_decoded, int b_duplicate) + * \brief "service list" descriptor generator. + * \param p_decoded pointer to a decoded "service list" descriptor + * structure + * \param b_duplicate if non zero then duplicate the p_decoded structure into + * the descriptor + * \return a pointer to a new descriptor structure which contains encoded data. + */ +dvbpsi_descriptor_t * dvbpsi_GenServiceListDr( + dvbpsi_service_list_dr_t * p_decoded, + bool b_duplicate); + +#ifdef __cplusplus +}; +#endif + +#else +#error "Multiple inclusions of dr_41.h" +#endif /* DR_41_H_ */ -- 1.7.5.4
0003-Add-0x49-descriptor-support.patch
(application/octet-stream, 10.3 KB)
From bfb898d81d8627fa39f0bded55d2f27da4f0cac8 Mon Sep 17 00:00:00 2001 From: Roberto Corno <[email protected]> Date: Tue, 22 May 2012 10:57:46 +0200 Subject: [PATCH 3/3] Add 0x49 descriptor support --- src/Makefile.am | 2 + src/descriptors/dr.h | 1 + src/descriptors/dr_49.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++ src/descriptors/dr_49.h | 106 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 232 insertions(+), 0 deletions(-) create mode 100644 src/descriptors/dr_49.c create mode 100644 src/descriptors/dr_49.h diff --git a/src/Makefile.am b/src/Makefile.am index 795dcb8..2b7bfae 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -39,6 +39,7 @@ pkginclude_HEADERS = dvbpsi.h psi.h descriptor.h demux.h custom.h \ descriptors/dr_45.h \ descriptors/dr_47.h \ descriptors/dr_48.h \ + descriptors/dr_49.h \ descriptors/dr_4d.h \ descriptors/dr_4e.h \ descriptors/dr_52.h \ @@ -73,6 +74,7 @@ descriptors_src = descriptors/dr_02.c \ descriptors/dr_45.c \ descriptors/dr_47.c \ descriptors/dr_48.c \ + descriptors/dr_49.c \ descriptors/dr_4d.c \ descriptors/dr_4e.c \ descriptors/dr_52.c \ diff --git a/src/descriptors/dr.h b/src/descriptors/dr.h index 5e71541..c866135 100644 --- a/src/descriptors/dr.h +++ b/src/descriptors/dr.h @@ -54,6 +54,7 @@ #include "dr_45.h" #include "dr_47.h" #include "dr_48.h" +#include "dr_49.h" #include "dr_4d.h" #include "dr_4e.h" #include "dr_52.h" diff --git a/src/descriptors/dr_49.c b/src/descriptors/dr_49.c new file mode 100644 index 0000000..26131a0 --- /dev/null +++ b/src/descriptors/dr_49.c @@ -0,0 +1,123 @@ +/* + * dr_49.c + * Copyright (C) 2012 VideoLAN + * + * Authors: rcorno (May 21, 2012) + * + * 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 + * + *****************************************************************************/ + +#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_49.h" + +/***************************************************************************** + * dvbpsi_DecodeCountryAvailability + *****************************************************************************/ +dvbpsi_country_availability_dr_t* dvbpsi_DecodeCountryAvailability( + dvbpsi_descriptor_t * p_descriptor) +{ + dvbpsi_country_availability_dr_t * p_decoded; + int i,code_count; + + /* Check the tag */ + if (p_descriptor->i_tag != 0x49) + return NULL; + + /* Don't decode twice */ + if (p_descriptor->p_decoded) + return p_descriptor->p_decoded; + + /* Check the length */ + code_count = (p_descriptor->i_length-1) / 3; + if((p_descriptor->i_length < 1) || ((p_descriptor->i_length-1) % 3 != 0) || (code_count > 83)) + return NULL; + + /* Allocate memory */ + p_decoded = (dvbpsi_country_availability_dr_t*)calloc(1, sizeof(dvbpsi_country_availability_dr_t)); + if (!p_decoded) + return NULL; + + /* Decode data */ + p_decoded->i_code_count = code_count; + p_decoded->b_country_availability_flag = p_descriptor->p_data[0] & 0x80; + i=0; + while( i < p_decoded->i_code_count ) { + p_decoded->code[i].iso_639_code[0] = p_descriptor->p_data[1+i*3]; + p_decoded->code[i].iso_639_code[1] = p_descriptor->p_data[2+i*3]; + p_decoded->code[i].iso_639_code[2] = p_descriptor->p_data[3+i*3]; + i++; + } + + p_descriptor->p_decoded = (void*)p_decoded; + + return p_decoded; +} + + +/***************************************************************************** + * dvbpsi_GenCountryAvailabilityDr + *****************************************************************************/ +dvbpsi_descriptor_t * dvbpsi_GenCountryAvailabilityDr( + dvbpsi_country_availability_dr_t * p_decoded, + bool b_duplicate) +{ + /* Check the length */ + if (p_decoded->i_code_count > 83) + return NULL; + + /* Create the descriptor */ + dvbpsi_descriptor_t * p_descriptor = + dvbpsi_NewDescriptor(0x83, 1+p_decoded->i_code_count*3, NULL); + + if (!p_descriptor) + return NULL; + + /* Encode data */ + p_descriptor->p_data[0] = (p_decoded->b_country_availability_flag)?0x80:0x00; + int i = 0; + while( i < p_decoded->i_code_count ) { + p_descriptor->p_data[1+i*3] = p_decoded->code[i].iso_639_code[0]; + p_descriptor->p_data[2+i*3] = p_decoded->code[i].iso_639_code[1]; + p_descriptor->p_data[3+i*3] = p_decoded->code[i].iso_639_code[2]; + i++; + } + + if (b_duplicate) + { + /* Duplicate decoded data */ + p_descriptor->p_decoded = + dvbpsi_DuplicateDecodedDescriptor(p_descriptor->p_decoded, + sizeof(dvbpsi_country_availability_dr_t)); + } + + return p_descriptor; +} diff --git a/src/descriptors/dr_49.h b/src/descriptors/dr_49.h new file mode 100644 index 0000000..232ad10 --- /dev/null +++ b/src/descriptors/dr_49.h @@ -0,0 +1,106 @@ +/***************************************************************************** + * dr_49.h + * Copyright (C) 2012 VideoLAN + * + * Authors: rcorno (May 21, 2012) + * + * 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 + * + *****************************************************************************/ + +/*! + * \file <dr_49.h> + * \author Corno Roberto <[email protected]> + * \brief Application interface for the DVB "country availability" + * descriptor decoder and generator. + * + * Application interface for the DVB "country availability" descriptor + * decoder and generator. This descriptor's definition can be found in + * ETSI EN 300 468 section 6.2.10. + */ + +#ifndef DR_49_H_ +#define DR_49_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint8_t iso_639_language_code_t[3]; /*!< ISO639 three letter language codes */ + +/***************************************************************************** + * dvbpsi_country_availability_dr_t + *****************************************************************************/ +/*! + * \struct dvbpsi_country_availability_dr_t + * \brief "country availability" descriptor structure. + * + * This structure is used to store a decoded "country availability" + * descriptor. (ETSI EN 300 468 section 6.2.10). + */ +/*! + * \typedef struct dvbpsi_country_availability_dr_s dvbpsi_country_availability_dr_t + * \brief dvbpsi_country_availability_dr_t type definition. + */ +typedef struct dvbpsi_country_availability_dr_s +{ + bool b_country_availability_flag; /*!< country availability flag */ + uint8_t i_code_count; /*!< length of the i_iso_639_code + array */ + struct { + iso_639_language_code_t iso_639_code; + } code[84]; /*!< ISO_639_language_code */ + +} dvbpsi_country_availability_dr_t; + +/***************************************************************************** + * dvbpsi_DecodeCountryAvailabilityDr + *****************************************************************************/ +/*! + * \fn dvbpsi_country_availability_dr_t * dvbpsi_DecodeCountryAvailability( + dvbpsi_descriptor_t * p_descriptor) + * \brief "country availability" descriptor decoder. + * \param p_descriptor pointer to the descriptor structure + * \return a pointer to a new "country availability" descriptor structure + * which contains the decoded data. + */ +dvbpsi_country_availability_dr_t* dvbpsi_DecodeCountryAvailability( + dvbpsi_descriptor_t * p_descriptor); + + +/***************************************************************************** + * dvbpsi_GenCountryAvailabilityDr + *****************************************************************************/ +/*! + * \fn dvbpsi_descriptor_t * dvbpsi_GenCountryAvailabilityDr( + dvbpsi_country_availability_dr_t * p_decoded, int b_duplicate) + * \brief "country availability" descriptor generator. + * \param p_decoded pointer to a decoded "country availability" descriptor + * structure + * \param b_duplicate if non zero then duplicate the p_decoded structure into + * the descriptor + * \return a pointer to a new descriptor structure which contains encoded data. + */ +dvbpsi_descriptor_t * dvbpsi_GenCountryAvailabilityDr( + dvbpsi_country_availability_dr_t * p_decoded, + bool b_duplicate); + +#ifdef __cplusplus +}; +#endif + +#else +#error "Multiple inclusions of dr_49.h" +#endif /* DR_49_H_ */ -- 1.7.5.4