Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Asking for some technical details about QPSK 10K mode #108

Open
Radiomix2000 opened this issue Jan 15, 2022 · 1 comment
Open

Asking for some technical details about QPSK 10K mode #108

Radiomix2000 opened this issue Jan 15, 2022 · 1 comment

Comments

@Radiomix2000
Copy link
Contributor

Hi Adrian,
I have some questions about QPSK 10K mode and mode of Opus codec used with it.
I have asked in Gnuradio repo about including Opus codec to GR release as OOT block, but guys from there answered, that that's difficult to implement because Opus codec has variable packet length. I'm not sure, what does they mean under "packet length", but according to Opus specs and documentation, it has the setting to set constant bit rate, and as a consequence - fixed frame length.
Do I understand that right? Does Opus codec has fixed "packet size" / frame length?

Did you use the same fixed frame setting for Opus in Qradiolink?
According to Opus codec init in Qradiolink code it looks like to be so:

    **opus_encoder_ctl(_enc, OPUS_SET_VBR(0));**
    opus_encoder_ctl(_enc, OPUS_SET_BITRATE(9400));
    opus_encoder_ctl(_enc, OPUS_SET_COMPLEXITY(8));
    //opus_encoder_ctl(_enc, OPUS_SET_DTX(0));
    opus_encoder_ctl(_enc, OPUS_SET_LSB_DEPTH(16));
    opus_encoder_ctl(_enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
    opus_encoder_ctl(_enc, OPUS_SET_APPLICATION(OPUS_APPLICATION_VOIP));
    opus_encoder_ctl(_enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_WIDEBAND));
    opus_encoder_ctl(_enc, OPUS_SET_PACKET_LOSS_PERC(0));
    //opus_encoder_ctl(_enc, OPUS_SET_PREDICTION_DISABLED(0));
    opus_encoder_ctl(_enc, OPUS_GET_BANDWIDTH(&opus_bandwidth));
    opus_encoder_ctl(_enc, OPUS_SET_INBAND_FEC(0));
    opus_encoder_ctl(_enc, OPUS_SET_EXPERT_FRAME_DURATION(OPUS_FRAMESIZE_ARG));
    opus_decoder_ctl(_dec, OPUS_SET_GAIN(0));
@kantooon
Copy link
Collaborator

Yes, Opus can be used with either variable or fixed bitrate. I use fixed rate as you have seen, but for IP network streaming variable bitrate can be more useful. From my perspective, GNU radio should be agnostic to the type of payload and implement only OSI layer 1 and maybe part of layer 2, so it doesn't make much sense to include the vocoder into it, as it's something better handled at application specific level.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants