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
233783e2
Commit
233783e2
authored
Aug 20, 2012
by
Justin Ruggles
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vorbisenc: use float planar sample format
parent
11dcddb9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
9 additions
and
11 deletions
+9
-11
vorbisenc.c
libavcodec/vorbisenc.c
+9
-11
No files found.
libavcodec/vorbisenc.c
View file @
233783e2
...
...
@@ -963,10 +963,10 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc,
return
0
;
}
static
int
apply_window_and_mdct
(
vorbis_enc_context
*
venc
,
const
signed
short
*
audio
,
int
samples
)
static
int
apply_window_and_mdct
(
vorbis_enc_context
*
venc
,
float
**
audio
,
int
samples
)
{
int
i
,
j
,
channel
;
int
i
,
channel
;
const
float
*
win
=
venc
->
win
[
0
];
int
window_len
=
1
<<
(
venc
->
log2_blocksize
[
0
]
-
1
);
float
n
=
(
float
)(
1
<<
venc
->
log2_blocksize
[
0
])
/
4
.;
...
...
@@ -988,9 +988,8 @@ static int apply_window_and_mdct(vorbis_enc_context *venc, const signed short *a
if
(
samples
)
{
for
(
channel
=
0
;
channel
<
venc
->
channels
;
channel
++
)
{
float
*
offset
=
venc
->
samples
+
channel
*
window_len
*
2
+
window_len
;
j
=
channel
;
for
(
i
=
0
;
i
<
samples
;
i
++
,
j
+=
venc
->
channels
)
offset
[
i
]
=
audio
[
j
]
/
32768
.
/
n
*
win
[
window_len
-
i
-
1
];
for
(
i
=
0
;
i
<
samples
;
i
++
)
offset
[
i
]
=
audio
[
channel
][
i
]
/
n
*
win
[
window_len
-
i
-
1
];
}
}
else
{
for
(
channel
=
0
;
channel
<
venc
->
channels
;
channel
++
)
...
...
@@ -1005,9 +1004,8 @@ static int apply_window_and_mdct(vorbis_enc_context *venc, const signed short *a
if
(
samples
)
{
for
(
channel
=
0
;
channel
<
venc
->
channels
;
channel
++
)
{
float
*
offset
=
venc
->
saved
+
channel
*
window_len
;
j
=
channel
;
for
(
i
=
0
;
i
<
samples
;
i
++
,
j
+=
venc
->
channels
)
offset
[
i
]
=
audio
[
j
]
/
32768
.
/
n
*
win
[
i
];
for
(
i
=
0
;
i
<
samples
;
i
++
)
offset
[
i
]
=
audio
[
channel
][
i
]
/
n
*
win
[
i
];
}
venc
->
have_saved
=
1
;
}
else
{
...
...
@@ -1021,7 +1019,7 @@ static int vorbis_encode_frame(AVCodecContext *avccontext, AVPacket *avpkt,
const
AVFrame
*
frame
,
int
*
got_packet_ptr
)
{
vorbis_enc_context
*
venc
=
avccontext
->
priv_data
;
const
int16_t
*
audio
=
frame
?
(
const
int16_t
*
)
frame
->
data
[
0
]
:
NULL
;
float
**
audio
=
frame
?
(
float
**
)
frame
->
extended_data
:
NULL
;
int
samples
=
frame
?
frame
->
nb_samples
:
0
;
vorbis_enc_mode
*
mode
;
vorbis_enc_mapping
*
mapping
;
...
...
@@ -1216,7 +1214,7 @@ AVCodec ff_vorbis_encoder = {
.
encode2
=
vorbis_encode_frame
,
.
close
=
vorbis_encode_close
,
.
capabilities
=
CODEC_CAP_DELAY
|
CODEC_CAP_EXPERIMENTAL
,
.
sample_fmts
=
(
const
enum
AVSampleFormat
[]){
AV_SAMPLE_FMT_
S16
,
.
sample_fmts
=
(
const
enum
AVSampleFormat
[]){
AV_SAMPLE_FMT_
FLTP
,
AV_SAMPLE_FMT_NONE
},
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Vorbis"
),
};
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