TuneFilterDecimate SRI mode and usage - redhawksdr

I'm gonna use the TuneFilterDecimate of Redhawk 1.10 to isolate the RDS data stream of WBFM transmissions.
I wonder why it transforms a real stream of data in a complex one when it is not required from the elaboration and if it is possible to exploit it to make a frequency shift of the signal from 57kHz to the baseband.
I followed this youtube video http://www.youtube.com/watch?v=wN9p8EjiQs4 to try to build a Fm waveform receiver to hear the audio stream but I heard only a distorted audio voice. Can you suggest me some settings?
Thanks for your help.

At present, TuneFilterDecimate will only output complex. You may want to use the FastFilter component instead to perform your filtering. For an example of REDHAWK doing a WBFM RDS demod, check out the Sub100 dollar project.
The documentation is here: http://sourceforge.net/projects/redhawksdr/files/redhawk-doc/1.10.0/
The Waveform used is here: https://github.com/RedhawkSDR/RBDS_wf
You'll need to install the components used within the waveform, those are located in the git repositories.

Related

Open field usage of Google Resonance Audio SDK

is there a scenario where we can use the Google Resonance Audio SDK not with headphones, but with real speakers (e.g. mounted in a 360° cyrcle setting)?
Or are all algorithms not working for real speaker outputs?
Thank you!
Currently, Resonance Audio is optimized for headphone playback. For example, HRTF processing is done in the Ambisonics domain, without generating (virtual) speaker signals - this is because it is a much more efficient way of generating binaural output.
However, in the Resonance Audio open source release, the Ambisonic Codec class can readily be used to decode Ambisonics to any arbitrary loudspeaker array. To use that with the rest of the Resonance Audio system, however, it would be necessary to modify/extend the audio processing graph by adding a new decoder node.
Please, feel free to add a feature request and, depending on popularity, we might consider adding that in the future!

Detect if video file contains movement

I have a bunch of video clips from a webcam (duration is 5, 10, 60 seconds), and I'm looking for a way to detect "does this video clip have movement", to decide whether the file should be saved or discarded in a future processing phase.
I've looked into motion and OpenCV, but motion seems to only want to work on the raw video stream, and OpenCV seems to be way too advanced for my use.
My ideal solution would be a linux command-line tool that I can feed video files into, and get a simple "does/doesn't contain movement" answer back, so I can discard the irrelevant files. False positives (in a reasonable quantity) are perfectly acceptable for my use.
Does such a tool exist? Or any simple examples of doing this with other tools?
You can check dvr-scan which is simple cross-platform command line tool based on OpenCV.
To just list motion events in csv format (scan only):
dvr-scan -i some_video.mp4 -so
To extract motion in single video:
dvr-scan -i some_video.mp4 -o some_video_motion_only.avi
For more examples and various other parameters see:
https://dvr-scan.readthedocs.io/en/latest/guide/examples/
I had the same problem and wrote the solution: https://github.com/jooray/motion-detection
Should be fairly easy to use from command-line.
If you would like to post-process already-captured video then motion can be useful.
VLC allow you to stream or convert your media for use locally, on your private network, or on the Internet. So an already-captured video can be streamed over HTTP, RTSP, etc. and motion can handle it as a network camera.
Furthermore:
How to Stream using VLC Media Player
If OpenCv is to advanced for you, maybe you should consider something easier which is... SimpleCV (wrapper for OpenCV) "This is computer vision made easy". There is even an example of motion detection using SimpleCV - https://github.com/sightmachine/simplecv-examples/blob/master/code/motion-detection.py Unfortunetely i can't test it(because my OpenCv version isn't compatible with SimpleCV), but generally it looks fine (and isn't complicated) - it just substract previous frame from current and calculate mean of the result. If this value is bigger than some threshold (which most likely you will have to adjust) than we can assume that there were some motion between those 2 frames. Note that setting threshold to 0 is really a bad idea, because always there is some difference between 2 consecuitve frames (changes of lighting, noises, etc).

Tag Video by Frame with GPS Info using GStreamer

I have been tasked to tag a video frame-by-frame with gps coordinates as it is recording.
The platform must be on Linux (Ubuntu to be specific).
Very new to programming with video sources..
Some questions :
Do video frames even have per-frame meta data?
Is GStreamer a good framework to use for my purposes? How should I get started?
Thanks.
Check GstMeta: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMeta.html
It allows you to attach arbitrary metadata to buffers, which then can be passed downstream with the buffers and passed through other elements if possible. Take a look at the code of existing GstMeta implementations in gst-plugins-base for examples: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/gst-libs/gst/video/gstvideometa.h http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/gst-libs/gst/video/gstvideometa.c
Your meta would probably work very similar to the region of interest meta (plain metadata)
To get started, read the documentation on http://gstreamer.freedesktop.org , especially start with the application writers manual. And take a look at existing GStreamer code to understand how everything works together.

"Play Port" with RTLTcpSource component produces no audio

I'm using the component https://github.com/Axios-Engineering/acquisition-components called "RTLTcpSource" from Axios to listen using a RTL2820T USB Dongle. The uses port ComplexIQ_Float plots the port data (and FFT) without any problems.
The data is obviously there but I'm not able to get any sort of audio out. I've tested it against AudioTestSource component, which gives the desired audio output. I have also used DataWriter to output the audio to a file, and then played it through VLC (which plays fine).
I was wondering what sort of adjustments could I make to RTLTcpSource to give it this capability. I have also used the method in this video to try to get an audio output but was not able to play the port data: https://www.youtube.com/watch?v=wN9p8EjiQs4
I'm using RH 1.84 on CentOS 6.4.
Thanks in advance for any tips.
It's not clear from your description what your processing waveform is doing, but you need to have decimation, demod, and data format conversion components in the data path. Something like this:
RTL TCP -> TuneFilterDecimate -> FM Demod -> TuneFilterDecimate -> Reformat.
The Reformat component is needed because the Java audio playback is somewhat picky about it's format and sample rate.
You also may find that a later version of the REDHAWK IDE will be more forgiving of your SDR implementation . Some additional capabilities for playing audio data were added since 1.8.4, and some bug fixes were made as well. In particular, 1.9.X makes certain assumptions about your data stream (e.g. sample rate, number of channels) that must be explicitly specified with keywords using 1.8.4.

Integrating a video codec into gstreamer or vlc

I have an C-Code for a video codec. It takes in a compressed format as an input and give out a YUV data buffer. As a standalone application i'm able to render the YUV generated using OpenGL.
Note: This codec is currently not supported by VLC/gstreamer.
My task now is to create a player using this code (that is with features such as play, pause, step, etc.). Instead of re-inventing the whole wheel, i think it would be better if i'm able to integrate my codec into gstreamer player code(for Linux).
Is it possible to achieve the above? Is there some tutorial using which i can proceed? I have searched a lot on net but was unable to find anything specific to my requirement. Any information or links specific to the above problem will be of great help to me. Thanks in advance.
-Regards
Since the codec and container are of new MIME types, you will have to implement a new GstElement for demuxer and codec. A simple example (for audio) is available in this location. I presume this should provide a good starting reference for you.
Some additional links:
To create a decoder plugin, you can refer to the vorbisdec implementation.
To create a demuxer, you can refer to the oggdemuxer implementation.
Reference to factory make

Resources