Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
ebf64853
Commit
ebf64853
authored
Dec 17, 2012
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ALSA: report selected device not only when playing
parent
729e4dcb
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
22 deletions
+29
-22
modules/audio_output/alsa.c
modules/audio_output/alsa.c
+29
-22
No files found.
modules/audio_output/alsa.c
View file @
ebf64853
...
...
@@ -47,8 +47,10 @@ struct aout_sys_t
uint8_t
chans_table
[
AOUT_CHAN_MAX
];
/**< Channels order table */
uint8_t
chans_to_reorder
;
/**< Number of channels to reorder */
uint8_t
bits
;
/**< Bits per sample per channel */
bool
soft_mute
;
float
soft_gain
;
char
*
device
;
};
#include "volume.h"
...
...
@@ -299,12 +301,6 @@ static void Flush (audio_output_t *, bool);
static
int
Start
(
audio_output_t
*
aout
,
audio_sample_format_t
*
restrict
fmt
)
{
aout_sys_t
*
sys
=
aout
->
sys
;
/* Get device name */
char
*
device
=
var_InheritString
(
aout
,
"alsa-audio-device"
);
if
(
unlikely
(
device
==
NULL
))
return
VLC_ENOMEM
;
snd_pcm_format_t
pcm_format
;
/* ALSA sample format */
bool
spdif
=
false
;
...
...
@@ -379,9 +375,9 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt)
}
}
/* Choose the IEC device for S/PDIF output:
if the device is overridden by the user then it will be the one.
Otherwise we compute the default device based on the output format.
*/
const
char
*
device
=
sys
->
device
;
char
*
devbuf
=
NULL
;
/* Choose the IEC device for S/PDIF output
*/
if
(
spdif
&&
!
strcmp
(
device
,
"default"
))
{
unsigned
aes3
;
...
...
@@ -400,13 +396,13 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt)
break
;
}
free
(
device
);
if
(
asprintf
(
&
device
,
if
(
asprintf
(
&
devbuf
,
"iec958:AES0=0x%x,AES1=0x%x,AES2=0x%x,AES3=0x%x"
,
IEC958_AES0_CON_EMPHASIS_NONE
|
IEC958_AES0_NONAUDIO
,
IEC958_AES1_CON_ORIGINAL
|
IEC958_AES1_CON_PCM_CODER
,
0
,
aes3
)
==
-
1
)
return
VLC_ENOMEM
;
device
=
devbuf
;
}
/* Open the device */
...
...
@@ -415,22 +411,20 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt)
const
int
mode
=
SND_PCM_NO_AUTO_RESAMPLE
;
int
val
=
snd_pcm_open
(
&
pcm
,
device
,
SND_PCM_STREAM_PLAYBACK
,
mode
);
free
(
devbuf
);
if
(
val
!=
0
)
{
msg_Err
(
aout
,
"cannot open ALSA device
\"
%s
\"
: %s"
,
device
,
msg_Err
(
aout
,
"cannot open ALSA device
\"
%s
\"
: %s"
,
sys
->
device
,
snd_strerror
(
val
));
dialog_Fatal
(
aout
,
_
(
"Audio output failed"
),
_
(
"The audio device
\"
%s
\"
could not be used:
\n
%s."
),
device
,
snd_strerror
(
val
));
free
(
device
);
sys
->
device
,
snd_strerror
(
val
));
return
VLC_EGENERIC
;
}
sys
->
pcm
=
pcm
;
/* Print some potentially useful debug */
msg_Dbg
(
aout
,
"using ALSA device: %s"
,
device
);
aout_DeviceReport
(
aout
,
device
);
free
(
device
);
msg_Dbg
(
aout
,
"using ALSA device: %s"
,
sys
->
device
);
DumpDevice
(
VLC_OBJECT
(
aout
),
pcm
);
/* Get Initial hardware parameters */
...
...
@@ -623,7 +617,6 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt)
error:
snd_pcm_close
(
pcm
);
free
(
device
);
return
VLC_EGENERIC
;
}
...
...
@@ -788,10 +781,15 @@ static int DevicesEnum (audio_output_t *aout, char ***idp, char ***namep)
static
int
DeviceSelect
(
audio_output_t
*
aout
,
const
char
*
id
)
{
if
(
!
var_Type
(
aout
,
"alsa-audio-device"
))
var_Create
(
aout
,
"alsa-audio-device"
,
VLC_VAR_STRING
);
var_SetString
(
aout
,
"alsa-audio-device"
,
id
);
aout_sys_t
*
sys
=
aout
->
sys
;
char
*
device
=
strdup
(
id
?
id
:
"default"
);
if
(
unlikely
(
device
==
NULL
))
return
-
1
;
free
(
sys
->
device
);
sys
->
device
=
device
;
aout_DeviceReport
(
aout
,
device
);
aout_RestartRequest
(
aout
,
AOUT_RESTART_OUTPUT
);
return
0
;
}
...
...
@@ -803,13 +801,21 @@ static int Open(vlc_object_t *obj)
if
(
unlikely
(
sys
==
NULL
))
return
VLC_ENOMEM
;
sys
->
device
=
var_InheritString
(
aout
,
"alsa-audio-device"
);
if
(
unlikely
(
sys
->
device
==
NULL
))
goto
error
;
aout
->
sys
=
sys
;
aout
->
start
=
Start
;
aout
->
stop
=
Stop
;
aout_SoftVolumeInit
(
aout
);
aout
->
device_enum
=
DevicesEnum
;
aout
->
device_select
=
DeviceSelect
;
aout_DeviceReport
(
aout
,
sys
->
device
);
return
VLC_SUCCESS
;
error:
free
(
sys
);
return
VLC_ENOMEM
;
}
static
void
Close
(
vlc_object_t
*
obj
)
...
...
@@ -817,5 +823,6 @@ static void Close(vlc_object_t *obj)
audio_output_t
*
aout
=
(
audio_output_t
*
)
obj
;
aout_sys_t
*
sys
=
aout
->
sys
;
free
(
sys
);
free
(
sys
->
device
);
free
(
sys
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment