Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
98e48175
Commit
98e48175
authored
Oct 23, 2008
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pcm_utils: moved code to pcm_convert_16()
pcm_convert() converted only to 16 bit. To be able to support other sample sizes, move that 16 bit specific code to a separate function.
parent
8489e90c
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
21 deletions
+39
-21
pcm_utils.c
src/pcm_utils.c
+39
-21
No files found.
src/pcm_utils.c
View file @
98e48175
...
@@ -278,41 +278,41 @@ pcm_convert_to_16(struct pcm_convert_state *convert,
...
@@ -278,41 +278,41 @@ pcm_convert_to_16(struct pcm_convert_state *convert,
return
NULL
;
return
NULL
;
}
}
/* outFormat bits must be 16 and channels must be 1 or 2! */
static
size_t
size_t
pcm_convert
(
const
struct
audio_format
*
inF
ormat
,
pcm_convert_16
(
const
struct
audio_format
*
src_f
ormat
,
const
char
*
src
,
size_t
src_size
,
const
void
*
src_buffer
,
size_t
src_size
,
const
struct
audio_format
*
outF
ormat
,
const
struct
audio_format
*
dest_f
ormat
,
char
*
outB
uffer
,
int16_t
*
dest_b
uffer
,
struct
pcm_convert_state
*
convS
tate
)
struct
pcm_convert_state
*
s
tate
)
{
{
const
int16_t
*
buf
;
const
int16_t
*
buf
;
size_t
len
=
0
;
size_t
len
;
size_t
dest_size
=
pcm_convert_size
(
inFormat
,
src_size
,
outF
ormat
);
size_t
dest_size
=
pcm_convert_size
(
src_format
,
src_size
,
dest_f
ormat
);
assert
(
outF
ormat
->
bits
==
16
);
assert
(
dest_f
ormat
->
bits
==
16
);
/* everything else supports 16 bit only, so convert to that first */
buf
=
pcm_convert_to_16
(
state
,
src_format
->
bits
,
buf
=
pcm_convert_to_16
(
convState
,
inFormat
->
bits
,
src
,
src_size
,
&
len
);
src_buffer
,
src_size
,
&
len
);
if
(
!
buf
)
if
(
!
buf
)
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
if
(
inFormat
->
channels
!=
outF
ormat
->
channels
)
{
if
(
src_format
->
channels
!=
dest_f
ormat
->
channels
)
{
buf
=
pcm_convert_channels_16
(
outF
ormat
->
channels
,
buf
=
pcm_convert_channels_16
(
dest_f
ormat
->
channels
,
inF
ormat
->
channels
,
src_f
ormat
->
channels
,
buf
,
len
,
&
len
);
buf
,
len
,
&
len
);
if
(
!
buf
)
if
(
!
buf
)
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
if
(
inFormat
->
sample_rate
==
outF
ormat
->
sample_rate
)
{
if
(
src_format
->
sample_rate
==
dest_f
ormat
->
sample_rate
)
{
assert
(
dest_size
>=
len
);
assert
(
dest_size
>=
len
);
memcpy
(
outB
uffer
,
buf
,
len
);
memcpy
(
dest_b
uffer
,
buf
,
len
);
}
else
{
}
else
{
len
=
pcm_resample_16
(
outF
ormat
->
channels
,
len
=
pcm_resample_16
(
dest_f
ormat
->
channels
,
inF
ormat
->
sample_rate
,
buf
,
len
,
src_f
ormat
->
sample_rate
,
buf
,
len
,
outF
ormat
->
sample_rate
,
dest_f
ormat
->
sample_rate
,
(
int16_t
*
)
outBuffer
,
dest_buffer
,
dest_size
,
dest_size
,
&
convS
tate
->
resample
);
&
s
tate
->
resample
);
if
(
len
==
0
)
if
(
len
==
0
)
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -320,6 +320,24 @@ size_t pcm_convert(const struct audio_format *inFormat,
...
@@ -320,6 +320,24 @@ size_t pcm_convert(const struct audio_format *inFormat,
return
len
;
return
len
;
}
}
/* outFormat bits must be 16 and channels must be 1 or 2! */
size_t
pcm_convert
(
const
struct
audio_format
*
inFormat
,
const
char
*
src
,
size_t
src_size
,
const
struct
audio_format
*
outFormat
,
char
*
outBuffer
,
struct
pcm_convert_state
*
convState
)
{
switch
(
outFormat
->
bits
)
{
case
16
:
return
pcm_convert_16
(
inFormat
,
src
,
src_size
,
outFormat
,
(
int16_t
*
)
outBuffer
,
convState
);
default:
FATAL
(
"cannot convert to %u bit
\n
"
,
outFormat
->
bits
);
}
}
size_t
pcm_convert_size
(
const
struct
audio_format
*
inFormat
,
size_t
src_size
,
size_t
pcm_convert_size
(
const
struct
audio_format
*
inFormat
,
size_t
src_size
,
const
struct
audio_format
*
outFormat
)
const
struct
audio_format
*
outFormat
)
{
{
...
...
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