[FFmpeg-devel] [PATCH v2] avformat: add Software Defined Radio support

Tomas Härdin git at haerdin.se
Tue Jun 27 12:00:14 EEST 2023


sön 2023-06-25 klockan 11:54 +0200 skrev Michael Niedermayer:
> On Sun, Jun 25, 2023 at 12:01:07AM +0200, Tomas Härdin wrote:
> > lör 2023-06-24 klockan 23:01 +0200 skrev Michael Niedermayer:
> > > On Sat, Jun 24, 2023 at 11:51:57AM +0200, Tomas Härdin wrote:
> > > > fre 2023-06-23 klockan 23:18 +0200 skrev Michael Niedermayer:
> > > > > 
> > > > > Are you planing to add SDR support through some library like
> > > > > GNU
> > > > > radio
> > > > > to FFmpeg ?
> > > > 
> > > > This is begging the question. I don't care what you think is
> > > > fun,
> > > > this
> > > > is outside the scope of the project. Not everything needs to be
> > > > shoveled into FFmpeg master. The UNIX pipe was invented for a
> > > > reason.
> > > > Use radio tools to do radio stuff, then pipe the resulting
> > > > bitstream or
> > > > audio stream into FFmpeg if you need to say transcode DAB to
> > > > Opus
> > > > for
> > > > streaming on the Web or something.
> > > 
> > > We will have to agree to disagree here.
> > > all other sources of audio and video work conveniently in FFmpeg
> > > I can also play a video and switch subtitle and audio streams
> > > with a
> > > button not have to use a external demultiplxer and choose the
> > > streams
> > > before starting the player.
> > 
> > If you want to listen to AM broadcasts then there are already
> > plenty of
> > programs to do that. If you want to skim the bands for interesting
> > broadcasts there are tools for that as well. Have you even done
> > basic
> > research to see what is out there?
> 
> Ive looked a bit, i found CubicSDR and SDR++ i like these tools they
> are cool. But they dont seem to do many demodulations, just analog
> also they are very manual which is cool sure but what iam missing
> is a "iphone" like experience. Something with 2 buttons
> 
> as in next station, previous station, hold one to record, hold both
> to record everything, double click to switch between audio and viddeo
> ;)
> not exacty like that of course but the idea of simple convenient and
> 99.99% working, no tool i saw or heared of does this.
> 
> you know, not i have to select the frequency i have to select the
> demodulation
> i have to figure out what the song name is. Something when i hear a
> song i  like
> i press record and it figures out what song this is (RDS has the
> info)
> figures out when the song started and goes back in some cache and
> stores
> that from the past
> Thats one use case like i said. Theres surely a lot more. like
> dumping everything
> from the whole DAB or FM band into a properly sorted "mp3/aac"
> library

Yes those are all fine use cases. But that doesn't explain why they
belong in FFmpeg rather than say a driver that turns generic SDRs into
V4L FM devices, or a dedicated GUI application. The latter would be a
fine project on its own, and having it exec() ffmpeg for recording
would no doubt also be useful. But it seems that you've decided
beforehand that ffmpeg should do this. Why I do not know.

gqrx can do some of what you describe, including displaying your SDR's
input bandwidth in a waterfall. I wouldn't be surprised if there are
more novice friendly programs.
> > 

> > > somehow you swing between extreems here
> > > first its pipes or nothing now we need FPGAs
> > 
> > Yeah because different applications call for different tools. You
> > cannot do RADAR or WiFi on the CPU.
> 
> we are drifting off topic. But "You cannot do" triggers me a bit
> reminds be of "you cannot break videocrypt without FFTs on FPGAs"
> I did that on the CPU of my average desktop in 1997
> https://guru.multimedia.cx/index.php?s=videocrypt
> 
> so now we cannot do RADAR on the CPU ?
> why exactly would that be so ?
> RADAR is not one thing btw, theres alot of different RADAR systems
> some i do belive worked with vaccuum tubes i do guess you dont
> mean these
> 
> with wifi theres also different iterations. I guess as bandwidth
> increases we need more processing

Processing isn't the issue, latency is. But yes it is a bit off-topic,
sorry.

> > > I think we somehow are not talking on the same frequency ;)
> > > if i want just AM/FM i need 10 pages of code max and writing
> > > these
> > > pages is a fun thing to do for me.
> > 
> > Fun for you is technical debt for everyone else.
> 
> how is a self contained module affecting anyone excpet who works on
> it?

Because radio begets its own requirements as far as DSP and other
tooling is concerned, which will inevitably spill over into other parts
of the project. Just one example is that sample rates are no longer
within the range of human hearing, but could range in the GHz, thus
causing all kinds of fun problems as sample_rate approaches INT_MAX.

> > > autodetecting modulations and demodulating the selected station.
> > 
> > lol
> 
> whats funny ?

I would suggest reading
https://www.sigidwiki.com/wiki/Signal_Identification_Guide
and then come back to me what the prospects of automatically
identifying transmissions are.

> > > 2. FFmpeg being able to simply be given a piece of radio spectrum
> > > and
> > > detect and
> > > demodulate everything in that part independant of what
> > > modulations
> > > are there and storing
> > > that all in a multimedia file like matroska or nut.
> > 
> > You are suggesting writing a skimmer that somehow figures out what
> > modulation is used. Meanwhile what people actually do is rely on
> > the
> > band plan, because shit is difficult enough as it is. Broadcast FM
> > channels can be mono, or stereo, or forego stereo for subcarriers
> > in
> > different languages. Plus you have digital data in there, and
> > mechanisms for emergency broadcast switchover.
> 
> yes, and ?
> even my car radio (which is what the manufactor of the car put in)
> has working detection for all this

Yes but your car radio doesn't automatically figure out whether a
station is AM or FM say. It relies on expert knowledge (the band plan).

All this said, if you want to write performant C and SIMD code for
radio stuff there is a plethora of radio projects out there. Dablin
looks like it could use AM and FM demodulation, and calling on ffmpeg
for recording if it doesn't already.

/Tomas



More information about the ffmpeg-devel mailing list