vdr-plugin-softhddevice-drm-gles 1.6.4-d0291bb
audio.cpp File Reference

Audio and Alsa Interface. More...

#include <chrono>
#include <cmath>
#include <cstdint>
#include <mutex>
#include <string>
#include <sstream>
#include <vector>
#include <alsa/asoundlib.h>
#include <libavcodec/avcodec.h>
#include <libavfilter/avfilter.h>
#include <libavfilter/buffersink.h>
#include <libavfilter/buffersrc.h>
#include <libavutil/channel_layout.h>
#include <libavutil/opt.h>
#include <vdr/thread.h>
#include "audio.h"
#include "codec_audio.h"
#include "config.h"
#include "event.h"
#include "filllevel.h"
#include "logger.h"
#include "misc.h"
#include "pidcontroller.h"
#include "ringbuffer.h"
#include "softhddevice.h"

Go to the source code of this file.

Functions

static const charalsaToFFmpegChannel (const char *alsaName)
 FFmpeg does not have channels called "RL" or "RR" So "rename" Alsas RL (rear left) and RR (rear right) to FFmpegs BL (back left) and BR (back right) to make the channelmap filter parser happy.
 
static std::vector< std::string > GetAlsaChannelLayoutAsArray (snd_pcm_t *pcmHandle)
 Put Alsa channel layout in a dynamic array of strings.
 
static std::vector< std::string > GetFFmpegChannelLayoutAsArray (const AVChannelLayout &layout)
 Put FFmpeg channel layout in a dynamic array of strings.
 
static bool LayoutsMatch (const std::vector< std::string > &ff, const std::vector< std::string > &alsa)
 Check, if FFmpeg and Alsa channel layout match.
 
static std::string BuildChannelMapFilter (snd_pcm_t *pcmHandle, const AVChannelLayout &layout)
 Build the "|"-separated mappings list for the channelmap filter.
 
static void AlsaNoopCallback (__attribute__((unused)) const char *file, __attribute__((unused)) int line, __attribute__((unused)) const char *function, __attribute__((unused)) int err, __attribute__((unused)) const char *fmt,...)
 Empty log callback.
 

Detailed Description

Audio and Alsa Interface.

cSoftHdAudio handles everything audio related except the decoding itself (see cAudioDecoder).

Definition in file audio.cpp.