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
fec0d40b
Commit
fec0d40b
authored
Aug 11, 2002
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* S/PDIF output should now be working (untested, though).
parent
19457f20
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
451 additions
and
239 deletions
+451
-239
configure
configure
+188
-189
configure.in
configure.in
+3
-4
extras/MacOSX/.cvsignore
extras/MacOSX/.cvsignore
+1
-0
modules/audio_filter/converter/Makefile
modules/audio_filter/converter/Makefile
+1
-0
modules/audio_filter/converter/a52tospdif.c
modules/audio_filter/converter/a52tospdif.c
+114
-0
modules/audio_mixer/Makefile
modules/audio_mixer/Makefile
+1
-0
modules/audio_mixer/spdif.c
modules/audio_mixer/spdif.c
+78
-0
modules/audio_mixer/trivial.c
modules/audio_mixer/trivial.c
+1
-3
modules/audio_output/oss.c
modules/audio_output/oss.c
+38
-35
modules/codec/spdif.c
modules/codec/spdif.c
+9
-3
src/audio_output/mixer.c
src/audio_output/mixer.c
+5
-2
src/audio_output/output.c
src/audio_output/output.c
+12
-3
No files found.
configure
View file @
fec0d40b
This diff is collapsed.
Click to expand it.
configure.in
View file @
fec0d40b
...
...
@@ -441,13 +441,12 @@ BUILTINS="${BUILTINS}"
PLUGINS="${PLUGINS} misc/dummy/dummy misc/null/null"
PLUGINS="${PLUGINS} control/rc/rc misc/logger/logger access/file access/udp access/http misc/network/ipv4 misc/memcpy/memcpy"
PLUGINS="${PLUGINS} demux/mpeg/es demux/mpeg/audio demux/mpeg/mpeg_system demux/mpeg/ps demux/mpeg/ts"
PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec"
PLUGINS="${PLUGINS} codec/spdif"
PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec codec/spdif"
#PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/mpeg_audio/mpeg_audio codec/a52old/a52old codec/lpcm/lpcm"
PLUGINS="${PLUGINS} video_filter/deinterlace/deinterlace video_filter/invert video_filter/wall video_filter/transform video_filter/distort video_filter/clone video_filter/crop"
PLUGINS="${PLUGINS} audio_filter/converter/float32tos16"
PLUGINS="${PLUGINS} audio_filter/converter/float32tos16
audio_filter/converter/a52tospdif
"
PLUGINS="${PLUGINS} audio_filter/resampler/trivial"
PLUGINS="${PLUGINS} audio_mixer/trivial"
PLUGINS="${PLUGINS} audio_mixer/trivial
audio_mixer/spdif
"
PLUGINS="${PLUGINS} audio_output/file"
#PLUGINS="${PLUGINS} visualization/scope/scope"
PLUGINS="${PLUGINS} video_chroma/i420_rgb video_chroma/i420_yuy2 video_chroma/i422_yuy2 video_chroma/i420_ymga"
...
...
extras/MacOSX/.cvsignore
0 → 100644
View file @
fec0d40b
build
modules/audio_filter/converter/Makefile
View file @
fec0d40b
float32tos16_SOURCES
=
float32tos16.c
a52tospdif_SOURCES
=
a52tospdif.c
modules/audio_filter/converter/a52tospdif.c
0 → 100644
View file @
fec0d40b
/*****************************************************************************
* a52tospdif.c : encapsulates A/52 frames into S/PDIF packets
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: a52tospdif.c,v 1.1 2002/08/11 22:36:35 massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Stphane Borel <stef@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <errno.h>
#include <stdlib.h>
/* malloc(), free() */
#include <string.h>
#include <vlc/vlc.h>
#include "audio_output.h"
#include "aout_internal.h"
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static
int
Create
(
vlc_object_t
*
);
static
void
DoWork
(
aout_instance_t
*
,
aout_filter_t
*
,
aout_buffer_t
*
,
aout_buffer_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
vlc_module_begin
();
set_description
(
_
(
"aout filter for A/52->S/PDIF encapsulation"
)
);
set_capability
(
"audio filter"
,
10
);
set_callbacks
(
Create
,
NULL
);
vlc_module_end
();
/*****************************************************************************
* Create: allocate trivial mixer
*****************************************************************************
* This function allocates and initializes a Crop vout method.
*****************************************************************************/
static
int
Create
(
vlc_object_t
*
p_this
)
{
aout_filter_t
*
p_filter
=
(
aout_filter_t
*
)
p_this
;
if
(
p_filter
->
input
.
i_format
!=
AOUT_FMT_A52
&&
p_filter
->
output
.
i_format
!=
AOUT_FMT_SPDIF
)
{
return
-
1
;
}
p_filter
->
pf_do_work
=
DoWork
;
p_filter
->
b_in_place
=
0
;
return
0
;
}
/*****************************************************************************
* DoWork: convert a buffer
*****************************************************************************/
static
void
DoWork
(
aout_instance_t
*
p_aout
,
aout_filter_t
*
p_filter
,
aout_buffer_t
*
p_in_buf
,
aout_buffer_t
*
p_out_buf
)
{
static
const
u8
p_sync
[
6
]
=
{
0x72
,
0xF8
,
0x1F
,
0x4E
,
0x01
,
0x00
};
u16
i_length
=
*
(
u16
*
)
p_in_buf
->
p_buffer
;
u16
*
pi_length
;
byte_t
*
p_in
=
p_in_buf
->
p_buffer
;
byte_t
*
p_out
=
p_out_buf
->
p_buffer
;
/* Copy the S/PDIF headers. */
memcpy
(
p_out
,
p_sync
,
6
);
pi_length
=
(
u16
*
)(
p_out
+
6
);
*
pi_length
=
i_length
;
/* FIXME : if i_length is odd, the following code sucks. What should
* we do ? --Meuuh */
#ifndef WORDS_BIGENDIAN
# ifdef HAVE_SWAB
swab
(
p_out
+
8
,
p_in
+
sizeof
(
u16
),
i_length
);
# else
p_out
+=
8
;
p_in
+=
sizeof
(
u16
);
for
(
i
=
0
;
i
<
i_length
/
2
;
i
++
)
{
p_out
[
0
]
=
p_in
[
1
];
p_out
[
1
]
=
p_in
[
0
];
p_out
+=
2
;
p_in
+=
2
;
}
# endif
#else
p_filter
->
p_vlc
->
pf_memcpy
(
p_out
+
8
,
p_in
+
sizeof
(
u16
),
i_length
);
#endif
p_out_buf
->
i_nb_samples
=
p_in_buf
->
i_nb_samples
;
/* == 1 */
}
modules/audio_mixer/Makefile
View file @
fec0d40b
trivial_SOURCES
=
trivial.c
spdif_SOURCES
=
spdif.c
modules/audio_mixer/spdif.c
0 → 100644
View file @
fec0d40b
/*****************************************************************************
* spdif.c : dummy mixer for S/PDIF output (1 input only)
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: spdif.c,v 1.1 2002/08/11 22:36:35 massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <errno.h>
#include <stdlib.h>
/* malloc(), free() */
#include <string.h>
#include <vlc/vlc.h>
#include "audio_output.h"
#include "aout_internal.h"
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static
int
Create
(
vlc_object_t
*
);
static
void
DoWork
(
aout_instance_t
*
,
aout_buffer_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
vlc_module_begin
();
set_description
(
_
(
"dummy spdif audio mixer module"
)
);
set_capability
(
"audio mixer"
,
1
);
add_shortcut
(
"spdif"
);
set_callbacks
(
Create
,
NULL
);
vlc_module_end
();
/*****************************************************************************
* Create: allocate spdif mixer
*****************************************************************************/
static
int
Create
(
vlc_object_t
*
p_this
)
{
aout_instance_t
*
p_aout
=
(
aout_instance_t
*
)
p_this
;
if
(
p_aout
->
mixer
.
output
.
i_format
!=
AOUT_FMT_SPDIF
)
{
return
-
1
;
}
p_aout
->
mixer
.
pf_do_work
=
DoWork
;
/* This is a bit kludgy - do not ask for a new buffer, since the one
* provided by the first input will be good enough. */
p_aout
->
mixer
.
output_alloc
.
i_alloc
=
AOUT_ALLOC_NONE
;
return
0
;
}
/*****************************************************************************
* DoWork: mix a new output buffer - this does nothing, indeed
*****************************************************************************/
static
void
DoWork
(
aout_instance_t
*
p_aout
,
aout_buffer_t
*
p_buffer
)
{
}
modules/audio_mixer/trivial.c
View file @
fec0d40b
...
...
@@ -2,7 +2,7 @@
* trivial.c : trivial mixer plug-in (1 input, no downmixing)
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: trivial.c,v 1.
2 2002/08/08 00:35:10 sam
Exp $
* $Id: trivial.c,v 1.
3 2002/08/11 22:36:35 massiot
Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
...
...
@@ -51,8 +51,6 @@ vlc_module_end();
/*****************************************************************************
* Create: allocate trivial mixer
*****************************************************************************
* This function allocates and initializes a Crop vout method.
*****************************************************************************/
static
int
Create
(
vlc_object_t
*
p_this
)
{
...
...
modules/audio_output/oss.c
View file @
fec0d40b
...
...
@@ -2,7 +2,7 @@
* oss.c : OSS /dev/dsp module for vlc
*****************************************************************************
* Copyright (C) 2000-2002 VideoLAN
* $Id: oss.c,v 1.
5 2002/08/11 01:27:01
massiot Exp $
* $Id: oss.c,v 1.
6 2002/08/11 22:36:35
massiot Exp $
*
* Authors: Michel Kaempf <maxx@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -189,46 +189,49 @@ static int SetFormat( aout_instance_t *p_aout )
return
-
1
;
}
/* FIXME */
if
(
p_aout
->
output
.
output
.
i_channels
>
2
)
if
(
!
AOUT_FMT_IS_SPDIF
(
&
p_aout
->
output
.
output
)
)
{
msg_Warn
(
p_aout
,
"only two channels are supported at the moment"
);
/* Trigger downmixing */
p_aout
->
output
.
output
.
i_channels
=
2
;
}
/* FIXME */
if
(
p_aout
->
output
.
output
.
i_channels
>
2
)
{
msg_Warn
(
p_aout
,
"only two channels are supported at the moment"
);
/* Trigger downmixing */
p_aout
->
output
.
output
.
i_channels
=
2
;
}
/* Set the number of channels */
b_stereo
=
p_aout
->
output
.
output
.
i_channels
-
1
;
/* Set the number of channels */
b_stereo
=
p_aout
->
output
.
output
.
i_channels
-
1
;
if
(
ioctl
(
p_sys
->
i_fd
,
SNDCTL_DSP_STEREO
,
&
b_stereo
)
<
0
)
{
msg_Err
(
p_aout
,
"cannot set number of audio channels (%i)"
,
p_aout
->
output
.
output
.
i_channels
);
return
-
1
;
}
if
(
ioctl
(
p_sys
->
i_fd
,
SNDCTL_DSP_STEREO
,
&
b_stereo
)
<
0
)
{
msg_Err
(
p_aout
,
"cannot set number of audio channels (%i)"
,
p_aout
->
output
.
output
.
i_channels
);
return
-
1
;
}
if
(
b_stereo
+
1
!=
p_aout
->
output
.
output
.
i_channels
)
{
msg_Warn
(
p_aout
,
"driver forced up/downmixing %li->%li"
,
p_aout
->
output
.
output
.
i_channels
,
b_stereo
+
1
);
p_aout
->
output
.
output
.
i_channels
=
b_stereo
+
1
;
}
if
(
b_stereo
+
1
!=
p_aout
->
output
.
output
.
i_channels
)
{
msg_Warn
(
p_aout
,
"driver forced up/downmixing %li->%li"
,
p_aout
->
output
.
output
.
i_channels
,
b_stereo
+
1
);
p_aout
->
output
.
output
.
i_channels
=
b_stereo
+
1
;
}
/* Set the output rate */
i_rate
=
p_aout
->
output
.
output
.
i_rate
;
if
(
ioctl
(
p_sys
->
i_fd
,
SNDCTL_DSP_SPEED
,
&
i_rate
)
<
0
)
{
msg_Err
(
p_aout
,
"cannot set audio output rate (%i)"
,
p_aout
->
output
.
output
.
i_rate
);
return
-
1
;
}
/* Set the output rate */
i_rate
=
p_aout
->
output
.
output
.
i_rate
;
if
(
ioctl
(
p_sys
->
i_fd
,
SNDCTL_DSP_SPEED
,
&
i_rate
)
<
0
)
{
msg_Err
(
p_aout
,
"cannot set audio output rate (%i)"
,
p_aout
->
output
.
output
.
i_rate
);
return
-
1
;
}
if
(
i_rate
!=
p_aout
->
output
.
output
.
i_rate
)
{
msg_Warn
(
p_aout
,
"driver forced resampling %li->%li"
,
p_aout
->
output
.
output
.
i_rate
,
i_rate
);
p_aout
->
output
.
output
.
i_rate
=
i_rate
;
if
(
i_rate
!=
p_aout
->
output
.
output
.
i_rate
)
{
msg_Warn
(
p_aout
,
"driver forced resampling %li->%li"
,
p_aout
->
output
.
output
.
i_rate
,
i_rate
);
p_aout
->
output
.
output
.
i_rate
=
i_rate
;
}
}
p_sys
->
b_initialized
=
VLC_TRUE
;
...
...
modules/codec/spdif.c
View file @
fec0d40b
...
...
@@ -2,7 +2,7 @@
* spdif.c: A52 pass-through to external decoder with enabled soundcard
*****************************************************************************
* Copyright (C) 2001-2002 VideoLAN
* $Id: spdif.c,v 1.
1 2002/08/11 01:27:01
massiot Exp $
* $Id: spdif.c,v 1.
2 2002/08/11 22:36:35
massiot Exp $
*
* Authors: Stphane Borel <stef@via.ecp.fr>
* Juha Yrjola <jyrjola@cc.hut.fi>
...
...
@@ -145,6 +145,7 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
/* Temporary buffer to store the raw frame to be decoded */
byte_t
p_header
[
7
];
aout_buffer_t
*
p_buffer
;
u16
*
pi_length
;
/* Look for sync word - should be 0x0b77 */
RealignBits
(
&
p_dec
->
bit_stream
);
...
...
@@ -215,9 +216,14 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
/
p_dec
->
output_format
.
i_rate
;
p_buffer
->
end_date
=
last_date
;
/* The first two bytes store the length of the frame - this is
* a bit kludgy. */
pi_length
=
(
u16
*
)
p_buffer
->
p_buffer
;
*
pi_length
=
i_frame_size
;
/* Get the whole frame. */
memcpy
(
p_buffer
->
p_buffer
,
p_header
,
7
);
GetChunk
(
&
p_dec
->
bit_stream
,
p_buffer
->
p_buffer
+
7
,
memcpy
(
p_buffer
->
p_buffer
+
sizeof
(
u16
)
,
p_header
,
7
);
GetChunk
(
&
p_dec
->
bit_stream
,
p_buffer
->
p_buffer
+
7
+
sizeof
(
u16
)
,
i_frame_size
-
7
);
if
(
p_dec
->
p_fifo
->
b_die
)
break
;
...
...
src/audio_output/mixer.c
View file @
fec0d40b
...
...
@@ -2,7 +2,7 @@
* mixer.c : audio output mixing operations
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: mixer.c,v 1.
1 2002/08/07 21:36:56
massiot Exp $
* $Id: mixer.c,v 1.
2 2002/08/11 22:36:35
massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
...
...
@@ -111,7 +111,10 @@ void aout_MixerRun( aout_instance_t * p_aout )
/* Run the mixer. */
aout_BufferAlloc
(
&
p_aout
->
mixer
.
output_alloc
,
(
u64
)(
p_aout
->
output
.
i_nb_samples
*
1000000
)
/
p_aout
->
output
.
output
.
i_rate
,
NULL
,
/
p_aout
->
output
.
output
.
i_rate
,
/* This is a bit kludgy, but is actually only used
* for the S/PDIF dummy mixer : */
p_aout
->
pp_inputs
[
0
]
->
fifo
.
p_first
,
p_output_buffer
);
if
(
p_output_buffer
==
NULL
)
{
...
...
src/audio_output/output.c
View file @
fec0d40b
...
...
@@ -2,7 +2,7 @@
* output.c : internal management of output streams for the audio output
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: output.c,v 1.
2 2002/08/09 23:47:23
massiot Exp $
* $Id: output.c,v 1.
3 2002/08/11 22:36:35
massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
...
...
@@ -61,7 +61,11 @@ int aout_OutputNew( aout_instance_t * p_aout,
memcpy
(
&
p_aout
->
output
.
output
,
p_format
,
sizeof
(
audio_sample_format_t
)
);
if
(
i_rate
!=
-
1
)
p_aout
->
output
.
output
.
i_rate
=
i_rate
;
if
(
i_channels
!=
-
1
)
p_aout
->
output
.
output
.
i_channels
=
i_channels
;
if
(
p_aout
->
output
.
output
.
i_format
!=
AOUT_FMT_A52
)
if
(
AOUT_FMT_IS_SPDIF
(
&
p_aout
->
output
.
output
)
)
{
p_aout
->
output
.
output
.
i_format
=
AOUT_FMT_SPDIF
;
}
else
{
/* Non-S/PDIF mixer only deals with float32 or fixed32. */
p_aout
->
output
.
output
.
i_format
...
...
@@ -84,8 +88,13 @@ int aout_OutputNew( aout_instance_t * p_aout,
/* Calculate the resulting mixer output format. */
p_aout
->
mixer
.
output
.
i_channels
=
p_aout
->
output
.
output
.
i_channels
;
p_aout
->
mixer
.
output
.
i_rate
=
p_aout
->
output
.
output
.
i_rate
;
if
(
p_aout
->
output
.
output
.
i_format
!=
AOUT_FMT_A52
)
if
(
AOUT_FMT_IS_SPDIF
(
&
p_aout
->
output
.
output
)
)
{
p_aout
->
mixer
.
output
.
i_format
=
AOUT_FMT_SPDIF
;
}
else
{
/* Non-S/PDIF mixer only deals with float32 or fixed32. */
p_aout
->
mixer
.
output
.
i_format
=
(
p_aout
->
p_vlc
->
i_cpu
&
CPU_CAPABILITY_FPU
)
?
AOUT_FMT_FLOAT32
:
AOUT_FMT_FIXED32
;
...
...
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