Giter Club home page Giter Club logo

odr-audioenc's People

Contributors

andimik avatar basicmaster avatar canausa avatar coinchon avatar colisee avatar enh-google avatar flameeyes avatar glraghukishore avatar itirdea avatar jmtrivi avatar johngro avatar mapeper avatar mpbraendli avatar mstorsjo avatar piratfm avatar qbast avatar sammirata avatar vieenrose avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

odr-audioenc's Issues

Audio Input does not work

I have setup audioenc - dabmux - dabmod and all works with an audio stream from an url.

This: odr-audioenc -v "https://eatv.radioca.st/stream" -r 48000 -c 2 -o "tcp://localhost:9003" -l -b 192

Will result in proper encoding.

This: odr-audioenc -d hw:0,0 -r 48000 -c 2 -o "tcp://localhost:9003“ -l -b 192
or this: odr-audioenc --device=hw:0,0 -r 48000 -c 2 -o "tcp://localhost:9003“ -l -b 192
or this: odr-audioenc --device=sndrpihifiberry -r 48000 -c 2 -o "tcp://localhost:9003“ -l -b 192
or this: odr-audioenc --device= snd_rpi_hifiberry_dacplusadcpro -r 48000 -c 2 -o "tcp://localhost:9003“ -l -b 192
or this: odr-audioenc -d snd_rpi_hifiberry_dacplusadcpro -r 48000 -c 2 -o "tcp://localhost:9003“ -l -b 192

Will all result in a hanging prompt.

My aplay -l looks like this:

**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplusadcpro], device 0: HiFiBerry DAC+ADC Pro HiFi multicodec-0 [HiFiBerry DAC+ADC Pro HiFi multicodec-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Any ideas?

PADencoder FiFo to RAM

I hope this is the right place for my question (google groups is closed?)

After a while I picked up mmbtools again and gone from version 2.xx to the latest, and I have to say that some things changed.
Especially sound quality has improved very! much.

In the 'old' days I had to make a FiFo between the Pad-encoder and the Audio-encoder, to prevent flash worn out (SD card on a Raspberry) I made this FiFo in RAM with /dev/shm
In the new version it is in /tmp, as I believe /tmp on a PI is also on the SD card.

Is there a way to change this? I did a little peek in the source code from the pad-encoder and saw some /tmp entrys can I simply
change this in /dev/shm? (and change this in audio-encoder also) and recompile again?

Grtzz Mark

Compilation with --enable-gst fails

Environment

  • Debian Jessie
  • All specified gstream1.0 libraries and plugins installed using apt
  • ./configure --enable-vlc --enable-gst

Problem
Compilation fails with the error:

src/GSTInput.cpp: In member function ‘virtual void GSTInput::prepare()’: src/GSTInput.cpp:124:33: error: ‘GST_AUDIO_RESAMPLER_FILTER_MODE_FULL’ was not declared in this scope "sinc-filter-mode", GST_AUDIO_RESAMPLER_FILTER_MODE_FULL,

I couldn't find any files in the GStreamer libraries (/usr/include/gstreamer-1.0/gst) that defined that static value, although the GStreamer audioresample documentation suggests it should be defined.

Workaround
I commented out the explicit definition of sinc-filter-mode, which the documentation suggests defaults to " GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO". Compilation then succeeded, and the GStreamer input to odr-audioenc worked apparently correctly.

type error in build infos

building the encoder on a raspberry with raspbian 10.
sudo apt install libvlc-dev vlc-data vlc-plugins-base
gives error 'case vlc-plugins-base pachage is insted singular :D (vlc-plugin-base)

cheers

AES67 input does not work with Debian libvlc

With the current debian bookworm libvlc (3.0.18-2) AES67 input does not work - odr-audioenc stops with message "Detected fault in input! No data in time"

The library is compiled without live555


configured with ............'--disable-live555' ...............


A workaround is to install libvlc from other source - for example deb-multimedia


configured with ............. '--enable-live555' .................


After replacing the library, AES67 input works as expected.

Please add this in README.md

Statically link libfdk-aac

It would be great if there would be an easy option to link against the custom libfdk-aac version statically.

If there is such an option i haven't found it yet. (Tried to add -static to LDFLAGS, but that didn't do it, according to ldd)

Full k8s deployment

Would be great if we could orchestrate the components directly into k8s enabling quick service scaling e.t.c.

I think we'd need the following for starters.

  1. Work to EncoderManager to make it more a "Mux Manager", enabling complete service control.
  2. Each application (AudioEnc/Mux) config changing to a rest api approach.
  3. K8s Operators to configure the mux and audio encoders, The encoder would just deploy a crd for new service.

Thoughts?

A

mplayer snd-aloop example: Set format to s16le

I had the problem, that i had to start my odr-audioenc before starting the mplayer, because it otherwise failed to set the sample format. I assumed that this is caused by mplayer setting the sample format to something else and alsa does not allow odr-audioenc to specify a different format later.

To fix that i added -format s16le to the mplayer command.

encoder configuration incorrect for certain cases

if only one channel is being used, the encoder configuration is set wrong for certain bitrates.
suggestion - update odr-audioenc.cpp as follows:

replace

    if (*aot == AOT_NONE) {

        if(channels == 2 && subchannel_index <= 6) {
            *aot = AOT_DABPLUS_PS;
        }
        else if((channels == 1 && subchannel_index <= 8) || subchannel_index <= 10) {
            *aot = AOT_DABPLUS_SBR;
        }
        else {
            *aot = AOT_DABPLUS_AAC_LC;
        }
    }

with

    if (*aot == AOT_NONE) {

        if(channels == 2 && subchannel_index <= 6) {
            *aot = AOT_DABPLUS_PS;
        }
        else if((channels == 1 && subchannel_index <= 8) || (channels == 2 && subchannel_index <= 10)) {
            *aot = AOT_DABPLUS_SBR;
        }
        else {
            *aot = AOT_DABPLUS_AAC_LC;
        }
    }

Compiling under Mac OS fails with duplicate symbols

Hi,
I'm trying to compile under Mac OS X 10.9 using X-Code command line tools (make). Looking for tips to compile successfully.

I've fetched the source using git:

git clone https://github.com/Opendigitalradio/ODR-AudioEnc

fdk-aac and other needed libraries compiled from source to /usr/local

Here's the versions of the tools used.

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

$ make -v
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0
$ ld -v
@(#)PROGRAM:ld  PROJECT:ld64-241.9
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7m armv7em
LTO support using: LLVM version 3.5svn
$ pkg-config --version
0.29.1

To compile I performed these steps:

$ ./bootstrap 
You can call ./configure now

Since -lrt isn't supported, I've commented out lines 16145-16190 in configure before running it.

$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '501' is supported by ustar format... yes
checking whether GID '20' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking build system type... x86_64-apple-darwin13.4.0
checking host system type... x86_64-apple-darwin13.4.0
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm
checking the name lister (/usr/bin/nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-apple-darwin13.4.0 file names to x86_64-apple-darwin13.4.0 format... func_convert_file_noop
checking how to convert x86_64-apple-darwin13.4.0 file names to toolchain format... func_convert_file_noop
checking for /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld option to reload object files... -r
checking for objdump... no
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... no
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm output from gcc object... ok
checking for sysroot... no
checking for mt... no
checking if : is a manifest tool... no
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for lipo... lipo
checking for otool... otool
checking for otool64... no
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking for -force_load linker flag... yes
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... yes
checking for gcc option to produce PIC... -fno-common -DPIC
checking if gcc PIC flag -fno-common -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin13.4.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no
checking whether the g++ linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fno-common -DPIC
checking if g++ PIC flag -fno-common -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin13.4.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=c++11... yes
checking whether gcc is Clang... yes
checking whether Clang needs flag to prevent "argument unused" warning when linking with -pthread... -Qunused-arguments
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking whether more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for sin in -lm... yes
checking for pkg-config... /usr/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for zmq_init in -lzmq... yes
checking for aacEncOpen in -lfdk-aac... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

***********************************************

Features enabled:
  Enabled: 
  Disabled:  jack vlc alsa

$ make
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
  CC       libtoolame-dab/libtoolame_dab_la-common.lo
  CC       libtoolame-dab/libtoolame_dab_la-encode.lo
  CC       libtoolame-dab/libtoolame_dab_la-ieeefloat.lo
  CC       libtoolame-dab/libtoolame_dab_la-toolame.lo
  CC       libtoolame-dab/libtoolame_dab_la-portableio.lo
  CC       libtoolame-dab/libtoolame_dab_la-psycho_n1.lo
  CC       libtoolame-dab/libtoolame_dab_la-psycho_0.lo
  CC       libtoolame-dab/libtoolame_dab_la-psycho_1.lo
  CC       libtoolame-dab/libtoolame_dab_la-psycho_2.lo
  CC       libtoolame-dab/libtoolame_dab_la-psycho_3.lo
  CC       libtoolame-dab/libtoolame_dab_la-psycho_4.lo
  CC       libtoolame-dab/libtoolame_dab_la-fft.lo
  CC       libtoolame-dab/libtoolame_dab_la-subband.lo
  CC       libtoolame-dab/libtoolame_dab_la-bitstream.lo
  CC       libtoolame-dab/libtoolame_dab_la-mem.lo
  CC       libtoolame-dab/libtoolame_dab_la-crc.lo
  CC       libtoolame-dab/libtoolame_dab_la-tables.lo
  CC       libtoolame-dab/libtoolame_dab_la-availbits.lo
  CC       libtoolame-dab/libtoolame_dab_la-ath.lo
  CC       libtoolame-dab/libtoolame_dab_la-encode_new.lo
  CC       libtoolame-dab/libtoolame_dab_la-utils.lo
  GEN      libtoolame-dab.la
clang: warning: argument unused during compilation: '-pthread'
clang: warning: argument unused during compilation: '-pthread'
clang: warning: argument unused during compilation: '-pthread'
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-encode.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-toolame.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-psycho_3.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-psycho_0.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-psycho_1.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-psycho_2.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-psycho_4.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-subband.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-availbits.o
duplicate symbol _glopts in:
    libtoolame-dab/.libs/libtoolame_dab_la-common.o
    libtoolame-dab/.libs/libtoolame_dab_la-encode_new.o
ld: 10 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [libtoolame-dab.la] Error 1
make: *** [all] Error 2

Drift compensation not recovering after 90sec of source disconnection.

OS: Ubuntu 20.04 LTS server.
odr-audioenc 3.4.0
Sample command: odr-audioenc -D -v http://stream.********.com:8000 -e tcp://*:9000

If connection with the server is lost, either the network is down or the server is down, the log starts to spit UUUUU if the server or the network disconnection is longer than 90 sec. down the encoding process will not resume after network connection or server recovery and the spiting of UUU will continue forever having to restart the process manually. That makes the -D option unusable if your networks is not stable or if the servers you are getting the audio from have interruptions for one reason or another.

I have seen the same issue with -G (GST) but is not so easily reproduceable and happens more randomly, with the vlc decoder can be always reproduced.

is possible to resample a jack signal internally in the encoder?

Hello. I had to run my jack audio server at 192KHz, because i need to feed the sound card with a software generated MPX which provides stereo and rds signals.

But now i cannot run ODR-audioEnc within the same jack server 'cause it accepts only 48KHZ sampling rate (am i wrong?).

Is there a way to resample signal from 48KHz from 192KHz in odr-audioenc?

Thanks.

PS: i got a similar problem with darkice for internet streaming but it provides an internal resampler (also liquidsoap provides internal resampler).

why i need a sound server if i have only to transcode data?

hello. Trying to transcode web audio streams in aac to feed an headless mux, but i receive from odr-audioend an error about missing pulse audio server.

I suppose that only libvlc was needed (or at least cvlc) to do the data manipulation. Is it wrong?

How could i bypas the problem?

There is a compilation flag or a startup option to avoid the audio server requirement?

Thanks a lot.

Compilation issue with debian unstable (trixie)

Environment: schroot with unstable

Output from make

  CXX      contrib/odr_audioenc-ReedSolomon.o
contrib/ReedSolomon.cpp: In member function 'int ReedSolomon::encode(void*, void*, size_t)':
contrib/ReedSolomon.cpp:81:5: error: 'uint8_t' was not declared in this scope
   81 |     uint8_t* input = reinterpret_cast<uint8_t*>(data);
      |     ^~~~~~~
contrib/ReedSolomon.cpp:39:1: note: 'uint8_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
   38 | #include <assert.h>
  +++ |+#include <cstdint>
   39 |

Remarks:

  • I followed the compilation instructions in README.md
  • The compilation works for schroot based on bullseye and bookworm
  • I have the same issue when building the debian package for unstable
  • It seems that debian unstable introduced cpp-13 (this is absent from debian bookworm)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.