mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Implemented left/right/stereo selection
This commit is contained in:
parent
42ab8c8797
commit
b387538887
8
HISTORY
8
HISTORY
@ -3254,7 +3254,7 @@ Video Disk Recorder Revision History
|
|||||||
- The new remote control button "Audio" can be used to switch between different
|
- The new remote control button "Audio" can be used to switch between different
|
||||||
audio tracks. The "Green" button in the "Main" menu has been changed from "Language"
|
audio tracks. The "Green" button in the "Main" menu has been changed from "Language"
|
||||||
to "Audio", since it now also controls switching between normal and Dolby Digital
|
to "Audio", since it now also controls switching between normal and Dolby Digital
|
||||||
audio tracks.
|
audio tracks (see MANUAL for details).
|
||||||
- The description of the audio tracks is now taken from the "component descriptors"
|
- The description of the audio tracks is now taken from the "component descriptors"
|
||||||
that are broadcast in the EPG data. However (as no big surprise), not all channels
|
that are broadcast in the EPG data. However (as no big surprise), not all channels
|
||||||
actually provide useful data here, so there are now some additional EPG bugfixes,
|
actually provide useful data here, so there are now some additional EPG bugfixes,
|
||||||
@ -3269,3 +3269,9 @@ Video Disk Recorder Revision History
|
|||||||
- The new setup option "DVB/Audio languages" can be used to control which audio
|
- The new setup option "DVB/Audio languages" can be used to control which audio
|
||||||
language shall be selected in case a channel broadcasts in different languages
|
language shall be selected in case a channel broadcasts in different languages
|
||||||
(see MANUAL for details).
|
(see MANUAL for details).
|
||||||
|
- The "Left" and "Right" keys in the "Audio" menu can be used to switch between
|
||||||
|
the left and right stereo channels in case there are different audio tracks
|
||||||
|
in these channels (see MANUAL for details).
|
||||||
|
Currently there is no visual indicator of the audio channel, yet, and it
|
||||||
|
doesn't work with the selected audio languages. It also doesn't appear to
|
||||||
|
work with some DVB cards (esp. the Siemens DVB-S Rev 1.3).
|
||||||
|
34
MANUAL
34
MANUAL
@ -11,20 +11,20 @@ Version 1.2
|
|||||||
possible, several keys have different meanings in the various
|
possible, several keys have different meanings in the various
|
||||||
modes:
|
modes:
|
||||||
|
|
||||||
Key Normal VDR Channels Timers Edit/New Recordings Replay
|
Key Normal VDR Channels Timers Edit/New Recordings Replay Audio
|
||||||
|
|
||||||
Up Ch up Crsr up Crsr up Crsr up Crsr up Crsr up Play
|
Up Ch up Crsr up Crsr up Crsr up Crsr up Crsr up Play Sel. track
|
||||||
Down Ch down Crsr down Crsr down Crsr down Crsr down Crsr down Pause
|
Down Ch down Crsr down Crsr down Crsr down Crsr down Crsr down Pause Sel. track
|
||||||
Left Prev group - Page up Page up Decrement Page up Search back
|
Left Prev group - Page up Page up Decrement Page up Search back Sel. channel
|
||||||
Right Next group - Page down Page down Increment Page down Search forward
|
Right Next group - Page down Page down Increment Page down Search forward Sel. channel
|
||||||
Ok Ch display Select Switch Edit Accept Play Progress disp.
|
Ok Ch display Select Switch Edit Accept Play Progress disp. Switch & Close
|
||||||
Menu Menu on Menu off Menu off Menu off Menu off Menu off Menu on
|
Menu Menu on Menu off Menu off Menu off Menu off Menu off Menu on Menu on
|
||||||
Back - Menu off VDR menu VDR menu Discard VDR menu Recordings menu
|
Back - Menu off VDR menu VDR menu Discard VDR menu Recordings menu Close
|
||||||
Red - Record Edit Edit ABC/abc Play/Commands(2) Jump
|
Red - Record Edit Edit ABC/abc Play/Commands(2) Jump -
|
||||||
Green - Audio New New Ins/Ovr Rewind Skip -60s
|
Green - Audio New New Ins/Ovr Rewind Skip -60s -
|
||||||
Yellow - Pause live Delete Delete Delete Delete Skip +60s
|
Yellow - Pause live Delete Delete Delete Delete Skip +60s -
|
||||||
Blue - Stop/Resume Mark On/Off(1) - Summary Stop
|
Blue - Stop/Resume Mark On/Off(1) - Summary Stop -
|
||||||
0..9 Ch select - Sort(3) Day(4) Numeric inp. Exec cmd(2) Editing
|
0..9 Ch select - Sort(3) Day(4) Numeric inp. Exec cmd(2) Editing -
|
||||||
|
|
||||||
In a numerical input field (like the response to a CAM enquiry) the keys 0..9
|
In a numerical input field (like the response to a CAM enquiry) the keys 0..9
|
||||||
are used to enter the data, and the Left key can be used to delete the last
|
are used to enter the data, and the Left key can be used to delete the last
|
||||||
@ -197,6 +197,14 @@ Version 1.2
|
|||||||
keys can be used to switch between the audio tracks. If your remote control has
|
keys can be used to switch between the audio tracks. If your remote control has
|
||||||
a dedicated "Audio" button, the first press of that button brings up the "Audio"
|
a dedicated "Audio" button, the first press of that button brings up the "Audio"
|
||||||
menu, and every further press switches to the next available audio track.
|
menu, and every further press switches to the next available audio track.
|
||||||
|
|
||||||
|
The "Left" and "Right" keys can be used to switch between "mono left", "stereo"
|
||||||
|
and "mono right" for channels that broadcast different audio tracks in the
|
||||||
|
left and right stereo channels (as was often done in the old analog days).
|
||||||
|
|
||||||
|
The "Ok" key explicitly switches to the selected track (in case the device
|
||||||
|
for some reason doesn't play it) and closes the "Audio" menu.
|
||||||
|
|
||||||
The "Audio" menu will automatically disappear after 5 seconds of user inactivity,
|
The "Audio" menu will automatically disappear after 5 seconds of user inactivity,
|
||||||
or if any key other than the ones described above is pressed.
|
or if any key other than the ones described above is pressed.
|
||||||
|
|
||||||
|
27
device.c
27
device.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.c 1.67 2005/01/04 15:38:46 kls Exp $
|
* $Id: device.c 1.68 2005/01/06 13:30:30 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -582,10 +582,23 @@ bool cDevice::HasProgramme(void)
|
|||||||
return Replaying() || pidHandles[ptAudio].pid || pidHandles[ptVideo].pid;
|
return Replaying() || pidHandles[ptAudio].pid || pidHandles[ptVideo].pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cDevice::GetAudioChannelDevice(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDevice::SetAudioChannelDevice(int AudioChannel)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void cDevice::SetVolumeDevice(int Volume)
|
void cDevice::SetVolumeDevice(int Volume)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cDevice::SetDigitalAudioDevice(bool On)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void cDevice::SetAudioTrackDevice(eTrackType Type)
|
void cDevice::SetAudioTrackDevice(eTrackType Type)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -607,6 +620,18 @@ bool cDevice::ToggleMute(void)
|
|||||||
return mute;
|
return mute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cDevice::GetAudioChannel(void)
|
||||||
|
{
|
||||||
|
int c = GetAudioChannelDevice();
|
||||||
|
return (0 <= c && c <= 2) ? c : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDevice::SetAudioChannel(int AudioChannel)
|
||||||
|
{
|
||||||
|
if (0 <= AudioChannel && AudioChannel <= 2)
|
||||||
|
SetAudioChannelDevice(AudioChannel);
|
||||||
|
}
|
||||||
|
|
||||||
void cDevice::SetVolume(int Volume, bool Absolute)
|
void cDevice::SetVolume(int Volume, bool Absolute)
|
||||||
{
|
{
|
||||||
volume = min(max(Absolute ? Volume : volume + Volume, 0), MAXVOLUME);
|
volume = min(max(Absolute ? Volume : volume + Volume, 0), MAXVOLUME);
|
||||||
|
15
device.h
15
device.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.h 1.49 2005/01/02 14:08:36 kls Exp $
|
* $Id: device.h 1.50 2005/01/06 13:27:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -345,15 +345,26 @@ private:
|
|||||||
bool mute;
|
bool mute;
|
||||||
int volume;
|
int volume;
|
||||||
protected:
|
protected:
|
||||||
|
virtual int GetAudioChannelDevice(void);
|
||||||
|
///< Gets the current audio channel, which is stereo (0), mono left (1) or
|
||||||
|
///< mono right (2).
|
||||||
|
virtual void SetAudioChannelDevice(int AudioChannel);
|
||||||
|
///< Sets the audio channel to stereo (0), mono left (1) or mono right (2).
|
||||||
virtual void SetVolumeDevice(int Volume);
|
virtual void SetVolumeDevice(int Volume);
|
||||||
///< Sets the audio volume on this device (Volume = 0...255).
|
///< Sets the audio volume on this device (Volume = 0...255).
|
||||||
virtual void SetDigitalAudioDevice(bool On) {}
|
virtual void SetDigitalAudioDevice(bool On);
|
||||||
///< Tells the actual device that digital audio output shall be switched
|
///< Tells the actual device that digital audio output shall be switched
|
||||||
///< on or off.
|
///< on or off.
|
||||||
public:
|
public:
|
||||||
bool IsMute(void) const { return mute; }
|
bool IsMute(void) const { return mute; }
|
||||||
bool ToggleMute(void);
|
bool ToggleMute(void);
|
||||||
///< Turns the volume off or on and returns the new mute state.
|
///< Turns the volume off or on and returns the new mute state.
|
||||||
|
int GetAudioChannel(void);
|
||||||
|
///< Gets the current audio channel, which is stereo (0), mono left (1) or
|
||||||
|
///< mono right (2).
|
||||||
|
void SetAudioChannel(int AudioChannel);
|
||||||
|
///< Sets the audio channel to stereo (0), mono left (1) or mono right (2).
|
||||||
|
///< Any other values will be silently ignored.
|
||||||
void SetVolume(int Volume, bool Absolute = false);
|
void SetVolume(int Volume, bool Absolute = false);
|
||||||
///< Sets the volume to the given value, either absolutely or relative to
|
///< Sets the volume to the given value, either absolutely or relative to
|
||||||
///< the current volume.
|
///< the current volume.
|
||||||
|
18
dvbdevice.c
18
dvbdevice.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 1.109 2005/01/04 13:13:32 kls Exp $
|
* $Id: dvbdevice.c 1.110 2005/01/06 13:32:41 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -823,6 +823,22 @@ bool cDvbDevice::HasLock(int TimeoutMs)
|
|||||||
return dvbTuner ? dvbTuner->Locked(TimeoutMs) : false;
|
return dvbTuner ? dvbTuner->Locked(TimeoutMs) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cDvbDevice::GetAudioChannelDevice(void)
|
||||||
|
{
|
||||||
|
if (HasDecoder()) {
|
||||||
|
audio_status_t as;
|
||||||
|
CHECK(ioctl(fd_audio, AUDIO_GET_STATUS, &as));
|
||||||
|
return as.channel_select;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDvbDevice::SetAudioChannelDevice(int AudioChannel)
|
||||||
|
{
|
||||||
|
if (HasDecoder())
|
||||||
|
CHECK(ioctl(fd_audio, AUDIO_CHANNEL_SELECT, AudioChannel));
|
||||||
|
}
|
||||||
|
|
||||||
void cDvbDevice::SetVolumeDevice(int Volume)
|
void cDvbDevice::SetVolumeDevice(int Volume)
|
||||||
{
|
{
|
||||||
if (HasDecoder()) {
|
if (HasDecoder()) {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.h 1.31 2004/12/17 14:01:31 kls Exp $
|
* $Id: dvbdevice.h 1.32 2005/01/06 13:30:51 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
@ -100,6 +100,8 @@ protected:
|
|||||||
private:
|
private:
|
||||||
bool digitalAudio;
|
bool digitalAudio;
|
||||||
protected:
|
protected:
|
||||||
|
virtual int GetAudioChannelDevice(void);
|
||||||
|
virtual void SetAudioChannelDevice(int AudioChannel);
|
||||||
virtual void SetVolumeDevice(int Volume);
|
virtual void SetVolumeDevice(int Volume);
|
||||||
virtual void SetDigitalAudioDevice(bool On);
|
virtual void SetDigitalAudioDevice(bool On);
|
||||||
|
|
||||||
|
19
menu.c
19
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 1.328 2005/01/05 10:26:59 kls Exp $
|
* $Id: menu.c 1.329 2005/01/06 13:27:00 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -2913,6 +2913,20 @@ eOSState cDisplayTracks::ProcessKey(eKeys Key)
|
|||||||
track++;
|
track++;
|
||||||
timeout.Set(TRACKTIMEOUT);
|
timeout.Set(TRACKTIMEOUT);
|
||||||
break;
|
break;
|
||||||
|
case kLeft|k_Repeat:
|
||||||
|
case kLeft:
|
||||||
|
case kRight|k_Repeat:
|
||||||
|
case kRight: {
|
||||||
|
static int ac[] = { 1, 0, 2 };
|
||||||
|
int AudioChannel = ac[cDevice::PrimaryDevice()->GetAudioChannel()];
|
||||||
|
if (NORMALKEY(Key) == kLeft && AudioChannel > 0)
|
||||||
|
AudioChannel--;
|
||||||
|
else if (NORMALKEY(Key) == kRight && AudioChannel < 2)
|
||||||
|
AudioChannel++;
|
||||||
|
cDevice::PrimaryDevice()->SetAudioChannel(ac[AudioChannel]);
|
||||||
|
timeout.Set(TRACKTIMEOUT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case kAudio:
|
case kAudio:
|
||||||
if (++track >= numTracks)
|
if (++track >= numTracks)
|
||||||
track = 0;
|
track = 0;
|
||||||
@ -2924,7 +2938,8 @@ eOSState cDisplayTracks::ProcessKey(eKeys Key)
|
|||||||
timeout.Set();
|
timeout.Set();
|
||||||
break;
|
break;
|
||||||
case kNone: break;
|
case kNone: break;
|
||||||
default: return osEnd;
|
default: if ((Key & k_Release) == 0)
|
||||||
|
return osEnd;
|
||||||
}
|
}
|
||||||
if (track != oldTrack) {
|
if (track != oldTrack) {
|
||||||
Show();
|
Show();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user