---
name: "vdr-bitstreamout"
section: "5"
platform: "linux"
package: "vdr-plugin-bitstreamout"
version: "0.81-1"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/vdr-bitstreamout"
---

# vdr-bitstreamout(5)

audio streams out to S/P-DIF of sound cards

## NAME

bitstreamout - audio streams out to **S/P-DIF** of sound cards

## SYNOPSIS

Start of plugin bitstreamout:\
 **vdr** \[**...**\] **-P** '**bitstreamout** \[**-o\]** \[**-m*script***\]'

Configuration of plugin bitstreamout by **Setup** menu:\

```
Setup
+-> Plugins
+-> bitstreamout
```

| | | |
| --- | --- | --- |
| Option | Default value | Possible values |
| **On/Off** | **On** | **On**/**Off** |
| **Mp2Enable** | **On** | **On**/**Off** |
| **Mp2Out** | **Dither** | **Round**/**Dither**/**Nonlinear** |
| **Card** | **0** | \[**0 ... 7**\] |
| **Device** | **2** | \[**0 ... 31**\] |
| **Delay** | **0** | \[**0 ... 32**\] |
| **LiveDelay** | **0** | \[**0 ... 32**\] |
| **PCMinitial** | **0** | \[**1 ... 12**\] |
| **Mp2offset** | **0** | \[**0 ... 12**\] |
| **IEC958** | **Con** | **Con**/**Pro** |
| **VariableIO** | **yes** | **Yes**/**No** |
| **MemoryMap** | **no** | **Yes**/**No** |

This is a VDR plugin to redirect **AC-3**, **DTS** and **MP2 Audio** (**Mpeg Audio Layer II**) endcode audio data frames or **linear PCM** decoded audio frames towards to an external decoder/amplifier through the **S/P-DIF** interface of a sound card. **Encoded** audio frames will **not** be decoded due Copyright/License restrictions of the required algorithms but embedded into **PCM** frames accordingly to **IEC 61937** for loop through the result over a sound card to the appropriate hard ware.

The loop through of **linear PCM** get from VDR works only for real **Audio PCM**.  For **nonlinear PCM**, e.g. as a result of an external encoded audio frame wrapper, may work only if the correct frame start is found.  This may not work for all **PCM** streams and can destroy the high frequency drivers of your loudspeakers (see **WARNING**).

**Bitstreamout** is written for the Advanced Linux Sound Architecture (ALSA). It was tested on a Trident 4DWave NX and CMIPCI based card. A DTT2500 and VSA-E07 was hooked up to the **S/P-DIF** interface. It should work with most any external **AC-3** decoder.  Other sound cards may work, please check the ALSA site **http://www.alsa-project.org** for **S/P-DIF** out capable cards that are supported.

## WARNING

This program is distributed in the hope that it will be useful, but **Without Any Warranty**; without even the implied warranty of **Merchantability** or **Fitness For A Particular Purpose**. See the *GNU General Public License* for more details.

## OPTIONS

### The plugin

The plugin its self can take two options:

- **-m, --mute=*script***

  use this script *script* for switching the **S/P-DIF** **on** or **off.** The script should be able to read on option key word which is **on** either **off** for enabling respectively disabling the **S/P-DIF** interface of the sound card.  This is useful if the **S/P-DIF** out of the DVB card is routed through the **S/P-DIF** interface of the sound card.  Such a script can be written \`in' [**bash**(1)](/bash/1.md) using [**amixer**(1)](/amixer/1.md).

- **-o, --onoff**

  to enable an control entry in the main menu of VDR to change the values of the plugin.  This menu includes the possibility to switch between audio tracks (**AC-3** and **MP2 Audio**). An further menu is available under the main configuration at point plugins. **On** or **Off.**

### The configuration setup

The configuration setup (see **SYNOPSIS**) has the following options:

- **On/Off**

  Enable or disable the bitstreamout plugin.

- **IEC958** (**Con**,**Pro**)

  If *Con* is chosen the IEC(60)958 (**S/P-DIF**) consumer mode (this is the default) is used.  For *Pro* the IEC(60)958 (**AES-3**) professional mode is used. The correct and supported value may depend on the used sound card.

- **Card** \[**0**...**7**\]

  The given number is one of the card numbers provided by ALSA at */proc/asound/card\<#\>*

- **Device** \[**0**...**31**\]

  Select the hardware device of the chosen card above by the numbers provided by ALSA at */proc/asound/card\<#\>/pcm\<#\>p/*.

- **MemoryMap** (**Yes**,**No**)

  The setting *yes* Force **bitstreamout** to use memory mapping for **PCM** data transfer. Whereas *no* switch to ioctl based **PCM** data transfer which is the default. The correct supported value may depend on the used sound card. Be carefully, some ALSA driver may not be able to use memory mapping for **AC-3** data.

- **Delay/LiveDelay** \[**0**...**32**\]

  With this you can set the initial delay time of the sound to get video and audio synchrony in replay and live mode at your view position. Choose a number of silent stereo **PCM** frames with **10ms** delay aka **33cm** for each frame. These frames will used before the first audio frame from VDR is forwarded to the sound card. Possible values are 0 upto 32, default are 0 pieces aka 0cm which is prefect for C-Media PCI CMI873 sound card and Pioneer VSA-E07.

- **PCMinitial** \[**1**...**12**\]

  The numbers of initial PCM wait frames to reset the parser and decoder of your A/V receiver at LiveTV.  As larger the number as more your A/V receiver can synchronize but only up to the maximal filling grade of its input buffer. If the value is to large you **will** hear a large silent pause. You should then decrease the value. A good value for, e.g. Pioneer VSA-E07 is 6. Small values may cause an underrun of the hardware buffer of your soundcard, which can be heard as a short staccato or reset (see **VariableIO**) initial after a channel switch.

- **VariableIO** (**Yes**,**No**)

  Handle buffer underruns of the sound cards buffer in the case that the reference clock of the card is faster than the rate of the DVB live stream.  Overruns can **not** be handled due to the problem that every audio frame represents exactly, e.g. in the case of **AC-3** 1536 16 bit audio sample and no frame nor sample can be dropped without noisy stream leaks (on the other sides it seems possible in the case of an underrun to send send some frames twice for filling the sound cards buffer).

- **Mp2Enable** (**On**,**Off**)

  Enable or disable the MP2 part of the bitstreamout plugin. Not that if you use hardware loop through from the DVB **S/P-DIF** out to the sound cards **S/P-DIF** in connector you should disable this feature.  This because the hardware of the DVB card can do a much better synchronization of Audio and Video.

- **Mp2Out** (**Round**,**Dither**,**Nonlinear**)

  Switch for the configuration how to use the **MP2 Audio** input stream from VDR at replaying a recording or during live viewing from DVB card.

  The two cases **Round** and **Dither** are switches for the resulting **linear PCM** which its self will be obtained by decoding the **MP2 Audio** input stream with the help of the **LibMad.** **Dither**ing leads to a much better sound quality then **Round**ing it does.

  The **Nonlinear** option provides an alternative way how to put **MP2 Audio** data forward to the A/V receiver.  With this the **MP2 Audio** will **not** be decoded but send with a simliar method as done for **AC-3** or **DTS** input streams. If and only if your A/V receiver supports the decoding of **MP2 Audio** stream you may choose this option. But **note** that for daily use your A/V receiver should support automatic detection of **MP2 Audio**. Or you have to configure your A/V receiver by hand for every change between **AC-3**, **DTS** and **MP2 Audio** input sources.

- **MP2offset** \[**1**...**12**\]

  An additional offset only for for **MP2 Audio**.  On very fast systems the decoded **linear PCM** may reach the AV receiver to early.  You can reach the AV synchronization with steps of 10ms silent **linear PCM**.

- /usr/bin/vdr -P 'bitstreamout -m /usr/lib/vdr/mute.sh'

  ## EXAMPLE

## AUTHOR

**AC-3** scanning part --  Aaron Holtzman\
 **MP2** implementation -- Sven Goethel \<sven@jausoft.com\>\
 **MP2** frame based libmad handling -- Werner Fink \<feedback@suse.de\>\
 Plugin part -- Werner Fink \<feedback@suse.de\>

## FILES

*@@VIDEODIR@@/setup.conf*\
 */proc/asound/card\<#\>/pcm\<#\>p/*\
 */proc/asound/card\<#\>/pcm\<#\>p/info*\
 */etc/asound.state*

## SEE ALSO

**ac3play**(1), [**vdr**(1)](/vdr/1.md), [**vdr**(5)](/vdr/5.md), [**aplay**(1)](/aplay/1.md), [**alsactl**(1)](/alsactl/1.md), [**amixer**(1)](/amixer/1.md), [**alsamixer**(1)](/alsamixer/1.md).
