Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
7a124138
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7a124138
编写于
12月 15, 2018
作者:
P
Paul B Mahol
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avcodec/g723_1dec: reindent after last commit
上级
62dbcb7d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
117 addition
and
117 deletion
+117
-117
libavcodec/g723_1dec.c
libavcodec/g723_1dec.c
+117
-117
未找到文件。
libavcodec/g723_1dec.c
浏览文件 @
7a124138
...
...
@@ -874,137 +874,137 @@ static int g723_1_decode_frame(AVCodecContext *avctx, void *data,
return
ret
;
for
(
int
ch
=
0
;
ch
<
avctx
->
channels
;
ch
++
)
{
G723_1_ChannelContext
*
p
=
&
s
->
ch
[
ch
];
int16_t
*
audio
=
p
->
audio
;
G723_1_ChannelContext
*
p
=
&
s
->
ch
[
ch
];
int16_t
*
audio
=
p
->
audio
;
if
(
unpack_bitstream
(
p
,
buf
,
buf_size
)
<
0
)
{
bad_frame
=
1
;
if
(
p
->
past_frame_type
==
ACTIVE_FRAME
)
p
->
cur_frame_type
=
ACTIVE_FRAME
;
else
p
->
cur_frame_type
=
UNTRANSMITTED_FRAME
;
}
if
(
unpack_bitstream
(
p
,
buf
,
buf_size
)
<
0
)
{
bad_frame
=
1
;
if
(
p
->
past_frame_type
==
ACTIVE_FRAME
)
p
->
cur_frame_type
=
ACTIVE_FRAME
;
else
p
->
cur_frame_type
=
UNTRANSMITTED_FRAME
;
}
out
=
(
int16_t
*
)
frame
->
extended_data
[
ch
];
out
=
(
int16_t
*
)
frame
->
extended_data
[
ch
];
if
(
p
->
cur_frame_type
==
ACTIVE_FRAME
)
{
if
(
!
bad_frame
)
p
->
erased_frames
=
0
;
else
if
(
p
->
erased_frames
!=
3
)
p
->
erased_frames
++
;
ff_g723_1_inverse_quant
(
cur_lsp
,
p
->
prev_lsp
,
p
->
lsp_index
,
bad_frame
);
ff_g723_1_lsp_interpolate
(
lpc
,
cur_lsp
,
p
->
prev_lsp
);
/* Save the lsp_vector for the next frame */
memcpy
(
p
->
prev_lsp
,
cur_lsp
,
LPC_ORDER
*
sizeof
(
*
p
->
prev_lsp
));
/* Generate the excitation for the frame */
memcpy
(
p
->
excitation
,
p
->
prev_excitation
,
PITCH_MAX
*
sizeof
(
*
p
->
excitation
));
if
(
!
p
->
erased_frames
)
{
int16_t
*
vector_ptr
=
p
->
excitation
+
PITCH_MAX
;
/* Update interpolation gain memory */
p
->
interp_gain
=
fixed_cb_gain
[(
p
->
subframe
[
2
].
amp_index
+
p
->
subframe
[
3
].
amp_index
)
>>
1
];
for
(
i
=
0
;
i
<
SUBFRAMES
;
i
++
)
{
gen_fcb_excitation
(
vector_ptr
,
&
p
->
subframe
[
i
],
p
->
cur_rate
,
p
->
pitch_lag
[
i
>>
1
],
i
);
ff_g723_1_gen_acb_excitation
(
acb_vector
,
&
p
->
excitation
[
SUBFRAME_LEN
*
i
],
p
->
pitch_lag
[
i
>>
1
],
&
p
->
subframe
[
i
],
p
->
cur_rate
);
/* Get the total excitation */
for
(
j
=
0
;
j
<
SUBFRAME_LEN
;
j
++
)
{
int
v
=
av_clip_int16
(
vector_ptr
[
j
]
*
2
);
vector_ptr
[
j
]
=
av_clip_int16
(
v
+
acb_vector
[
j
]);
}
vector_ptr
+=
SUBFRAME_LEN
;
}
if
(
p
->
cur_frame_type
==
ACTIVE_FRAME
)
{
if
(
!
bad_frame
)
p
->
erased_frames
=
0
;
else
if
(
p
->
erased_frames
!=
3
)
p
->
erased_frames
++
;
vector_ptr
=
p
->
excitation
+
PITCH_MAX
;
p
->
interp_index
=
comp_interp_index
(
p
,
p
->
pitch_lag
[
1
],
&
p
->
sid_gain
,
&
p
->
cur_gain
);
/* Perform pitch postfiltering */
if
(
s
->
postfilter
)
{
i
=
PITCH_MAX
;
for
(
j
=
0
;
j
<
SUBFRAMES
;
i
+=
SUBFRAME_LEN
,
j
++
)
comp_ppf_coeff
(
p
,
i
,
p
->
pitch_lag
[
j
>>
1
],
ppf
+
j
,
p
->
cur_rate
);
for
(
i
=
0
,
j
=
0
;
j
<
SUBFRAMES
;
i
+=
SUBFRAME_LEN
,
j
++
)
ff_acelp_weighted_vector_sum
(
p
->
audio
+
LPC_ORDER
+
i
,
vector_ptr
+
i
,
vector_ptr
+
i
+
ppf
[
j
].
index
,
ppf
[
j
].
sc_gain
,
ppf
[
j
].
opt_gain
,
1
<<
14
,
15
,
SUBFRAME_LEN
);
}
else
{
audio
=
vector_ptr
-
LPC_ORDER
;
}
ff_g723_1_inverse_quant
(
cur_lsp
,
p
->
prev_lsp
,
p
->
lsp_index
,
bad_frame
);
ff_g723_1_lsp_interpolate
(
lpc
,
cur_lsp
,
p
->
prev_lsp
);
/* Save the excitation for the next frame */
memcpy
(
p
->
prev_excitation
,
p
->
excitation
+
FRAME_LEN
,
/* Save the lsp_vector for the next frame */
memcpy
(
p
->
prev_lsp
,
cur_lsp
,
LPC_ORDER
*
sizeof
(
*
p
->
prev_lsp
));
/* Generate the excitation for the frame */
memcpy
(
p
->
excitation
,
p
->
prev_excitation
,
PITCH_MAX
*
sizeof
(
*
p
->
excitation
));
}
else
{
p
->
interp_gain
=
(
p
->
interp_gain
*
3
+
2
)
>>
2
;
if
(
p
->
erased_frames
==
3
)
{
/* Mute output */
memset
(
p
->
excitation
,
0
,
(
FRAME_LEN
+
PITCH_MAX
)
*
sizeof
(
*
p
->
excitation
));
memset
(
p
->
prev_excitation
,
0
,
PITCH_MAX
*
sizeof
(
*
p
->
excitation
));
memset
(
frame
->
data
[
0
],
0
,
(
FRAME_LEN
+
LPC_ORDER
)
*
sizeof
(
int16_t
));
}
else
{
int16_t
*
buf
=
p
->
audio
+
LPC_ORDER
;
if
(
!
p
->
erased_frames
)
{
int16_t
*
vector_ptr
=
p
->
excitation
+
PITCH_MAX
;
/* Update interpolation gain memory */
p
->
interp_gain
=
fixed_cb_gain
[(
p
->
subframe
[
2
].
amp_index
+
p
->
subframe
[
3
].
amp_index
)
>>
1
];
for
(
i
=
0
;
i
<
SUBFRAMES
;
i
++
)
{
gen_fcb_excitation
(
vector_ptr
,
&
p
->
subframe
[
i
],
p
->
cur_rate
,
p
->
pitch_lag
[
i
>>
1
],
i
);
ff_g723_1_gen_acb_excitation
(
acb_vector
,
&
p
->
excitation
[
SUBFRAME_LEN
*
i
],
p
->
pitch_lag
[
i
>>
1
],
&
p
->
subframe
[
i
],
p
->
cur_rate
);
/* Get the total excitation */
for
(
j
=
0
;
j
<
SUBFRAME_LEN
;
j
++
)
{
int
v
=
av_clip_int16
(
vector_ptr
[
j
]
*
2
);
vector_ptr
[
j
]
=
av_clip_int16
(
v
+
acb_vector
[
j
]);
}
vector_ptr
+=
SUBFRAME_LEN
;
}
/* Regenerate frame */
residual_interp
(
p
->
excitation
,
buf
,
p
->
interp_index
,
p
->
interp_gain
,
&
p
->
random_seed
);
vector_ptr
=
p
->
excitation
+
PITCH_MAX
;
p
->
interp_index
=
comp_interp_index
(
p
,
p
->
pitch_lag
[
1
],
&
p
->
sid_gain
,
&
p
->
cur_gain
);
/* Perform pitch postfiltering */
if
(
s
->
postfilter
)
{
i
=
PITCH_MAX
;
for
(
j
=
0
;
j
<
SUBFRAMES
;
i
+=
SUBFRAME_LEN
,
j
++
)
comp_ppf_coeff
(
p
,
i
,
p
->
pitch_lag
[
j
>>
1
],
ppf
+
j
,
p
->
cur_rate
);
for
(
i
=
0
,
j
=
0
;
j
<
SUBFRAMES
;
i
+=
SUBFRAME_LEN
,
j
++
)
ff_acelp_weighted_vector_sum
(
p
->
audio
+
LPC_ORDER
+
i
,
vector_ptr
+
i
,
vector_ptr
+
i
+
ppf
[
j
].
index
,
ppf
[
j
].
sc_gain
,
ppf
[
j
].
opt_gain
,
1
<<
14
,
15
,
SUBFRAME_LEN
);
}
else
{
audio
=
vector_ptr
-
LPC_ORDER
;
}
/* Save the excitation for the next frame */
memcpy
(
p
->
prev_excitation
,
buf
+
(
FRAME_LEN
-
PITCH_MAX
)
,
memcpy
(
p
->
prev_excitation
,
p
->
excitation
+
FRAME_LEN
,
PITCH_MAX
*
sizeof
(
*
p
->
excitation
));
}
else
{
p
->
interp_gain
=
(
p
->
interp_gain
*
3
+
2
)
>>
2
;
if
(
p
->
erased_frames
==
3
)
{
/* Mute output */
memset
(
p
->
excitation
,
0
,
(
FRAME_LEN
+
PITCH_MAX
)
*
sizeof
(
*
p
->
excitation
));
memset
(
p
->
prev_excitation
,
0
,
PITCH_MAX
*
sizeof
(
*
p
->
excitation
));
memset
(
frame
->
data
[
0
],
0
,
(
FRAME_LEN
+
LPC_ORDER
)
*
sizeof
(
int16_t
));
}
else
{
int16_t
*
buf
=
p
->
audio
+
LPC_ORDER
;
/* Regenerate frame */
residual_interp
(
p
->
excitation
,
buf
,
p
->
interp_index
,
p
->
interp_gain
,
&
p
->
random_seed
);
/* Save the excitation for the next frame */
memcpy
(
p
->
prev_excitation
,
buf
+
(
FRAME_LEN
-
PITCH_MAX
),
PITCH_MAX
*
sizeof
(
*
p
->
excitation
));
}
}
p
->
cng_random_seed
=
CNG_RANDOM_SEED
;
}
else
{
if
(
p
->
cur_frame_type
==
SID_FRAME
)
{
p
->
sid_gain
=
sid_gain_to_lsp_index
(
p
->
subframe
[
0
].
amp_index
);
ff_g723_1_inverse_quant
(
p
->
sid_lsp
,
p
->
prev_lsp
,
p
->
lsp_index
,
0
);
}
else
if
(
p
->
past_frame_type
==
ACTIVE_FRAME
)
{
p
->
sid_gain
=
estimate_sid_gain
(
p
);
}
}
p
->
cng_random_seed
=
CNG_RANDOM_SEED
;
}
else
{
if
(
p
->
cur_frame_type
==
SID_FRAME
)
{
p
->
sid_gain
=
sid_gain_to_lsp_index
(
p
->
subframe
[
0
].
amp_index
);
ff_g723_1_inverse_quant
(
p
->
sid_lsp
,
p
->
prev_lsp
,
p
->
lsp_index
,
0
);
}
else
if
(
p
->
past_frame_type
==
ACTIVE_FRAME
)
{
p
->
sid_gain
=
estimate_sid_gain
(
p
);
}
if
(
p
->
past_frame_type
==
ACTIVE_FRAME
)
p
->
cur_gain
=
p
->
sid_gain
;
else
p
->
cur_gain
=
(
p
->
cur_gain
*
7
+
p
->
sid_gain
)
>>
3
;
generate_noise
(
p
);
ff_g723_1_lsp_interpolate
(
lpc
,
p
->
sid_lsp
,
p
->
prev_lsp
);
/* Save the lsp_vector for the next frame */
memcpy
(
p
->
prev_lsp
,
p
->
sid_lsp
,
LPC_ORDER
*
sizeof
(
*
p
->
prev_lsp
));
}
if
(
p
->
past_frame_type
==
ACTIVE_FRAME
)
p
->
cur_gain
=
p
->
sid_gain
;
else
p
->
cur_gain
=
(
p
->
cur_gain
*
7
+
p
->
sid_gain
)
>>
3
;
generate_noise
(
p
);
ff_g723_1_lsp_interpolate
(
lpc
,
p
->
sid_lsp
,
p
->
prev_lsp
);
/* Save the lsp_vector for the next frame */
memcpy
(
p
->
prev_lsp
,
p
->
sid_lsp
,
LPC_ORDER
*
sizeof
(
*
p
->
prev_lsp
));
}
p
->
past_frame_type
=
p
->
cur_frame_type
;
p
->
past_frame_type
=
p
->
cur_frame_type
;
memcpy
(
p
->
audio
,
p
->
synth_mem
,
LPC_ORDER
*
sizeof
(
*
p
->
audio
));
for
(
i
=
LPC_ORDER
,
j
=
0
;
j
<
SUBFRAMES
;
i
+=
SUBFRAME_LEN
,
j
++
)
ff_celp_lp_synthesis_filter
(
p
->
audio
+
i
,
&
lpc
[
j
*
LPC_ORDER
],
audio
+
i
,
SUBFRAME_LEN
,
LPC_ORDER
,
0
,
1
,
1
<<
12
);
memcpy
(
p
->
synth_mem
,
p
->
audio
+
FRAME_LEN
,
LPC_ORDER
*
sizeof
(
*
p
->
audio
));
memcpy
(
p
->
audio
,
p
->
synth_mem
,
LPC_ORDER
*
sizeof
(
*
p
->
audio
));
for
(
i
=
LPC_ORDER
,
j
=
0
;
j
<
SUBFRAMES
;
i
+=
SUBFRAME_LEN
,
j
++
)
ff_celp_lp_synthesis_filter
(
p
->
audio
+
i
,
&
lpc
[
j
*
LPC_ORDER
],
audio
+
i
,
SUBFRAME_LEN
,
LPC_ORDER
,
0
,
1
,
1
<<
12
);
memcpy
(
p
->
synth_mem
,
p
->
audio
+
FRAME_LEN
,
LPC_ORDER
*
sizeof
(
*
p
->
audio
));
if
(
s
->
postfilter
)
{
formant_postfilter
(
p
,
lpc
,
p
->
audio
,
out
);
}
else
{
// if output is not postfiltered it should be scaled by 2
for
(
i
=
0
;
i
<
FRAME_LEN
;
i
++
)
out
[
i
]
=
av_clip_int16
(
p
->
audio
[
LPC_ORDER
+
i
]
<<
1
);
}
if
(
s
->
postfilter
)
{
formant_postfilter
(
p
,
lpc
,
p
->
audio
,
out
);
}
else
{
// if output is not postfiltered it should be scaled by 2
for
(
i
=
0
;
i
<
FRAME_LEN
;
i
++
)
out
[
i
]
=
av_clip_int16
(
p
->
audio
[
LPC_ORDER
+
i
]
<<
1
);
}
}
*
got_frame_ptr
=
1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录