Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-30 Thread Konke Radlow
Hello Hans, 
no need to thank me for working on it. First of all I do it as a part of a 
summerjob, and more importantly I quite enjoy it and  intend to stay a active 
member of the development process after my time at Cisco is over.

Thank you for your comments. 

 Most fields in this struct (and in the other structs for that matter) could
 do with some more documentation.
I added a lot of short comments explaining the meaning of the fields, and 
extended the explanation part that comes before each struct definition.

  +   /** RDS info fields **/
  +   bool is_rbds;   /* use RBDS standard version of LUTs */
  +   uint16_t pi;
  +   uint8_t ps[8];
 
 Looking at rds-ctl, this contains a string, please make it 9 bytes and
 always 0 terminate it! I also notice in rds-ctl that you filter the chars
 for being valid ascii and if not replace them with a space. Does the spec
 say anything about the encoding used for this string? Could we maybe
 convert it to UTF-8 inside the library so that apps can just consume the
 string?
The character encoding complies with ISO/IEC 10646, so it basically already is 
UTF-8, and the data could be stored in a wchar_t array without conversion. 
Is that preferred over uint8_t?

  +/* adds a raw RDS block to decode it into RDS groups
  + * @return:bitmask with with updated fields set to 1
  + * @rds_data:  3 bytes of raw RDS data, obtained by calling read()
  + * on RDS capable V4L2 devices */
  +LIBV4L_PUBLIC uint32_t v4l2_rds_add(struct v4l2_rds *handle, struct
  v4l2_rds_data *rds_data);
 
 Unless I'm missing something, you are no defining struct v4l2_rds_data
 anywhere, why not just make this a uint8_t ?
The v4l2_rds_data structure is defined by v4l in the videodev2.h header, and is 
returned when calling the read function on a rds capable device
On Saturday, July 28, 2012 11:08:24 AM Hans de Goede wrote:
 Hi,
 
 First of all many thanks for working on this! Note I've also taken
 a quick look at the original patch with the actual implementation and that
 looks good. I'm replying here because in my mind the API is the most
 interesting thing to discuss.
 
 Comments inline.
 
 On 07/26/2012 06:21 PM, Konke Radlow wrote:
  PATCH 1/2 was missing the public header for the rds library. I'm sorry
  for that mistake:
  
  diff --git a/lib/include/libv4l2rds.h b/lib/include/libv4l2rds.h
  new file mode 100644
  index 000..04843d3
  --- /dev/null
  +++ b/lib/include/libv4l2rds.h
  @@ -0,0 +1,203 @@
  +/*
  + * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights
  reserved.
  + * Author: Konke Radlow korad...@gmail.com
  + *
  + * This program 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 program 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 General Public License for more details.
  + *
  + * You should have received a copy of the GNU General Public License
  + * along with this program; if not, write to the Free Software
  + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 
  02110-1335 USA
  + */
  +
  +#ifndef __LIBV4L2RDS
  +#define __LIBV4L2RDS
  +
  +#include errno.h
  +#include stdio.h
  +#include stdlib.h
  +#include string.h
  +#include stdbool.h
  +#include unistd.h
  +#include stdint.h
  +#include sys/types.h
  +#include sys/mman.h
  +
  +#include linux/videodev2.h
  +
  +#ifdef __cplusplus
  +extern C {
  +#endif /* __cplusplus */
  +
  +#if __GNUC__ = 4
  +#define LIBV4L_PUBLIC __attribute__ ((visibility(default)))
  +#else
  +#define LIBV4L_PUBLIC
  +#endif
  +
  +/* used to define the current version (version field) of the v4l2_rds
  struct */ +#define V4L2_RDS_VERSION (1)
  +
  +/* Constants used to define the size of arrays used to store RDS
  information */
  +#define MAX_ODA_CNT 18 /* there are 16 groups each with type a or b. Of
  these +  * 32 distinct groups, 18 can be used for ODA  
purposes*/
  +#define MAX_AF_CNT 25  /* AF Method A allows a maximum of 25 AFs to be
  defined
  +* AF Method B does not impose a limit on the number of 
  AFs
  +* but it is not fully supported at the moment and will
  +* not receive more than 25 AFs */
  +
  +/* Define Constants for the possible types of RDS information
  + * used to address the relevant bit in the valid_bitmask */
  +#define V4L2_RDS_PI0x01/* Program Identification */
  +#define V4L2_RDS_PTY   0x02/* Program Type */
  +#define V4L2_RDS_TP0x04/* Traffic Program */
  +#define V4L2_RDS_PS0x08/* Program 

Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-30 Thread Konke Radlow
Hello Hans,
no need to thank me for working on it. First of all I do it as a part of a
summerjob, and more importantly I quite enjoy it and  intend to stay a active
member of the development process after my time at Cisco is over.

Thank you for your comments.

 Most fields in this struct (and in the other structs for that matter) could
 do with some more documentation.
I added a lot of short comments explaining the meaning of the fields, and
extended the explanation part that comes before each struct definition.

  +   /** RDS info fields **/
  +   bool is_rbds;   /* use RBDS standard version of LUTs */
  +   uint16_t pi;
  +   uint8_t ps[8];

 Looking at rds-ctl, this contains a string, please make it 9 bytes and
 always 0 terminate it! I also notice in rds-ctl that you filter the chars
 for being valid ascii and if not replace them with a space. Does the spec
 say anything about the encoding used for this string? Could we maybe
 convert it to UTF-8 inside the library so that apps can just consume the
 string?
The character encoding complies with ISO/IEC 10646, so it basically already is
UTF-8, and the data could be stored in a wchar_t array without conversion.
Is that preferred over uint8_t?

  +/* adds a raw RDS block to decode it into RDS groups
  + * @return:bitmask with with updated fields set to 1
  + * @rds_data:  3 bytes of raw RDS data, obtained by calling read()
  + * on RDS capable V4L2 devices */
  +LIBV4L_PUBLIC uint32_t v4l2_rds_add(struct v4l2_rds *handle, struct
  v4l2_rds_data *rds_data);

 Unless I'm missing something, you are no defining struct v4l2_rds_data
 anywhere, why not just make this a uint8_t ?
The v4l2_rds_data structure is defined by v4l in the videodev2.h header, and is
returned when calling the read function on a rds capable device
source: http://hverkuil.home.xs4all.nl/spec/media.html#v4l2-rds-data
Maybe I didn't get you point though?

greetings,
Konke
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-28 Thread Hans de Goede

Hi,

First of all many thanks for working on this! Note I've also taken
a quick look at the original patch with the actual implementation and that looks
good. I'm replying here because in my mind the API is the most interesting
thing to discuss.

Comments inline.

On 07/26/2012 06:21 PM, Konke Radlow wrote:

PATCH 1/2 was missing the public header for the rds library. I'm sorry for
that mistake:

diff --git a/lib/include/libv4l2rds.h b/lib/include/libv4l2rds.h
new file mode 100644
index 000..04843d3
--- /dev/null
+++ b/lib/include/libv4l2rds.h
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights
reserved.
+ * Author: Konke Radlow korad...@gmail.com
+ *
+ * This program 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 program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA  02110-1335
USA
+ */
+
+#ifndef __LIBV4L2RDS
+#define __LIBV4L2RDS
+
+#include errno.h
+#include stdio.h
+#include stdlib.h
+#include string.h
+#include stdbool.h
+#include unistd.h
+#include stdint.h
+#include sys/types.h
+#include sys/mman.h
+
+#include linux/videodev2.h
+
+#ifdef __cplusplus
+extern C {
+#endif /* __cplusplus */
+
+#if __GNUC__ = 4
+#define LIBV4L_PUBLIC __attribute__ ((visibility(default)))
+#else
+#define LIBV4L_PUBLIC
+#endif
+
+/* used to define the current version (version field) of the v4l2_rds struct */
+#define V4L2_RDS_VERSION (1)   
+
+/* Constants used to define the size of arrays used to store RDS information
*/
+#define MAX_ODA_CNT 18 /* there are 16 groups each with type a or b. 
Of these
+* 32 distinct groups, 18 can be used for ODA  
purposes*/
+#define MAX_AF_CNT 25  /* AF Method A allows a maximum of 25 AFs to be
defined
+* AF Method B does not impose a limit on the number of 
AFs
+* but it is not fully supported at the moment and will
+* not receive more than 25 AFs */
+
+/* Define Constants for the possible types of RDS information
+ * used to address the relevant bit in the valid_bitmask */
+#define V4L2_RDS_PI0x01/* Program Identification */
+#define V4L2_RDS_PTY   0x02/* Program Type */
+#define V4L2_RDS_TP0x04/* Traffic Program */
+#define V4L2_RDS_PS0x08/* Program Service Name */
+#define V4L2_RDS_TA0x10/* Traffic Announcement */
+#define V4L2_RDS_DI0x20/* Decoder Information */
+#define V4L2_RDS_MS0x40/* Music / Speech code */
+#define V4L2_RDS_PTYN  0x80/* Program Type Name */
+#define V4L2_RDS_RT0x100   /* Radio-Text */
+#define V4L2_RDS_TIME  0x200   /* Date and Time information */
+#define V4L2_RDS_TMC   0x400   /* TMC availability */
+#define V4L2_RDS_AF0x800   /* AF (alternative freq) available */
+#define V4L2_RDS_ECC   0x1000  /* Extended County Code */
+#define V4L2_RDS_LC0x2000  /* Language Code */
+
+/* Define Constants for the state of the RDS decoding process
+ * used to address the relevant bit in the state_bitmask */
+#define V4L2_RDS_GROUP_NEW 0x01/* New group received */
+#define V4L2_RDS_ODA   0x02/* Open Data Group announced */
+
+/* Decoder Information (DI) codes
+ * used to decode the DI information according to the RDS standard */
+#define V4L2_RDS_FLAG_STEREO   0x01
+#define V4L2_RDS_FLAG_ARTIFICIAL_HEAD  0x02
+#define V4L2_RDS_FLAG_COMPRESSED   0x04
+#define V4L2_RDS_FLAG_STATIC_PTY   0x08
+
+/* struct to encapsulate one complete RDS group */
+struct v4l2_rds_group {
+   uint16_t pi;
+   char group_version;
+   bool traffic_prog;
+   uint8_t group_id;
+   uint8_t pty;
+   uint8_t data_b_lsb;
+   uint8_t data_c_msb;
+   uint8_t data_c_lsb;
+   uint8_t data_d_msb;
+   uint8_t data_d_lsb;
+};
+
+/* struct to encapsulate some statistical information about the decoding
process */
+struct v4l2_rds_statistics {
+   uint32_t block_cnt;
+   uint32_t group_cnt;
+   uint32_t block_error_cnt;
+   uint32_t group_error_cnt;
+   uint32_t block_corrected_cnt;
+   uint32_t group_type_cnt[16];
+};
+
+/* struct to encapsulate the definition of one ODA (Open Data Application)
type */
+struct v4l2_rds_oda {
+   uint8_t group_id;
+   char group_version;
+   uint16_t 

Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-26 Thread Konke Radlow
PATCH 1/2 was missing the public header for the rds library. I'm sorry for 
that mistake:

diff --git a/lib/include/libv4l2rds.h b/lib/include/libv4l2rds.h
new file mode 100644
index 000..04843d3
--- /dev/null
+++ b/lib/include/libv4l2rds.h
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights 
reserved.
+ * Author: Konke Radlow korad...@gmail.com
+ *
+ * This program 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 program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA  02110-1335  
USA
+ */
+
+#ifndef __LIBV4L2RDS
+#define __LIBV4L2RDS
+
+#include errno.h
+#include stdio.h
+#include stdlib.h
+#include string.h
+#include stdbool.h
+#include unistd.h
+#include stdint.h
+#include sys/types.h
+#include sys/mman.h
+
+#include linux/videodev2.h
+
+#ifdef __cplusplus
+extern C {
+#endif /* __cplusplus */
+
+#if __GNUC__ = 4
+#define LIBV4L_PUBLIC __attribute__ ((visibility(default)))
+#else
+#define LIBV4L_PUBLIC
+#endif
+
+/* used to define the current version (version field) of the v4l2_rds struct */
+#define V4L2_RDS_VERSION (1)   
+
+/* Constants used to define the size of arrays used to store RDS information 
*/
+#define MAX_ODA_CNT 18 /* there are 16 groups each with type a or b. 
Of these
+* 32 distinct groups, 18 can be used for ODA  
purposes*/
+#define MAX_AF_CNT 25  /* AF Method A allows a maximum of 25 AFs to be 
defined
+* AF Method B does not impose a limit on the number of 
AFs
+* but it is not fully supported at the moment and will 
+* not receive more than 25 AFs */
+
+/* Define Constants for the possible types of RDS information
+ * used to address the relevant bit in the valid_bitmask */
+#define V4L2_RDS_PI0x01/* Program Identification */
+#define V4L2_RDS_PTY   0x02/* Program Type */
+#define V4L2_RDS_TP0x04/* Traffic Program */
+#define V4L2_RDS_PS0x08/* Program Service Name */
+#define V4L2_RDS_TA0x10/* Traffic Announcement */
+#define V4L2_RDS_DI0x20/* Decoder Information */
+#define V4L2_RDS_MS0x40/* Music / Speech code */
+#define V4L2_RDS_PTYN  0x80/* Program Type Name */
+#define V4L2_RDS_RT0x100   /* Radio-Text */
+#define V4L2_RDS_TIME  0x200   /* Date and Time information */
+#define V4L2_RDS_TMC   0x400   /* TMC availability */
+#define V4L2_RDS_AF0x800   /* AF (alternative freq) available */
+#define V4L2_RDS_ECC   0x1000  /* Extended County Code */
+#define V4L2_RDS_LC0x2000  /* Language Code */
+
+/* Define Constants for the state of the RDS decoding process
+ * used to address the relevant bit in the state_bitmask */
+#define V4L2_RDS_GROUP_NEW 0x01/* New group received */
+#define V4L2_RDS_ODA   0x02/* Open Data Group announced */
+
+/* Decoder Information (DI) codes
+ * used to decode the DI information according to the RDS standard */
+#define V4L2_RDS_FLAG_STEREO   0x01
+#define V4L2_RDS_FLAG_ARTIFICIAL_HEAD  0x02
+#define V4L2_RDS_FLAG_COMPRESSED   0x04
+#define V4L2_RDS_FLAG_STATIC_PTY   0x08
+
+/* struct to encapsulate one complete RDS group */
+struct v4l2_rds_group {
+   uint16_t pi;
+   char group_version;
+   bool traffic_prog;
+   uint8_t group_id;
+   uint8_t pty;
+   uint8_t data_b_lsb;
+   uint8_t data_c_msb;
+   uint8_t data_c_lsb;
+   uint8_t data_d_msb;
+   uint8_t data_d_lsb;
+};
+
+/* struct to encapsulate some statistical information about the decoding 
process */
+struct v4l2_rds_statistics {
+   uint32_t block_cnt;
+   uint32_t group_cnt;
+   uint32_t block_error_cnt;
+   uint32_t group_error_cnt;
+   uint32_t block_corrected_cnt;
+   uint32_t group_type_cnt[16];
+};
+
+/* struct to encapsulate the definition of one ODA (Open Data Application) 
type */
+struct v4l2_rds_oda {
+   uint8_t group_id;
+   char group_version;
+   uint16_t aid;   /* Application Identification */
+};
+
+/* struct to encapsulate an array of all defined ODA types for a channel */
+struct v4l2_rds_oda_set {
+   uint8_t size;
+   struct v4l2_rds_oda oda[MAX_ODA_CNT];
+};
+
+/* struct to encapsulate an array of all defined Alternative 

Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-26 Thread Ezequiel Garcia
Hi Konke,

 +
 +libv4l2rds_la_SOURCES = libv4l2rds.c
 +libv4l2rds_la_CPPFLAGS = -fvisibility=hidden $(ENFORCE_LIBV4L_STATIC) 
 -std=c99
 +libv4l2rds_la_LDFLAGS = -version-info 0 -lpthread $(DLOPEN_LIBS) 
 $(ENFORCE_LIBV4L_STATIC)
 diff --git a/lib/libv4l2rds/libv4l2rds.c b/lib/libv4l2rds/libv4l2rds.c
 new file mode 100644
 index 000..0bacaa2
 --- /dev/null
 +++ b/lib/libv4l2rds/libv4l2rds.c
 @@ -0,0 +1,871 @@
 +/*
 + * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights 
 reserved.
[snip]
 + * This program is free software; you can redistribute it and/or modify

Just a -probably silly- question...

How can it be free software yet claim All rights reserved ? Is this correct?

Regards,
Ezequiel.
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-26 Thread Hans Verkuil
On Thu 26 July 2012 16:28:20 Ezequiel Garcia wrote:
 Hi Konke,
 
  +
  +libv4l2rds_la_SOURCES = libv4l2rds.c
  +libv4l2rds_la_CPPFLAGS = -fvisibility=hidden $(ENFORCE_LIBV4L_STATIC) 
  -std=c99
  +libv4l2rds_la_LDFLAGS = -version-info 0 -lpthread $(DLOPEN_LIBS) 
  $(ENFORCE_LIBV4L_STATIC)
  diff --git a/lib/libv4l2rds/libv4l2rds.c b/lib/libv4l2rds/libv4l2rds.c
  new file mode 100644
  index 000..0bacaa2
  --- /dev/null
  +++ b/lib/libv4l2rds/libv4l2rds.c
  @@ -0,0 +1,871 @@
  +/*
  + * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights 
  reserved.
 [snip]
  + * This program is free software; you can redistribute it and/or modify
 
 Just a -probably silly- question...
 
 How can it be free software yet claim All rights reserved ? Is this 
 correct?

Yeah, it's correct. I had the same question when I was told that this was the
correct phrase to use. Check other copyright lines in the kernel and you'll see
the same line.

Since it is covered by the LGPLv2 license there aren't many rights to reserve 
:-)

The only right there is in practice is the right to decide whether or not to
allow other licenses as well.

Regards,

Hans
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-26 Thread Ezequiel Garcia
On Thu, Jul 26, 2012 at 11:39 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 On Thu 26 July 2012 16:28:20 Ezequiel Garcia wrote:
 Hi Konke,

  +
  +libv4l2rds_la_SOURCES = libv4l2rds.c
  +libv4l2rds_la_CPPFLAGS = -fvisibility=hidden $(ENFORCE_LIBV4L_STATIC) 
  -std=c99
  +libv4l2rds_la_LDFLAGS = -version-info 0 -lpthread $(DLOPEN_LIBS) 
  $(ENFORCE_LIBV4L_STATIC)
  diff --git a/lib/libv4l2rds/libv4l2rds.c b/lib/libv4l2rds/libv4l2rds.c
  new file mode 100644
  index 000..0bacaa2
  --- /dev/null
  +++ b/lib/libv4l2rds/libv4l2rds.c
  @@ -0,0 +1,871 @@
  +/*
  + * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights 
  reserved.
 [snip]
  + * This program is free software; you can redistribute it and/or modify

 Just a -probably silly- question...

 How can it be free software yet claim All rights reserved ? Is this 
 correct?

 Yeah, it's correct. I had the same question when I was told that this was the
 correct phrase to use. Check other copyright lines in the kernel and you'll 
 see
 the same line.

 Since it is covered by the LGPLv2 license there aren't many rights to reserve 
 :-)

 The only right there is in practice is the right to decide whether or not to
 allow other licenses as well.


For some reason, I must read this several times before really catching it.

Thanks for the explanation,
Ezequiel.
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-26 Thread Gregor Jasny
On 7/25/12 7:44 PM, Konke Radlow wrote:
 diff --git a/configure.ac b/configure.ac
 index 8ddcc9d..1d7eb29 100644
 --- a/configure.ac
 +++ b/configure.ac
...
 @@ -146,13 +148,17 @@ AC_ARG_WITH(libv4l2subdir, 
 AS_HELP_STRING(--with-libv4l2subdir=DIR,set libv4l2 l
  AC_ARG_WITH(libv4lconvertsubdir, 
 AS_HELP_STRING(--with-libv4lconvertsubdir=DIR,set libv4lconvert library 
 subdir [default=libv4l]),
 libv4lconvertsubdir=$withval, libv4lconvertsubdir=libv4l)
  
 +AC_ARG_WITH(libv4l2rdssubdir, AS_HELP_STRING(--with-libv4l2rdssubdir=DIR,set 
 libv4l2rds library subdir [default=libv4l]),
 +   libv4l2rdssubdir=$withval, libv4l2rdssubdir=libv4l)
 +
  AC_ARG_WITH(udevdir, AS_HELP_STRING(--with-udevdir=DIR,set udev directory 
 [default=/lib/udev]),
 udevdir=$withval, udevdir=/lib/udev)
 -
 +   
  libv4l1privdir=$libdir/$libv4l1subdir
  libv4l2privdir=$libdir/$libv4l2subdir
  libv4l2plugindir=$libv4l2privdir/plugins
  libv4lconvertprivdir=$libdir/$libv4lconvertsubdir
 +libv4l2rdsprivdir=$libdir/$libv4l2rdssubdir
  
  keytablesystemdir=$udevdir/rc_keymaps
  keytableuserdir=$sysconfdir/rc_keymaps
 @@ -166,6 +172,7 @@ AC_SUBST(libv4lconvertprivdir)
  AC_SUBST(keytablesystemdir)
  AC_SUBST(keytableuserdir)
  AC_SUBST(udevrulesdir)
 +AC_SUBST(libv4l2rdsprivdir)
  AC_SUBST(pkgconfigdir)
  
  AC_DEFINE_UNQUOTED([V4L_UTILS_VERSION], [$PACKAGE_VERSION], [v4l-utils 
 version string])
 @@ -173,6 +180,7 @@ AC_DEFINE_DIR([LIBV4L1_PRIV_DIR], [libv4l1privdir], 
 [libv4l1 private lib directo
  AC_DEFINE_DIR([LIBV4L2_PRIV_DIR], [libv4l2privdir], [libv4l2 private lib 
 directory])
  AC_DEFINE_DIR([LIBV4L2_PLUGIN_DIR], [libv4l2plugindir], [libv4l2 plugin 
 directory])
  AC_DEFINE_DIR([LIBV4LCONVERT_PRIV_DIR], [libv4lconvertprivdir], 
 [libv4lconvert private lib directory])
 +AC_DEFINE_DIR([LIBV4L2RDS_PRIV_DIR], [libv4l2rdsprivdir], [libv4l2rds 
 private lib directory])
  AC_DEFINE_DIR([IR_KEYTABLE_SYSTEM_DIR], [keytablesystemdir], [ir-keytable 
 preinstalled tables directory])
  AC_DEFINE_DIR([IR_KEYTABLE_USER_DIR], [keytableuserdir], [ir-keytable user 
 defined tables directory])
  

I don't think you need these changes. In libv4l these are for the
wrapper libraries. You don't have one.

Thanks,
Gregor
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-26 Thread Gregor Jasny
On 7/25/12 7:44 PM, Konke Radlow wrote:
 --- /dev/null
 +++ b/lib/libv4l2rds/Makefile.am
 @@ -0,0 +1,11 @@
 +if WITH_LIBV4L
 +lib_LTLIBRARIES = libv4l2rds.la
 +include_HEADERS = ../include/libv4l2rds.h
 +pkgconfig_DATA = libv4l2rds.pc
 +else
 +noinst_LTLIBRARIES = libv4l2rds.la
 +endif
 +
 +libv4l2rds_la_SOURCES = libv4l2rds.c
 +libv4l2rds_la_CPPFLAGS = -fvisibility=hidden $(ENFORCE_LIBV4L_STATIC) 
 -std=c99
 +libv4l2rds_la_LDFLAGS = -version-info 0 -lpthread $(DLOPEN_LIBS) 
 $(ENFORCE_LIBV4L_STATIC)

You don't call dlopen, so you can drop $(DLOPEN_LIBS)

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC PATCH 1/2] Initial version of the RDS-decoder library Signed-off-by: Konke Radlow krad...@cisco.com

2012-07-25 Thread Konke Radlow
---
 Makefile.am |3 +-
 configure.ac|   10 +-
 lib/libv4l2rds/Makefile.am  |   11 +
 lib/libv4l2rds/libv4l2rds.c |  871 +++
 lib/libv4l2rds/libv4l2rds.pc.in |   11 +
 5 files changed, 904 insertions(+), 2 deletions(-)
 create mode 100644 lib/libv4l2rds/Makefile.am
 create mode 100644 lib/libv4l2rds/libv4l2rds.c
 create mode 100644 lib/libv4l2rds/libv4l2rds.pc.in

diff --git a/Makefile.am b/Makefile.am
index b7b356c..6707f5f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,8 @@ SUBDIRS = \
lib/libv4lconvert \
lib/libv4l2 \
lib/libv4l1 \
-   lib/libdvbv5
+   lib/libdvbv5 \
+   lib/libv4l2rds
 
 if WITH_V4LUTILS
 SUBDIRS += \
diff --git a/configure.ac b/configure.ac
index 8ddcc9d..1d7eb29 100644
--- a/configure.ac
+++ b/configure.ac
@@ -14,6 +14,7 @@ AC_CONFIG_FILES([Makefile
lib/libv4l2/Makefile
lib/libv4l1/Makefile
lib/libdvbv5/Makefile
+   lib/libv4l2rds/Makefile
 
utils/libv4l2util/Makefile
utils/libmedia_dev/Makefile
@@ -36,6 +37,7 @@ AC_CONFIG_FILES([Makefile
lib/libv4l1/libv4l1.pc
lib/libv4l2/libv4l2.pc
lib/libdvbv5/libdvbv5.pc
+   lib/libv4l2rds/libv4l2rds.pc
 ])
 
 AM_INIT_AUTOMAKE([1.9 no-dist-gzip dist-bzip2 -Wno-portability]) # 1.10 is 
needed for target_LIBTOOLFLAGS
@@ -146,13 +148,17 @@ AC_ARG_WITH(libv4l2subdir, 
AS_HELP_STRING(--with-libv4l2subdir=DIR,set libv4l2 l
 AC_ARG_WITH(libv4lconvertsubdir, 
AS_HELP_STRING(--with-libv4lconvertsubdir=DIR,set libv4lconvert library subdir 
[default=libv4l]),
libv4lconvertsubdir=$withval, libv4lconvertsubdir=libv4l)
 
+AC_ARG_WITH(libv4l2rdssubdir, AS_HELP_STRING(--with-libv4l2rdssubdir=DIR,set 
libv4l2rds library subdir [default=libv4l]),
+   libv4l2rdssubdir=$withval, libv4l2rdssubdir=libv4l)
+
 AC_ARG_WITH(udevdir, AS_HELP_STRING(--with-udevdir=DIR,set udev directory 
[default=/lib/udev]),
udevdir=$withval, udevdir=/lib/udev)
-
+   
 libv4l1privdir=$libdir/$libv4l1subdir
 libv4l2privdir=$libdir/$libv4l2subdir
 libv4l2plugindir=$libv4l2privdir/plugins
 libv4lconvertprivdir=$libdir/$libv4lconvertsubdir
+libv4l2rdsprivdir=$libdir/$libv4l2rdssubdir
 
 keytablesystemdir=$udevdir/rc_keymaps
 keytableuserdir=$sysconfdir/rc_keymaps
@@ -166,6 +172,7 @@ AC_SUBST(libv4lconvertprivdir)
 AC_SUBST(keytablesystemdir)
 AC_SUBST(keytableuserdir)
 AC_SUBST(udevrulesdir)
+AC_SUBST(libv4l2rdsprivdir)
 AC_SUBST(pkgconfigdir)
 
 AC_DEFINE_UNQUOTED([V4L_UTILS_VERSION], [$PACKAGE_VERSION], [v4l-utils 
version string])
@@ -173,6 +180,7 @@ AC_DEFINE_DIR([LIBV4L1_PRIV_DIR], [libv4l1privdir], 
[libv4l1 private lib directo
 AC_DEFINE_DIR([LIBV4L2_PRIV_DIR], [libv4l2privdir], [libv4l2 private lib 
directory])
 AC_DEFINE_DIR([LIBV4L2_PLUGIN_DIR], [libv4l2plugindir], [libv4l2 plugin 
directory])
 AC_DEFINE_DIR([LIBV4LCONVERT_PRIV_DIR], [libv4lconvertprivdir], [libv4lconvert 
private lib directory])
+AC_DEFINE_DIR([LIBV4L2RDS_PRIV_DIR], [libv4l2rdsprivdir], [libv4l2rds private 
lib directory])
 AC_DEFINE_DIR([IR_KEYTABLE_SYSTEM_DIR], [keytablesystemdir], [ir-keytable 
preinstalled tables directory])
 AC_DEFINE_DIR([IR_KEYTABLE_USER_DIR], [keytableuserdir], [ir-keytable user 
defined tables directory])
 
diff --git a/lib/libv4l2rds/Makefile.am b/lib/libv4l2rds/Makefile.am
new file mode 100644
index 000..5796890
--- /dev/null
+++ b/lib/libv4l2rds/Makefile.am
@@ -0,0 +1,11 @@
+if WITH_LIBV4L
+lib_LTLIBRARIES = libv4l2rds.la
+include_HEADERS = ../include/libv4l2rds.h
+pkgconfig_DATA = libv4l2rds.pc
+else
+noinst_LTLIBRARIES = libv4l2rds.la
+endif
+
+libv4l2rds_la_SOURCES = libv4l2rds.c
+libv4l2rds_la_CPPFLAGS = -fvisibility=hidden $(ENFORCE_LIBV4L_STATIC) -std=c99
+libv4l2rds_la_LDFLAGS = -version-info 0 -lpthread $(DLOPEN_LIBS) 
$(ENFORCE_LIBV4L_STATIC)
diff --git a/lib/libv4l2rds/libv4l2rds.c b/lib/libv4l2rds/libv4l2rds.c
new file mode 100644
index 000..0bacaa2
--- /dev/null
+++ b/lib/libv4l2rds/libv4l2rds.c
@@ -0,0 +1,871 @@
+/*
+ * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights 
reserved.
+ * Author: Konke Radlow korad...@gmail.com
+ *
+ * This program 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 program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA  02110-1335  USA
+ */
+
+#include linux/videodev2.h
+
+#include ../include/libv4l2rds.h
+
+/* struct to