Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
861e38b0
Commit
861e38b0
authored
Dec 22, 2012
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
aout: add aout_Interleave() helper for interleaving
parent
d9b33ea5
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
0 deletions
+40
-0
include/vlc_aout.h
include/vlc_aout.h
+3
-0
src/audio_output/common.c
src/audio_output/common.c
+36
-0
src/libvlccore.sym
src/libvlccore.sym
+1
-0
No files found.
include/vlc_aout.h
View file @
861e38b0
...
...
@@ -212,6 +212,9 @@ VLC_API unsigned aout_CheckChannelReorder( const uint32_t *, const uint32_t *,
uint32_t
mask
,
uint8_t
*
table
);
VLC_API
void
aout_ChannelReorder
(
void
*
,
size_t
,
unsigned
,
const
uint8_t
*
,
vlc_fourcc_t
);
VLC_API
void
aout_Interleave
(
void
*
dst
,
const
void
*
src
,
unsigned
samples
,
unsigned
channels
,
vlc_fourcc_t
fourcc
);
/**
* This fonction will compute the extraction parameter into pi_selection to go
* from i_channels with their type given by pi_order_src[] into the order
...
...
src/audio_output/common.c
View file @
861e38b0
...
...
@@ -402,6 +402,42 @@ void aout_ChannelReorder( void *ptr, size_t bytes, unsigned channels,
}
}
/**
* Interleaves audio samples within a block of samples.
* \param dst destination buffer for interleaved samples
* \param src source buffer with consecutive planes of samples
* \param samples number of samples (per channel/per plane)
* \param chans channels/planes count
* \param fourcc sample format (must be a linear sample format)
* \note The samples must be naturally aligned in memory.
* \warning Destination and source buffers MUST NOT overlap.
*/
void
aout_Interleave
(
void
*
restrict
dst
,
const
void
*
restrict
src
,
unsigned
samples
,
unsigned
chans
,
vlc_fourcc_t
fourcc
)
{
#define INTERLEAVE_TYPE(type) \
do { \
type *d = dst; \
const type *s = src; \
for( size_t i = 0; i < chans; i++ ) { \
for( size_t j = 0, k = 0; j < samples; j++, k += chans ) \
d[k] = *(s++); \
d++; \
} \
} while(0)
switch
(
fourcc
)
{
case
VLC_CODEC_U8
:
INTERLEAVE_TYPE
(
uint8_t
);
break
;
case
VLC_CODEC_S16N
:
INTERLEAVE_TYPE
(
uint16_t
);
break
;
case
VLC_CODEC_FL32
:
INTERLEAVE_TYPE
(
float
);
break
;
case
VLC_CODEC_S32N
:
INTERLEAVE_TYPE
(
int32_t
);
break
;
case
VLC_CODEC_FL64
:
INTERLEAVE_TYPE
(
double
);
break
;
default:
assert
(
0
);
}
#undef INTERLEAVE_TYPE
}
/*****************************************************************************
* aout_ChannelExtract:
*****************************************************************************/
...
...
src/libvlccore.sym
View file @
861e38b0
...
...
@@ -5,6 +5,7 @@ aout_ChannelExtract
aout_ChannelReorder
aout_CheckChannelExtraction
aout_CheckChannelReorder
aout_Interleave
aout_filter_RequestVout
aout_FormatPrepare
aout_FormatPrint
...
...
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