Audio update.

Alsa: report needed down sampling of 3/5/6 to 2 channels.
Moved alsa code into alsa module.
Initial OSS output support.
This commit is contained in:
Johns 2012-01-03 21:31:03 +01:00
parent 5546354cc7
commit c8e70ec0fe
6 changed files with 839 additions and 258 deletions

View File

@ -1,6 +1,7 @@
User johns
Date:
New audio driver oss.
Fix bug: needed down sampling of 3/5/6 to 2 channels not reported.
Search audio sync inside PES packets, for insane dvb streams.
Use only the needed number of surfaces.

View File

@ -19,9 +19,10 @@ VERSION = $(shell grep 'static const char \*const VERSION *=' $(PLUGIN).cpp | aw
CONFIG := #-DDEBUG
#CONFIG += -DHAVE_PTHREAD_NAME
CONFIG += $(shell pkg-config --exists libva && echo "-DUSE_VAAPI")
CONFIG += $(shell pkg-config --exists vdpau && echo "-DUSE_VDPAU")
CONFIG += $(shell pkg-config --exists libva && echo "-DUSE_VAAPI")
CONFIG += $(shell pkg-config --exists alsa && echo "-DUSE_ALSA")
#CONFIG += -DUSE_OSS
### The C++ compiler and options:

View File

@ -30,10 +30,11 @@ A software and GPU emulated HD output device plugin for VDR.
o planned: Video CPU/Opengl
o planned: Software Deinterlacer
o planned: Video XvBA/XvBA
o Audio FFMpeg/Analog
o Audio FFMpeg/Digital
o planned: HDMI/SPDIF Passthrough
o planned: OSS support
o Audio FFMpeg/Alsa/Analog
o Audio FFMpeg/Alsa/Digital
o Audio FFMpeg/OSS/Analog
o planned: Alsa HDMI/SPDIF Passthrough
o planned: OSS HDMI/SPDIF Passthrough
To compile you must have the 'requires' installed.
@ -63,6 +64,9 @@ Install:
cd vdr-softhddevice
make VDRDIR=<path-to-your-vdr-files> LIBDIR=.
You can edit Makefile to enable/disable VDPAU / VA-API / Alsa / OSS
support.
Setup: environment
------
Following is supported:
@ -99,6 +103,11 @@ Setup: /etc/vdr/setup.conf
softhddevice.AudioDelay = 0
+n or -n ms
Commandline:
------------
Use vdr -h to see the command line arguments support by the plugin.
Warning:
--------
libav is not supported, expect many bugs with it.
@ -112,6 +121,9 @@ Requires:
media-libs/alsa-lib
Advanced Linux Sound Architecture Library
http://www.alsa-project.org
or
kernel support for oss/oss4 or alsa oss emulation
x11-libs/libva
Video Acceleration (VA) API for Linux
http://www.freedesktop.org/wiki/Software/vaapi

3
Todo
View File

@ -27,7 +27,6 @@ missing:
atmolight
zoom/fit-zoom 4:3
multistream handling
audio out with oss/oss4
HDMI/SPDIF Passthrough
disable screensaver
disable window cursor
@ -67,10 +66,8 @@ audio/alsa:
libav supports only resample of mono to 2 channels
ffmpeg didn't support resample of 5 to 2 channels
CodecAudioOpen can fail "can't open audio codec" and does Fatal exit.
insufficient thread locking around avcodec_open/close()
audio/oss:
add and write oss support
playback of recording
play back is too fast

1052
audio.c

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,7 @@
#include "softhddevice.h"
extern "C" {
#include "video.h"
extern void AudioPoller(void);
}
//////////////////////////////////////////////////////////////////////////////
@ -332,6 +333,9 @@ class cSoftHdDevice:public cDevice
virtual void GetOsdSize(int &, int &, double &);
virtual int PlayVideo(const uchar *, int);
//virtual int PlayTsVideo(const uchar *, int);
#ifdef USE_OSS // FIXME: testing only oss
virtual int PlayTsAudio(const uchar *, int);
#endif
virtual void SetAudioChannelDevice(int);
virtual int GetAudioChannelDevice(void);
virtual void SetDigitalAudioDevice(bool);
@ -569,6 +573,20 @@ int cSoftHdDevice::PlayTsVideo(const uchar * Data, int Length)
}
#endif
#ifdef USE_OSS // FIXME: testing only oss
///
/// Play a TS audio packet.
///
/// misuse this function as audio poller
///
int cSoftHdDevice::PlayTsAudio(const uchar * data, int length)
{
AudioPoller();
return cDevice::PlayTsAudio(data,length);
}
#endif
uchar *cSoftHdDevice::GrabImage(int &size, bool jpeg, int quality, int sizex,
int sizey)
{