quiet icon indicating copy to clipboard operation
quiet copied to clipboard

error when encoding "hello_world"

Open bigdimboom opened this issue 7 years ago • 11 comments

image

what profile should I use?

crash at "encode_to_wav"

I have installed everything except "libfec"

bigdimboom avatar Apr 10 '18 01:04 bigdimboom

Hi @bigdimboom

I'm not really sure what you want me to do with what you've given me. Can you at least give me a stack trace?

brian-armstrong avatar Apr 10 '18 01:04 brian-armstrong

By the way, if you need libfec (and you basically need it to use quiet), the win branch of libcorrect (with fec shim) might be helpful https://github.com/quiet/libcorrect/tree/win

brian-armstrong avatar Apr 10 '18 01:04 brian-armstrong

My bad. It's running fine if I choose non-libfec feature because I did not install libfec. And thank you for the info. What does libfec do? Sorry I don't have audio background.

bigdimboom avatar Apr 10 '18 02:04 bigdimboom

What's the difference between
"inner_fec_scheme": "none", "outer_fec_scheme": "none", And "inner_fec_scheme": "v27", "outer_fec_scheme": "none",

Can you post a documentation for profile.json. for example, I might want to set it to 48khz, etc..

bigdimboom avatar Apr 10 '18 02:04 bigdimboom

No worries. Glad you got it figured out.

libfec (and libcorrect) adds more robust capabilities for error correction https://en.wikipedia.org/wiki/Forward_error_correction

Namely https://en.wikipedia.org/wiki/Convolutional_code and https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction

brian-armstrong avatar Apr 10 '18 02:04 brian-armstrong

The documentation is still WIP but you might have luck with https://quiet.github.io/quiet-profile-lab

brian-armstrong avatar Apr 10 '18 02:04 brian-armstrong

If you want a different sample rate, you'll need to set that in quiet_encoder_create/quiet_decoder_create. Quiet always runs internally at 44100Hz, it is not possible to change that. But if you want to resample its output, that would be how you do it.

brian-armstrong avatar Apr 10 '18 02:04 brian-armstrong

Awesome. Say I use a audio channel to send audio frames that contains a Json file. I broadcast it programmatically again and again. How does the library "magically" figure out what's the start/end points for the data. What's the algorithm? and say, I can resample it to a different output. How do I downsample back without jeopardizing data.

bigdimboom avatar Apr 10 '18 02:04 bigdimboom

Quiet sends and receives data in frames. If you're familiar with UDP, it's almost identical. Basically, it's up to you to cut your data into frames that are smaller than the frame_len set in the profile, and each frame is atomically either received or not. Your application will have to figure out how to reassmble the frames into a large batch of data. An easy way to do this is to put a sequence number in the first 2-4 bytes of each frame, and then remove the sequence number and reconstruct on the receiver side.

Resampling up and then back down can't lose data because the output will only occupy 44100Hz (actually, 44100/2 Hz) of spectrum, regardless of the sample rate. If you resample to a smaller sample rate than 44100Hz, then you could lose some of the output. You'd have to make sure your profile keeps the audio content in the right part of the spectrum.

brian-armstrong avatar Apr 10 '18 02:04 brian-armstrong

Thanks for the explanation. What do you think a qualified audio engineer should be like? Say...you are interviewing an audio engineer for your team. What technical questions should you ask? Sorry this is an irrelevant the topic of this channel.

bigdimboom avatar Apr 10 '18 02:04 bigdimboom

I don't really have any idea to be honest. Also, almost all of quiet deals with DSP/digital communications, not audio. It's built on a library that's intended for software defined radio, for example. The same techniques just happen to work over sound.

brian-armstrong avatar Apr 10 '18 02:04 brian-armstrong