Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
c39bddd3
Commit
c39bddd3
authored
Oct 09, 2011
by
Justin Ruggles
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
alacdec: move appending of extra_bits to a separate function.
This should also fix decoding of mono 24-bit.
parent
e739d351
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
9 deletions
+16
-9
alac.c
libavcodec/alac.c
+16
-9
No files found.
libavcodec/alac.c
View file @
c39bddd3
...
...
@@ -319,6 +319,17 @@ static void decorrelate_stereo(int32_t *buffer[MAX_CHANNELS],
}
}
static
void
append_extra_bits
(
int32_t
*
buffer
[
MAX_CHANNELS
],
int32_t
*
extra_bits_buffer
[
MAX_CHANNELS
],
int
extra_bits
,
int
numchannels
,
int
numsamples
)
{
int
i
,
ch
;
for
(
ch
=
0
;
ch
<
numchannels
;
ch
++
)
for
(
i
=
0
;
i
<
numsamples
;
i
++
)
buffer
[
ch
][
i
]
=
(
buffer
[
ch
][
i
]
<<
extra_bits
)
|
extra_bits_buffer
[
ch
][
i
];
}
static
void
reconstruct_stereo_16
(
int32_t
*
buffer
[
MAX_CHANNELS
],
int16_t
*
buffer_out
,
int
numchannels
,
int
numsamples
)
...
...
@@ -338,8 +349,6 @@ static void reconstruct_stereo_16(int32_t *buffer[MAX_CHANNELS],
static
void
decorrelate_stereo_24
(
int32_t
*
buffer
[
MAX_CHANNELS
],
int32_t
*
buffer_out
,
int32_t
*
extra_bits_buffer
[
MAX_CHANNELS
],
int
extra_bits
,
int
numchannels
,
int
numsamples
)
{
int
i
;
...
...
@@ -350,11 +359,6 @@ static void decorrelate_stereo_24(int32_t *buffer[MAX_CHANNELS],
left
=
buffer
[
0
][
i
];
right
=
buffer
[
1
][
i
];
if
(
extra_bits
)
{
left
=
(
left
<<
extra_bits
)
|
extra_bits_buffer
[
0
][
i
];
right
=
(
right
<<
extra_bits
)
|
extra_bits_buffer
[
1
][
i
];
}
buffer_out
[
i
*
numchannels
]
=
left
<<
8
;
buffer_out
[
i
*
numchannels
+
1
]
=
right
<<
8
;
}
...
...
@@ -522,6 +526,11 @@ static int alac_decode_frame(AVCodecContext *avctx,
interlacing_leftweight
);
}
if
(
alac
->
extra_bits
)
{
append_extra_bits
(
alac
->
outputsamples_buffer
,
alac
->
extra_bits_buffer
,
alac
->
extra_bits
,
alac
->
numchannels
,
outputsamples
);
}
switch
(
alac
->
setinfo_sample_size
)
{
case
16
:
if
(
channels
==
2
)
{
...
...
@@ -540,8 +549,6 @@ static int alac_decode_frame(AVCodecContext *avctx,
if
(
channels
==
2
)
{
decorrelate_stereo_24
(
alac
->
outputsamples_buffer
,
outbuffer
,
alac
->
extra_bits_buffer
,
alac
->
extra_bits
,
alac
->
numchannels
,
outputsamples
);
}
else
{
...
...
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