discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] Lets try again: Patch to add a new block to convert f


From: Martin Dvh
Subject: [Discuss-gnuradio] Lets try again: Patch to add a new block to convert from float to unsigned char. Needed for new tv-reception example.
Date: Mon, 08 Aug 2005 22:48:33 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20050331)

Forgot to attach the patch, now it is there.
(If everybody is ok with it I can just do a commit)

2005-08-08  Martin Dudok van Heel <nldudok1 at olifantasia.com>
       Addded a new block to convert from float to unsigned char. Needed for 
new tv-reception example.
       * src/lib/general/gr_float_to_uchar.{cc,h,i}: new
       * src/lib/general/gri_float_to_uchar.{cc,h}: new
       * src/lib/general/Makefile.am: changed. Added gr_float_to_uchar and 
gri_float_to_uchar. (Also added gr_float_to_char.h which was
forgotten in previous patch to add gr_float_to_char)    
       * src/lib/general/general.i: changed. Added gr_float_to_uchar and 
gri_float_to_uchar.

greetings,
Martin Dudok van Heel (Martin Dvh)

? bootstrap-mdvh-debian
? src/python/gnuradio/gr/mdvh_benchmark_filters.py
Index: src/lib/general/Makefile.am
===================================================================
RCS file: /cvsroot/gnuradio/gnuradio-core/src/lib/general/Makefile.am,v
retrieving revision 1.54
diff -u -b -B -r1.54 Makefile.am
--- src/lib/general/Makefile.am 30 Jul 2005 21:29:25 -0000      1.54
+++ src/lib/general/Makefile.am 8 Aug 2005 14:53:41 -0000
@@ -111,6 +111,7 @@
        gr_fft_vcc.cc                   \
        gr_fft_vfc.cc                   \
        gr_float_to_char.cc             \
+       gr_float_to_uchar.cc            \
        gr_float_to_complex.cc          \
        gr_float_to_short.cc            \
        gr_firdes.cc                    \
@@ -151,6 +152,7 @@
        gri_debugger_hook.cc            \
        gri_fft.cc                      \
        gri_float_to_char.cc            \
+       gri_float_to_uchar.cc           \
        gri_float_to_short.cc           \
        gri_short_to_float.cc           \
        gri_interleaved_short_to_complex.cc \
@@ -178,6 +180,8 @@
        gr_deinterleave.h               \
        gr_fake_channel_coder_pp.h      \
        gr_float_to_short.h             \
+       gr_float_to_char.h              \
+       gr_float_to_uchar.h             \
        gr_fft_vcc.h                    \
        gr_fft_vfc.h                    \
        gr_firdes.h                     \
@@ -224,6 +228,7 @@
        gri_debugger_hook.h             \
        gri_fft.h                       \
        gri_float_to_char.h             \
+       gri_float_to_uchar.h            \
        gri_float_to_short.h            \
        gri_interleaved_short_to_complex.h \
        gri_lfsr_15_1_0.h               \
@@ -253,6 +258,7 @@
        gr_fft_vcc.i                    \
        gr_fft_vfc.i                    \
        gr_float_to_char.i              \
+       gr_float_to_uchar.i             \
        gr_float_to_complex.i           \
        gr_float_to_short.i             \
        gr_frequency_modulator_fc.i     \
Index: src/lib/general/general.i
===================================================================
RCS file: /cvsroot/gnuradio/gnuradio-core/src/lib/general/general.i,v
retrieving revision 1.30
diff -u -b -B -r1.30 general.i
--- src/lib/general/general.i   30 Jul 2005 21:29:25 -0000      1.30
+++ src/lib/general/general.i   8 Aug 2005 14:53:41 -0000
@@ -43,6 +43,7 @@
 #include <gr_fft_vfc.h>
 #include <gr_float_to_short.h>
 #include <gr_float_to_char.h>
+#include <gr_float_to_uchar.h>
 #include <gr_short_to_float.h>
 #include <gr_frequency_modulator_fc.h>
 #include <gr_bytes_to_syms.h>
@@ -89,6 +90,7 @@
 %include "gr_fft_vfc.i"
 %include "gr_float_to_short.i"
 %include "gr_float_to_char.i"
+%include "gr_float_to_uchar.i"
 %include "gr_short_to_float.i"
 %include "gr_frequency_modulator_fc.i"
 %include "gr_bytes_to_syms.i"
Index: src/lib/general/gr_float_to_uchar.cc
===================================================================
RCS file: src/lib/general/gr_float_to_uchar.cc
diff -N src/lib/general/gr_float_to_uchar.cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ src/lib/general/gr_float_to_uchar.cc        8 Aug 2005 14:53:42 -0000
@@ -0,0 +1,58 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gr_float_to_uchar.h>
+#include <gr_io_signature.h>
+#include <gri_float_to_uchar.h>
+
+gr_float_to_uchar_sptr
+gr_make_float_to_uchar ()
+{
+  return gr_float_to_uchar_sptr (new gr_float_to_uchar ());
+}
+
+gr_float_to_uchar::gr_float_to_uchar ()
+  : gr_sync_block ("gr_float_to_uchar",
+                  gr_make_io_signature (1, 1, sizeof (float)),
+                  gr_make_io_signature (1, 1, sizeof (unsigned char)))
+{
+}
+
+int
+gr_float_to_uchar::work (int noutput_items,
+                        gr_vector_const_void_star &input_items,
+                        gr_vector_void_star &output_items)
+{
+  const float *in = (const float *) input_items[0];
+  unsigned char *out = (unsigned char *) output_items[0];
+
+  gri_float_to_uchar (in, out, noutput_items);
+  
+  return noutput_items;
+}
+
+
+
Index: src/lib/general/gr_float_to_uchar.h
===================================================================
RCS file: src/lib/general/gr_float_to_uchar.h
diff -N src/lib/general/gr_float_to_uchar.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ src/lib/general/gr_float_to_uchar.h 8 Aug 2005 14:53:42 -0000
@@ -0,0 +1,51 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef INCLUDED_GR_FLOAT_TO_UCHAR_H
+#define INCLUDED_GR_FLOAT_TO_UCHAR_H
+
+#include <gr_sync_block.h>
+
+class gr_float_to_uchar;
+typedef boost::shared_ptr<gr_float_to_uchar> gr_float_to_uchar_sptr;
+
+gr_float_to_uchar_sptr
+gr_make_float_to_uchar ();
+
+/*!
+ * \brief Convert stream of float to a stream of unsigned char
+ * \ingroup converter
+ */
+
+class gr_float_to_uchar : public gr_sync_block
+{
+  friend gr_float_to_uchar_sptr gr_make_float_to_uchar ();
+  gr_float_to_uchar ();
+
+ public:
+  virtual int work (int noutput_items,
+                   gr_vector_const_void_star &input_items,
+                   gr_vector_void_star &output_items);
+};
+
+
+#endif /* INCLUDED_GR_FLOAT_TO_UCHAR_H */
Index: src/lib/general/gr_float_to_uchar.i
===================================================================
RCS file: src/lib/general/gr_float_to_uchar.i
diff -N src/lib/general/gr_float_to_uchar.i
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ src/lib/general/gr_float_to_uchar.i 8 Aug 2005 14:53:42 -0000
@@ -0,0 +1,30 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+GR_SWIG_BLOCK_MAGIC(gr,float_to_uchar)
+
+gr_float_to_uchar_sptr gr_make_float_to_uchar ();
+
+class gr_float_to_uchar : public gr_sync_block
+{
+  gr_float_to_uchar ();
+};
Index: src/lib/general/gri_float_to_uchar.cc
===================================================================
RCS file: src/lib/general/gri_float_to_uchar.cc
diff -N src/lib/general/gri_float_to_uchar.cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ src/lib/general/gri_float_to_uchar.cc       8 Aug 2005 14:53:42 -0000
@@ -0,0 +1,42 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2002 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#define _ISOC9X_SOURCE
+#include <gri_float_to_uchar.h>
+#include <math.h>
+
+static const int MIN_UCHAR = 0;
+static const int MAX_UCHAR =  255;
+
+
+void 
+gri_float_to_uchar (const float *in, unsigned char *out, int nsamples)
+{
+  for (int i = 0; i < nsamples; i++){
+    long int r = (long int) rint (in[i]);
+    if (r < MIN_UCHAR)
+      r = MIN_UCHAR;
+    else if (r > MAX_UCHAR)
+      r = MAX_UCHAR;
+    out[i] = r;
+  }
+}
Index: src/lib/general/gri_float_to_uchar.h
===================================================================
RCS file: src/lib/general/gri_float_to_uchar.h
diff -N src/lib/general/gri_float_to_uchar.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ src/lib/general/gri_float_to_uchar.h        8 Aug 2005 14:53:42 -0000
@@ -0,0 +1,32 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2002 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef INCLUDED_GRI_FLOAT_TO_UCHAR_H
+#define INCLUDED_GRI_FLOAT_TO_UCHAR_H
+
+/*!
+ * convert array of floats to unsigned chars with rounding and saturation.
+ */
+void gri_float_to_uchar (const float *in, unsigned char *out, int nsamples);
+
+#endif /* INCLUDED_GRI_FLOAT_TO_UCHAR_H */
+

reply via email to

[Prev in Thread] Current Thread [Next in Thread]