Fix bug #1410: wrong spelled AC-3 and E-AC-3.

This commit is contained in:
Johns 2013-07-26 16:55:33 +02:00
parent 93357fb1cd
commit 171a3f4dc9
8 changed files with 45 additions and 40 deletions

View File

@ -1,6 +1,7 @@
User johns User johns
Date: Date:
Fix bug #1410: wrong spelled AC-3 and E-AC-3.
Add compile time selectable h264 trickspeed workaround. Add compile time selectable h264 trickspeed workaround.
Use ffmpeg new names AVCodecID, AV_CODEC_... . Use ffmpeg new names AVCodecID, AV_CODEC_... .
Fix bug: video lagging behind after recording stop. Fix bug: video lagging behind after recording stop.

View File

@ -89,7 +89,7 @@ Setup: environment
ALSA_DEVICE=default ALSA_DEVICE=default
alsa PCM device name alsa PCM device name
ALSA_PASSTHROUGH_DEVICE= ALSA_PASSTHROUGH_DEVICE=
alsa pass-though (AC3,EAC3,DTS,...) device name alsa pass-though (AC-3,E-AC-3,DTS,...) device name
ALSA_MIXER=default ALSA_MIXER=default
alsa control device name alsa control device name
ALSA_MIXER_CHANNEL=PCM ALSA_MIXER_CHANNEL=PCM
@ -99,7 +99,7 @@ Setup: environment
OSS_AUDIODEV=/dev/dsp OSS_AUDIODEV=/dev/dsp
oss dsp device name oss dsp device name
OSS_PASSTHROUGHDEV= OSS_PASSTHROUGHDEV=
oss pass-though (AC3,EAC3,DTS,...) device name oss pass-though (AC-3,E-AC-3,DTS,...) device name
OSS_MIXERDEV=/dev/mixer OSS_MIXERDEV=/dev/mixer
oss mixer device name oss mixer device name
OSS_MIXER_CHANNEL=pcm OSS_MIXER_CHANNEL=pcm

20
audio.c
View File

@ -620,7 +620,7 @@ static void AudioResample(const int16_t * in, int in_chan, int frames,
typedef struct _audio_ring_ring_ typedef struct _audio_ring_ring_
{ {
char FlushBuffers; ///< flag: flush buffers char FlushBuffers; ///< flag: flush buffers
char Passthrough; ///< flag: use pass-through (AC3, ...) char Passthrough; ///< flag: use pass-through (AC-3, ...)
int16_t PacketSize; ///< packet size int16_t PacketSize; ///< packet size
unsigned HwSampleRate; ///< hardware sample rate in Hz unsigned HwSampleRate; ///< hardware sample rate in Hz
unsigned HwChannels; ///< hardware number of channels unsigned HwChannels; ///< hardware number of channels
@ -642,7 +642,7 @@ static unsigned AudioStartThreshold; ///< start play, if filled
** **
** @param sample_rate sample-rate frequency ** @param sample_rate sample-rate frequency
** @param channels number of channels ** @param channels number of channels
** @param passthrough use /pass-through (AC3, ...) device ** @param passthrough use /pass-through (AC-3, ...) device
** **
** @retval -1 error ** @retval -1 error
** @retval 0 okay ** @retval 0 okay
@ -838,7 +838,7 @@ static int AlsaPlayRingbuffer(void)
if (!avail) { // full or buffer empty if (!avail) { // full or buffer empty
break; break;
} }
// muting pass-through ac3, can produce disturbance // muting pass-through AC-3, can produce disturbance
if (AudioMute || (AudioSoftVolume if (AudioMute || (AudioSoftVolume
&& !AudioRing[AudioRingRead].Passthrough)) { && !AudioRing[AudioRingRead].Passthrough)) {
// FIXME: quick&dirty cast // FIXME: quick&dirty cast
@ -987,7 +987,7 @@ static int AlsaThread(void)
/** /**
** Open alsa pcm device. ** Open alsa pcm device.
** **
** @param passthrough use pass-through (AC3, ...) device ** @param passthrough use pass-through (AC-3, ...) device
*/ */
static snd_pcm_t *AlsaOpenPCM(int passthrough) static snd_pcm_t *AlsaOpenPCM(int passthrough)
{ {
@ -1170,7 +1170,7 @@ static int64_t AlsaGetDelay(void)
** **
** @param freq sample frequency ** @param freq sample frequency
** @param channels number of channels ** @param channels number of channels
** @param passthrough use pass-through (AC3, ...) device ** @param passthrough use pass-through (AC-3, ...) device
** **
** @retval 0 everything ok ** @retval 0 everything ok
** @retval 1 didn't support frequency/channels combination ** @retval 1 didn't support frequency/channels combination
@ -1563,7 +1563,7 @@ static int OssThread(void)
/** /**
** Open OSS pcm device. ** Open OSS pcm device.
** **
** @param passthrough use pass-through (AC3, ...) device ** @param passthrough use pass-through (AC-3, ...) device
*/ */
static int OssOpenPCM(int passthrough) static int OssOpenPCM(int passthrough)
{ {
@ -1727,7 +1727,7 @@ static int64_t OssGetDelay(void)
** **
** @param sample_rate sample rate/frequency ** @param sample_rate sample rate/frequency
** @param channels number of channels ** @param channels number of channels
** @param passthrough use pass-through (AC3, ...) device ** @param passthrough use pass-through (AC-3, ...) device
** **
** @retval 0 everything ok ** @retval 0 everything ok
** @retval 1 didn't support frequency/channels combination ** @retval 1 didn't support frequency/channels combination
@ -1745,7 +1745,7 @@ static int OssSetup(int *sample_rate, int *channels, int passthrough)
return -1; return -1;
} }
if (1) { // close+open for pcm / ac3 if (1) { // close+open for pcm / AC-3
int fildes; int fildes;
fildes = OssPcmFildes; fildes = OssPcmFildes;
@ -1934,7 +1934,7 @@ static void NoopSetVolume( __attribute__ ((unused))
** **
** @param freq sample frequency ** @param freq sample frequency
** @param channels number of channels ** @param channels number of channels
** @param passthrough use pass-through (AC3, ...) device ** @param passthrough use pass-through (AC-3, ...) device
*/ */
static int NoopSetup( __attribute__ ((unused)) static int NoopSetup( __attribute__ ((unused))
int *channels, __attribute__ ((unused)) int *channels, __attribute__ ((unused))
@ -2576,7 +2576,7 @@ void AudioSetVolume(int volume)
** **
** @param freq sample frequency ** @param freq sample frequency
** @param channels number of channels ** @param channels number of channels
** @param passthrough use pass-through (AC3, ...) device ** @param passthrough use pass-through (AC-3, ...) device
** **
** @retval 0 everything ok ** @retval 0 everything ok
** @retval 1 didn't support frequency/channels combination ** @retval 1 didn't support frequency/channels combination

14
codec.c
View File

@ -710,7 +710,7 @@ enum IEC61937
#ifdef USE_AUDIO_DRIFT_CORRECTION #ifdef USE_AUDIO_DRIFT_CORRECTION
#define CORRECT_PCM 1 ///< do PCM audio-drift correction #define CORRECT_PCM 1 ///< do PCM audio-drift correction
#define CORRECT_AC3 2 ///< do AC3 audio-drift correction #define CORRECT_AC3 2 ///< do AC-3 audio-drift correction
static char CodecAudioDrift; ///< flag: enable audio-drift correction static char CodecAudioDrift; ///< flag: enable audio-drift correction
#else #else
static const int CodecAudioDrift = 0; static const int CodecAudioDrift = 0;
@ -871,7 +871,7 @@ void CodecAudioClose(AudioDecoder * audio_decoder)
/** /**
** Set audio drift correction. ** Set audio drift correction.
** **
** @param mask enable mask (PCM, AC3) ** @param mask enable mask (PCM, AC-3)
*/ */
void CodecSetAudioDrift(int mask) void CodecSetAudioDrift(int mask)
{ {
@ -884,7 +884,7 @@ void CodecSetAudioDrift(int mask)
/** /**
** Set audio pass-through. ** Set audio pass-through.
** **
** @param mask enable mask (PCM, AC3, EAC3) ** @param mask enable mask (PCM, AC-3, E-AC-3)
*/ */
void CodecSetAudioPassthrough(int mask) void CodecSetAudioPassthrough(int mask)
{ {
@ -985,8 +985,8 @@ static int CodecAudioUpdateHelper(AudioDecoder * audio_decoder,
av_get_sample_fmt_name(audio_ctx->sample_fmt), audio_ctx->sample_rate, av_get_sample_fmt_name(audio_ctx->sample_fmt), audio_ctx->sample_rate,
audio_ctx->channels, CodecPassthrough & CodecPCM ? " PCM" : "", audio_ctx->channels, CodecPassthrough & CodecPCM ? " PCM" : "",
CodecPassthrough & CodecMPA ? " MPA" : "", CodecPassthrough & CodecMPA ? " MPA" : "",
CodecPassthrough & CodecAC3 ? " AC3" : "", CodecPassthrough & CodecAC3 ? " AC-3" : "",
CodecPassthrough & CodecEAC3 ? " EAC3" : "", CodecPassthrough & CodecEAC3 ? " E-AC-3" : "",
CodecPassthrough ? " pass-through" : ""); CodecPassthrough ? " pass-through" : "");
*passthrough = 0; *passthrough = 0;
@ -1001,7 +1001,7 @@ static int CodecAudioUpdateHelper(AudioDecoder * audio_decoder,
|| (CodecPassthrough & CodecEAC3 || (CodecPassthrough & CodecEAC3
&& audio_ctx->codec_id == AV_CODEC_ID_EAC3)) { && audio_ctx->codec_id == AV_CODEC_ID_EAC3)) {
if (audio_ctx->codec_id == AV_CODEC_ID_EAC3) { if (audio_ctx->codec_id == AV_CODEC_ID_EAC3) {
// EAC3 over HDMI some receivers need HBR // E-AC-3 over HDMI some receivers need HBR
audio_decoder->HwSampleRate *= 4; audio_decoder->HwSampleRate *= 4;
} }
audio_decoder->HwChannels = 2; audio_decoder->HwChannels = 2;
@ -1014,7 +1014,7 @@ static int CodecAudioUpdateHelper(AudioDecoder * audio_decoder,
AudioSetup(&audio_decoder->HwSampleRate, AudioSetup(&audio_decoder->HwSampleRate,
&audio_decoder->HwChannels, *passthrough))) { &audio_decoder->HwChannels, *passthrough))) {
// try EAC3 none HBR // try E-AC-3 none HBR
audio_decoder->HwSampleRate /= 4; audio_decoder->HwSampleRate /= 4;
if (audio_ctx->codec_id != AV_CODEC_ID_EAC3 if (audio_ctx->codec_id != AV_CODEC_ID_EAC3
|| (err = || (err =

View File

@ -30,7 +30,7 @@
#define CodecPCM 0x01 ///< PCM bit mask #define CodecPCM 0x01 ///< PCM bit mask
#define CodecMPA 0x02 ///< MPA bit mask (planned) #define CodecMPA 0x02 ///< MPA bit mask (planned)
#define CodecAC3 0x04 ///< AC-3 bit mask #define CodecAC3 0x04 ///< AC-3 bit mask
#define CodecEAC3 0x08 ///< EAC-3 bit mask #define CodecEAC3 0x08 ///< E-AC-3 bit mask
#define CodecDTS 0x10 ///< DTS bit mask (planned) #define CodecDTS 0x10 ///< DTS bit mask (planned)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: VDR \n" "Project-Id-Version: VDR \n"
"Report-Msgid-Bugs-To: <see README>\n" "Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2013-04-16 15:10+0200\n" "POT-Creation-Date: 2013-07-25 13:22+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -384,6 +384,10 @@ msgstr ""
msgid "[softhddev] invalid PES video packet\n" msgid "[softhddev] invalid PES video packet\n"
msgstr "" msgstr ""
#, c-format
msgid "[softhddev] %d invalid PES video packet(s)\n"
msgstr ""
msgid "[softhddev] empty video packet\n" msgid "[softhddev] empty video packet\n"
msgstr "" msgstr ""
@ -587,10 +591,10 @@ msgstr ""
msgid " AC-3 pass-through" msgid " AC-3 pass-through"
msgstr "" msgstr ""
msgid " EAC-3 pass-through" msgid " E-AC-3 pass-through"
msgstr "" msgstr ""
msgid "Enable (E)AC-3 (decoder) downmix" msgid "Enable (E-)AC-3 (decoder) downmix"
msgstr "" msgstr ""
msgid "Volume control" msgid "Volume control"
@ -672,7 +676,7 @@ msgid "Alternative Video Height (%)"
msgstr "Alternative Videohöhe (%)" msgstr "Alternative Videohöhe (%)"
#, c-format #, c-format
msgid "[softhddev]pip: invalid pes packet %d\n" msgid "[softhddev]pip: invalid PES packet %d\n"
msgstr "" msgstr ""
msgid "[softhddev]pip: pes buffer too small\n" msgid "[softhddev]pip: pes buffer too small\n"

View File

@ -309,7 +309,7 @@ static int LatmCheck(const uint8_t * data, int size)
} }
/// ///
/// Possible AC3 frame sizes. /// Possible AC-3 frame sizes.
/// ///
/// from ATSC A/52 table 5.18 frame size code table. /// from ATSC A/52 table 5.18 frame size code table.
/// ///
@ -327,9 +327,9 @@ const uint16_t Ac3FrameSizeTable[38][3] = {
}; };
/// ///
/// Fast check for (E)AC3 audio. /// Fast check for (E-)AC-3 audio.
/// ///
/// 5 bytes 0x0B77xxxxxx AC3 audio /// 5 bytes 0x0B77xxxxxx AC-3 audio
/// ///
static inline int FastAc3Check(const uint8_t * p) static inline int FastAc3Check(const uint8_t * p)
{ {
@ -343,7 +343,7 @@ static inline int FastAc3Check(const uint8_t * p)
} }
/// ///
/// Check for (E)AC-3 audio. /// Check for (E-)AC-3 audio.
/// ///
/// 0x0B77xxxxxx already checked. /// 0x0B77xxxxxx already checked.
/// ///
@ -354,7 +354,7 @@ static inline int FastAc3Check(const uint8_t * p)
/// @retval 0 no valid AC-3 audio /// @retval 0 no valid AC-3 audio
/// @retval >0 valid AC-3 audio /// @retval >0 valid AC-3 audio
/// ///
/// o AC3 Header /// o AC-3 Header
/// AAAAAAAA AAAAAAAA BBBBBBBB BBBBBBBB CCDDDDDD EEEEEFFF /// AAAAAAAA AAAAAAAA BBBBBBBB BBBBBBBB CCDDDDDD EEEEEFFF
/// ///
/// o a 16x Frame sync, always 0x0B77 /// o a 16x Frame sync, always 0x0B77
@ -364,7 +364,7 @@ static inline int FastAc3Check(const uint8_t * p)
/// o e 5x Bitstream ID /// o e 5x Bitstream ID
/// o f 3x Bitstream mode /// o f 3x Bitstream mode
/// ///
/// o EAC3 Header /// o E-AC-3 Header
/// AAAAAAAA AAAAAAAA BBCCCDDD DDDDDDDD EEFFGGGH IIIII... /// AAAAAAAA AAAAAAAA BBCCCDDD DDDDDDDD EEFFGGGH IIIII...
/// ///
/// o a 16x Frame sync, always 0x0B77 /// o a 16x Frame sync, always 0x0B77
@ -378,17 +378,17 @@ static int Ac3Check(const uint8_t * data, int size)
{ {
int frame_size; int frame_size;
if (size < 5) { // need 5 bytes to see if AC3/EAC3 if (size < 5) { // need 5 bytes to see if AC-3/E-AC-3
return -5; return -5;
} }
if (data[5] > (10 << 3)) { // EAC3 if (data[5] > (10 << 3)) { // E-AC-3
if ((data[4] & 0xF0) == 0xF0) { // invalid fscod fscod2 if ((data[4] & 0xF0) == 0xF0) { // invalid fscod fscod2
return 0; return 0;
} }
frame_size = ((data[2] & 0x03) << 8) + data[3] + 1; frame_size = ((data[2] & 0x03) << 8) + data[3] + 1;
frame_size *= 2; frame_size *= 2;
} else { // AC3 } else { // AC-3
int fscod; int fscod;
int frmsizcod; int frmsizcod;
@ -664,8 +664,8 @@ static void PesParse(PesDemux * pesdx, const uint8_t * data, int size,
unsigned codec_id; unsigned codec_id;
// 4 bytes 0xFFExxxxx Mpeg audio // 4 bytes 0xFFExxxxx Mpeg audio
// 5 bytes 0x0B77xxxxxx AC3 audio // 5 bytes 0x0B77xxxxxx AC-3 audio
// 6 bytes 0x0B77xxxxxxxx EAC3 audio // 6 bytes 0x0B77xxxxxxxx E-AC-3 audio
// 3 bytes 0x56Exxx AAC LATM audio // 3 bytes 0x56Exxx AAC LATM audio
// 7/9 bytes 0xFFFxxxxxxxxxxx ADTS audio // 7/9 bytes 0xFFFxxxxxxxxxxx ADTS audio
// PCM audio can't be found // PCM audio can't be found
@ -1170,8 +1170,8 @@ int PlayAudio(const uint8_t * data, int size, uint8_t id)
// 4 bytes 0xFFExxxxx Mpeg audio // 4 bytes 0xFFExxxxx Mpeg audio
// 3 bytes 0x56Exxx AAC LATM audio // 3 bytes 0x56Exxx AAC LATM audio
// 5 bytes 0x0B77xxxxxx AC3 audio // 5 bytes 0x0B77xxxxxx AC-3 audio
// 6 bytes 0x0B77xxxxxxxx EAC3 audio // 6 bytes 0x0B77xxxxxxxx E-AC-3 audio
// 7/9 bytes 0xFFFxxxxxxxxxxx ADTS audio // 7/9 bytes 0xFFFxxxxxxxxxxx ADTS audio
// PCM audio can't be found // PCM audio can't be found
r = 0; r = 0;

View File

@ -52,7 +52,7 @@ extern "C"
/// vdr-plugin version number. /// vdr-plugin version number.
/// Makefile extracts the version number for generating the file name /// Makefile extracts the version number for generating the file name
/// for the distribution archive. /// for the distribution archive.
static const char *const VERSION = "0.6.0" static const char *const VERSION = "0.6.1rc1"
#ifdef GIT_REV #ifdef GIT_REV
"-GIT" GIT_REV "-GIT" GIT_REV
#endif #endif
@ -854,9 +854,9 @@ void cMenuSetupSoft::Create(void)
&AudioPassthroughPCM, trVDR("no"), trVDR("yes"))); &AudioPassthroughPCM, trVDR("no"), trVDR("yes")));
Add(new cMenuEditBoolItem(tr("\040\040AC-3 pass-through"), Add(new cMenuEditBoolItem(tr("\040\040AC-3 pass-through"),
&AudioPassthroughAC3, trVDR("no"), trVDR("yes"))); &AudioPassthroughAC3, trVDR("no"), trVDR("yes")));
Add(new cMenuEditBoolItem(tr("\040\040EAC-3 pass-through"), Add(new cMenuEditBoolItem(tr("\040\040E-AC-3 pass-through"),
&AudioPassthroughEAC3, trVDR("no"), trVDR("yes"))); &AudioPassthroughEAC3, trVDR("no"), trVDR("yes")));
Add(new cMenuEditBoolItem(tr("Enable (E)AC-3 (decoder) downmix"), Add(new cMenuEditBoolItem(tr("Enable (E-)AC-3 (decoder) downmix"),
&AudioDownmix, trVDR("no"), trVDR("yes"))); &AudioDownmix, trVDR("no"), trVDR("yes")));
Add(new cMenuEditBoolItem(tr("Volume control"), &AudioSoftvol, Add(new cMenuEditBoolItem(tr("Volume control"), &AudioSoftvol,
tr("Hardware"), tr("Software"))); tr("Hardware"), tr("Software")));