This is an exception to the normal behavior used by the passive audio
mixer participant, that sends empty packets to request receiving the data.
It doesn't affect the normal UG behavior, because the situation when
nonzero_channels=0 doesn't occur otherwise. Either we receive at least
some packet from a frame and if not, the decoding doesn't take place.
Get the info from audio lavc in textual form instead with a new API to
querying additional info about codec for user.
The new API will allow adding additional useful information in help,
eg. encoders present.
this updates the commit a0dd6b9b85
Not needed to store separately "current" buffer packets since it is
already stored in cumulative, it is just needed to store the current
buffer number.
Speex doesn't seem to offer any advantage over other codecs and is deprecated in
favor of Opus by Xiph.Org.
Added this feature in a generic fashion in order to allow eventual deprecation
of some other codecs that may not be useful but would complicate further
development.
Send same RTP timestamps for audio/video frames captured at the same
time.
RTP specification allows this (although doesn't require - according to
the spec, the RTP timestamps should colaesce with RTCP NTP
correspondence). We slightly modify that in a way that we use for both
audio and video 90 kHz clock resolution, so if the start point is the
same (random), the RTP timestamps will be exactly the same for related
data.
Implemented for vidcap DeckLink and testcard.
libavcodec audio decoder has assertion on channel non-emptiness (which
is perhpas correct - there cannot be anything done there) so do not pass
emtpy channels.
refer to GH-316
For audio codecs, we respect its native capitalization of letters, eg.
AAC, speex. So do it also for Opus. This should not affect existing
applications since the Opus name is parsed case-insensitively.
Only exception is SDP (rtpmap) where is usually used lower-case (at
least in rfc7587).
Fixed some of (easy) newly detected Coverity bugs. Those are mostly
innocent ones (performance) and not new (detected because of new release
of Coverity).
Fill missing channel samples with a silence. This should behave better
in case of greater number of channels because now is not dropped the
whole frame.
* better check values' boundries
* for MTU and traffic shapper also check if there are reasonable values
(eg. for the cases when they are interchanged by mistake)