[Top][All Lists]

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

Re: [Discuss-gnuradio] GNU Radio on Android

From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] GNU Radio on Android
Date: Thu, 19 Mar 2015 10:35:40 -0400

On Thu, Mar 19, 2015 at 3:28 AM, Vijay Galbaransingh <address@hidden> wrote:

As you expected, disabling buffering on the file sink did not have any
effect. I have fixed the issue though by making two changes to
1) change scale_factor to 32768 (1/2^14 doesn't make sense, it causes
clipping because the volk conversion method divides by scale_factor.)
2) change buffer size (d_size) to 8k (2k was too small, tested 32/44.1/48kHz
on Nexus 4 and Nexus 7 2012 version.) Without this change the recorded audio
will be very choppy (dropped samples?)


Ah, ok, that makes sense. I think I was just playing around with those parameters and must have checked them in at that state. 

I'll make those updates to the repo.



From: address@hidden [mailto:address@hidden] On Behalf Of Tom
Sent: March-18-15 07:11
To: Vijay Galbaransingh
Cc: GNURadio Discussion List
Subject: Re: [Discuss-gnuradio] GNU Radio on Android

On Wed, Mar 18, 2015 at 1:46 AM, Vijay Galbaransingh <address@hidden> wrote:

What kind of sample rate / setup are you using for your opensl_source? I've
set up a flowgraph that is just an opensl_source (sampling at 48kHz)
connected to a file sink, and when I play back the file through GRC on my
desktop my audio is coming out pretty garbled, as if samples are being
dropped. I've also tried a couple other sampling rates (44.1kHz, 32kHz,
16kHz to name a few.) I'm using a Nexus 4 running Android 5.0.1. Pasted
below is some of my code.


Flowgraph code:
Java_com_example_grrecordmic_GrRecordMic_InitFlowgraph(JNIEnv* env, jobject
thiz, jstring jsinkfilename)
    int rate = 48000;
    const char *sinkfilename = env->GetStringUTFChars(jsinkfilename, 0);

    global_tb = gr::make_top_block("Record_Mic");

    gr::grand::opensl_source::sptr micSource =
    gr::blocks::file_sink::sptr fileSink =
gr::blocks::file_sink::make(sizeof(float), sinkfilename, false);

    global_tb->connect(micSource, 0, fileSink, 0);

    env->ReleaseStringUTFChars(jsinkfilename, sinkfilename);

I believe that I used either 32k and/or 44.1k. I was using a Nexus 7,
though, and the codec might play a significant role with this between the
two devices.

Perhaps try setting the file sink to unbuffered mode?


Frankly, I feel like this is unlikely to help, but it'll be interesting to
know what happens.


From: address@hidden [mailto:address@hidden] On Behalf Of Tom
Sent: March-17-15 07:37
To: Vijay Galbaransingh
Cc: GNURadio Discussion List
Subject: Re: [Discuss-gnuradio] GNU Radio on Android

On Tue, Mar 17, 2015 at 12:10 AM, Vijay Galbaransingh <address@hidden> wrote:
Thanks Tom, that sorted it out. My audio output is a bit choppy but no
matter – time to move on to some more complex flowgraphs in my Android app.

Thanks again,

Yes, the skipping in the audio output is a known bug, and  apparently known
to be difficult in Android. It's going to take some kind of double buffering
to fix it at this level. I did not experience any problems with the audio
source, though; I just saved it to a file, brought it back to my computer,
and played it there and it sounded fine.


From: address@hidden [mailto:address@hidden] On Behalf Of Tom
Sent: March-16-15 06:37
To: Vijay Galbaransingh
Cc: GNURadio Discussion List
Subject: Re: [Discuss-gnuradio] GNU Radio on Android

On Mon, Mar 16, 2015 at 3:28 AM, Vijay Galbaransingh <address@hidden> wrote:
Hi Tom,

I have been following your notes on the wiki in an attempt to build a test
app (a dial tone flowgraph.) I'm hitting a snag on the ndk-build step
though -- when I use your example Android.mk listing, the linker isn't
finding any of the static libraries we built (gnuradio, grand, boost, fftw.)
Instead I'm getting a pile of undefined reference errors.

I tried editing the example Android.mk file by adding the following before
the shared library build:

include $(CLEAR_VARS)
LOCAL_MODULE := grand_static_lib #for example
LOCAL_SRC_FILES := /opt/grandroid/lib/libgnuradio-grand.a

However I quickly realised that while there are only a few gnuradio
libraries to add this way, there are a ton of boost libraries... Is there a
smarter way to add all the prebuilt .a libraries at once? Or am I headed in
the wrong direction entirely?

Any tips appreciated,

Yep, you have to add all of the libraries into the Android.mk file. I've
updated the wiki:


You can go there and simply download GrAndroid.mk that does all of this for
you and include it in your Android.mk file. Just follow the instructions.

Hope that helps,


From: address@hidden [mailto:address@hidden] On Behalf Of Tom
Sent: March-13-15 14:41
To: Vijay Galbaransingh
Cc: GNURadio Discussion List
Subject: Re: [Discuss-gnuradio] GNU Radio on Android
On Fri, Mar 13, 2015 at 5:04 PM, Vijay Galbaransingh <address@hidden> wrote:

Has a patched version of GNU Radio which runs on Android been released?

I'm working on a project where I'm transmitting information over audio
from a desktop system to an Android device, and since setting up the
transmitter end with GNU Radio was such a snap I would love to leverage
the GNU Radio system to build the receiver as well.


Just yesterday, in fact:


I'll try to release some of my apps soon. One of them captures from the
audio device, even. It's not too hard since there's the gr-grand opensl
audio source block to talk to the audio system.


reply via email to

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