Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
Commits
3ca21ff4
Commit
3ca21ff4
authored
May 13, 2004
by
Derk-Jan Hartman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Fix for stream selection on HAL devices.
by Jean Alexis Montignies <ja at sente.ch>
parent
c24e6c9c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
11 deletions
+44
-11
THANKS
THANKS
+1
-0
modules/audio_output/coreaudio.c
modules/audio_output/coreaudio.c
+43
-11
No files found.
THANKS
View file @
3ca21ff4
...
@@ -40,6 +40,7 @@ Fumio Nakayama <endymion@ca2.so-net.ne.jp> - Japanese translation
...
@@ -40,6 +40,7 @@ Fumio Nakayama <endymion@ca2.so-net.ne.jp> - Japanese translation
Goetz Waschk <waschk at informatik.uni-rostock dot de> - Mandrake packages
Goetz Waschk <waschk at informatik.uni-rostock dot de> - Mandrake packages
Haakon Meland Eriksen - Norwegian translation
Haakon Meland Eriksen - Norwegian translation
Hans-Peter Jansen <hpj@urpla.net> - patch for module options handling
Hans-Peter Jansen <hpj@urpla.net> - patch for module options handling
Jean-Alexis Montignies <ja@sente.ch> - coreaudio multiple streams fix
Jean-Philippe Grimaldi <jeanphi@via.ecp.fr> - bug fixes
Jean-Philippe Grimaldi <jeanphi@via.ecp.fr> - bug fixes
Jean-Pierre Kuypers <Kuypers@sri.ucl.ac.be> - French translation
Jean-Pierre Kuypers <Kuypers@sri.ucl.ac.be> - French translation
Jeffrey Baker <jwbaker@acm.org> - port of the ALSA plugin to the ALSA 1.0 API
Jeffrey Baker <jwbaker@acm.org> - port of the ALSA plugin to the ALSA 1.0 API
...
...
modules/audio_output/coreaudio.c
View file @
3ca21ff4
/*****************************************************************************
/*****************************************************************************
* coreaudio.c: CoreAudio output plugin
* coreaudio.c: CoreAudio output plugin
*****************************************************************************
*****************************************************************************
* Copyright (C) 2002-200
3
VideoLAN
* Copyright (C) 2002-200
4
VideoLAN
* $Id
: coreaudio.c,v 1.10 2004/01/25 18:53:07 gbazin Exp
$
* $Id$
*
*
* Authors: Colin Delacroix <colin@zoy.org>
* Authors: Colin Delacroix <colin@zoy.org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Jon Lech Johansen <jon-vl@nanocrew.net>
...
@@ -157,6 +157,7 @@ struct aout_sys_t
...
@@ -157,6 +157,7 @@ struct aout_sys_t
struct
aout_option_t
*
p_options
;
struct
aout_option_t
*
p_options
;
AudioDeviceID
devid
;
AudioDeviceID
devid
;
UInt32
i_stream_index
;
AudioStreamBasicDescription
stream_format
;
AudioStreamBasicDescription
stream_format
;
UInt32
b_dev_alive
;
UInt32
b_dev_alive
;
...
@@ -236,6 +237,8 @@ static int Open( vlc_object_t * p_this )
...
@@ -236,6 +237,8 @@ static int Open( vlc_object_t * p_this )
UInt32
i_param_size
;
UInt32
i_param_size
;
struct
aout_sys_t
*
p_sys
;
struct
aout_sys_t
*
p_sys
;
aout_instance_t
*
p_aout
=
(
aout_instance_t
*
)
p_this
;
aout_instance_t
*
p_aout
=
(
aout_instance_t
*
)
p_this
;
struct
aout_option_t
*
p_option
;
UInt32
i_startingChannel
;
/* Allocate structure */
/* Allocate structure */
p_sys
=
(
struct
aout_sys_t
*
)
malloc
(
sizeof
(
struct
aout_sys_t
)
);
p_sys
=
(
struct
aout_sys_t
*
)
malloc
(
sizeof
(
struct
aout_sys_t
)
);
...
@@ -275,9 +278,29 @@ static int Open( vlc_object_t * p_this )
...
@@ -275,9 +278,29 @@ static int Open( vlc_object_t * p_this )
return
(
VLC_EGENERIC
);
return
(
VLC_EGENERIC
);
}
}
/* get starting channel for the selected stream */
p_option
=
&
p_sys
->
p_options
[
p_sys
->
i_sel_opt
];
i_param_size
=
sizeof
(
UInt32
);
err
=
AudioStreamGetProperty
(
p_option
->
i_sid
,
0
,
kAudioStreamPropertyStartingChannel
,
&
i_param_size
,
&
i_startingChannel
);
if
(
err
!=
noErr
)
{
msg_Err
(
p_aout
,
"failed to get channel number: [%4.4s]"
,
(
char
*
)
&
err
);
FreeDevice
(
p_aout
);
FreeHardwareInfo
(
p_aout
);
vlc_mutex_destroy
(
&
p_sys
->
lock
);
free
(
(
void
*
)
p_sys
);
return
(
VLC_EGENERIC
);
}
msg_Dbg
(
p_aout
,
"starting channel: [%ld]"
,
i_startingChannel
);
/* Get a description of the stream format */
/* Get a description of the stream format */
i_param_size
=
sizeof
(
AudioStreamBasicDescription
);
i_param_size
=
sizeof
(
AudioStreamBasicDescription
);
err
=
AudioDeviceGetProperty
(
p_sys
->
devid
,
0
,
FALSE
,
err
=
AudioDeviceGetProperty
(
p_sys
->
devid
,
i_startingChannel
,
FALSE
,
kAudioDevicePropertyStreamFormat
,
kAudioDevicePropertyStreamFormat
,
&
i_param_size
,
&
p_sys
->
stream_format
);
&
i_param_size
,
&
p_sys
->
stream_format
);
if
(
err
!=
noErr
)
if
(
err
!=
noErr
)
...
@@ -300,7 +323,7 @@ static int Open( vlc_object_t * p_this )
...
@@ -300,7 +323,7 @@ static int Open( vlc_object_t * p_this )
/* Get the buffer size */
/* Get the buffer size */
i_param_size
=
sizeof
(
p_sys
->
i_buffer_size
);
i_param_size
=
sizeof
(
p_sys
->
i_buffer_size
);
err
=
AudioDeviceGetProperty
(
p_sys
->
devid
,
0
,
FALSE
,
err
=
AudioDeviceGetProperty
(
p_sys
->
devid
,
i_startingChannel
,
FALSE
,
kAudioDevicePropertyBufferSize
,
kAudioDevicePropertyBufferSize
,
&
i_param_size
,
&
p_sys
->
i_buffer_size
);
&
i_param_size
,
&
p_sys
->
i_buffer_size
);
if
(
err
!=
noErr
)
if
(
err
!=
noErr
)
...
@@ -315,7 +338,8 @@ static int Open( vlc_object_t * p_this )
...
@@ -315,7 +338,8 @@ static int Open( vlc_object_t * p_this )
}
}
msg_Dbg
(
p_aout
,
"device buffer size: [%ld]"
,
p_sys
->
i_buffer_size
);
msg_Dbg
(
p_aout
,
"device buffer size: [%ld]"
,
p_sys
->
i_buffer_size
);
msg_Dbg
(
p_aout
,
"device buffer index: [%ld]"
,
p_sys
->
i_stream_index
);
/* If we do AC3 over SPDIF, set buffer size to one AC3 frame */
/* If we do AC3 over SPDIF, set buffer size to one AC3 frame */
if
(
(
p_sys
->
stream_format
.
mFormatID
==
kAudioFormat60958AC3
||
if
(
(
p_sys
->
stream_format
.
mFormatID
==
kAudioFormat60958AC3
||
p_sys
->
stream_format
.
mFormatID
==
'
IAC3
'
)
&&
p_sys
->
stream_format
.
mFormatID
==
'
IAC3
'
)
&&
...
@@ -605,7 +629,7 @@ static OSStatus IOCallback( AudioDeviceID inDevice,
...
@@ -605,7 +629,7 @@ static OSStatus IOCallback( AudioDeviceID inDevice,
if
(
p_buffer
!=
NULL
)
if
(
p_buffer
!=
NULL
)
{
{
/* move data into output data buffer */
/* move data into output data buffer */
p_aout
->
p_vlc
->
pf_memcpy
(
outOutputData
->
mBuffers
[
0
].
mData
,
p_aout
->
p_vlc
->
pf_memcpy
(
outOutputData
->
mBuffers
[
p_sys
->
i_stream_index
].
mData
,
p_buffer
->
p_buffer
,
p_buffer
->
p_buffer
,
p_sys
->
i_buffer_size
);
p_sys
->
i_buffer_size
);
...
@@ -616,7 +640,7 @@ static OSStatus IOCallback( AudioDeviceID inDevice,
...
@@ -616,7 +640,7 @@ static OSStatus IOCallback( AudioDeviceID inDevice,
if
(
p_aout
->
output
.
output
.
i_format
==
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
)
if
(
p_aout
->
output
.
output
.
i_format
==
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
)
{
{
UInt32
i
,
i_size
=
p_sys
->
i_buffer_size
/
sizeof
(
float
);
UInt32
i
,
i_size
=
p_sys
->
i_buffer_size
/
sizeof
(
float
);
float
*
p
=
(
float
*
)
outOutputData
->
mBuffers
[
0
].
mData
;
float
*
p
=
(
float
*
)
outOutputData
->
mBuffers
[
p_sys
->
i_stream_index
].
mData
;
for
(
i
=
0
;
i
<
i_size
;
i
++
)
for
(
i
=
0
;
i
<
i_size
;
i
++
)
{
{
...
@@ -625,7 +649,7 @@ static OSStatus IOCallback( AudioDeviceID inDevice,
...
@@ -625,7 +649,7 @@ static OSStatus IOCallback( AudioDeviceID inDevice,
}
}
else
else
{
{
memset
(
outOutputData
->
mBuffers
[
0
].
mData
,
memset
(
outOutputData
->
mBuffers
[
p_sys
->
i_stream_index
].
mData
,
0
,
p_sys
->
i_buffer_size
);
0
,
p_sys
->
i_buffer_size
);
}
}
}
}
...
@@ -1116,7 +1140,7 @@ static int InitDevice( aout_instance_t * p_aout )
...
@@ -1116,7 +1140,7 @@ static int InitDevice( aout_instance_t * p_aout )
vlc_value_t
val
;
vlc_value_t
val
;
unsigned
int
i_option
;
unsigned
int
i_option
;
vlc_bool_t
b_found
=
VLC_FALSE
;
vlc_bool_t
b_found
=
VLC_FALSE
;
UInt32
i
,
i_stream
,
i_param_size
;
UInt32
i
,
i_stream
,
i_param_size
,
i_firstChannelNum
;
struct
aout_dev_t
*
p_dev
;
struct
aout_dev_t
*
p_dev
;
struct
aout_option_t
*
p_option
;
struct
aout_option_t
*
p_option
;
...
@@ -1163,6 +1187,13 @@ static int InitDevice( aout_instance_t * p_aout )
...
@@ -1163,6 +1187,13 @@ static int InitDevice( aout_instance_t * p_aout )
i_stream
=
b_found
?
i
:
p_option
->
i_sdx
;
i_stream
=
b_found
?
i
:
p_option
->
i_sdx
;
i_firstChannelNum
=
0
;
for
(
i
=
0
;
i
<
i_stream
;
i
++
)
{
i_firstChannelNum
+=
P_STREAMS
[
i
].
mChannelsPerFrame
;
}
i_param_size
=
sizeof
(
p_sys
->
sfmt_revert
);
i_param_size
=
sizeof
(
p_sys
->
sfmt_revert
);
err
=
AudioStreamGetProperty
(
p_option
->
i_sid
,
0
,
err
=
AudioStreamGetProperty
(
p_option
->
i_sid
,
0
,
kAudioStreamPropertyPhysicalFormat
,
kAudioStreamPropertyPhysicalFormat
,
...
@@ -1254,8 +1285,6 @@ static int InitDevice( aout_instance_t * p_aout )
...
@@ -1254,8 +1285,6 @@ static int InitDevice( aout_instance_t * p_aout )
p_sys
->
b_revert_sfmt
=
VLC_TRUE
;
p_sys
->
b_revert_sfmt
=
VLC_TRUE
;
}
}
#undef I_STREAMS
#undef P_STREAMS
err
=
AudioDeviceAddPropertyListener
(
p_dev
->
devid
,
0
,
FALSE
,
err
=
AudioDeviceAddPropertyListener
(
p_dev
->
devid
,
0
,
FALSE
,
kAudioDevicePropertyDeviceIsAlive
,
kAudioDevicePropertyDeviceIsAlive
,
...
@@ -1271,6 +1300,9 @@ static int InitDevice( aout_instance_t * p_aout )
...
@@ -1271,6 +1300,9 @@ static int InitDevice( aout_instance_t * p_aout )
p_sys
->
i_sel_opt
=
i_option
;
p_sys
->
i_sel_opt
=
i_option
;
p_sys
->
devid
=
p_dev
->
devid
;
p_sys
->
devid
=
p_dev
->
devid
;
p_sys
->
i_stream_index
=
p_option
->
i_idx
;
#undef I_STREAMS
#undef P_STREAMS
return
(
VLC_SUCCESS
);
return
(
VLC_SUCCESS
);
}
}
...
...
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