Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
f24cc1b2
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,发现更多精彩内容 >>
提交
f24cc1b2
编写于
8月 21, 2012
作者:
J
Justin Ruggles
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
alacenc: use s16p sample format as input
上级
358078d9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
13 deletion
+12
-13
libavcodec/alacenc.c
libavcodec/alacenc.c
+12
-13
未找到文件。
libavcodec/alacenc.c
浏览文件 @
f24cc1b2
...
...
@@ -78,17 +78,15 @@ typedef struct AlacEncodeContext {
}
AlacEncodeContext
;
static
void
init_sample_buffers
(
AlacEncodeContext
*
s
,
const
int16_t
*
input_samples
)
static
void
init_sample_buffers
(
AlacEncodeContext
*
s
,
int16_t
**
input_samples
)
{
int
ch
,
i
;
for
(
ch
=
0
;
ch
<
s
->
avctx
->
channels
;
ch
++
)
{
const
int16_t
*
sptr
=
input_samples
+
ch
;
for
(
i
=
0
;
i
<
s
->
frame_size
;
i
++
)
{
s
->
sample_buf
[
ch
][
i
]
=
*
sptr
;
sptr
+=
s
->
avctx
->
channels
;
}
int32_t
*
bptr
=
s
->
sample_buf
[
ch
];
const
int16_t
*
sptr
=
input_samples
[
ch
];
for
(
i
=
0
;
i
<
s
->
frame_size
;
i
++
)
bptr
[
i
]
=
sptr
[
i
];
}
}
...
...
@@ -347,8 +345,7 @@ static void alac_entropy_coder(AlacEncodeContext *s)
}
}
static
int
write_frame
(
AlacEncodeContext
*
s
,
AVPacket
*
avpkt
,
const
int16_t
*
samples
)
static
int
write_frame
(
AlacEncodeContext
*
s
,
AVPacket
*
avpkt
,
int16_t
**
samples
)
{
int
i
,
j
;
int
prediction_type
=
0
;
...
...
@@ -358,8 +355,10 @@ static int write_frame(AlacEncodeContext *s, AVPacket *avpkt,
if
(
s
->
verbatim
)
{
write_frame_header
(
s
);
for
(
i
=
0
;
i
<
s
->
frame_size
*
s
->
avctx
->
channels
;
i
++
)
put_sbits
(
pb
,
16
,
*
samples
++
);
/* samples are channel-interleaved in verbatim mode */
for
(
i
=
0
;
i
<
s
->
frame_size
;
i
++
)
for
(
j
=
0
;
j
<
s
->
avctx
->
channels
;
j
++
)
put_sbits
(
pb
,
16
,
samples
[
j
][
i
]);
}
else
{
init_sample_buffers
(
s
,
samples
);
write_frame_header
(
s
);
...
...
@@ -537,7 +536,7 @@ static int alac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
{
AlacEncodeContext
*
s
=
avctx
->
priv_data
;
int
out_bytes
,
max_frame_size
,
ret
;
const
int16_t
*
samples
=
(
const
int16_t
*
)
frame
->
data
[
0
]
;
int16_t
**
samples
=
(
int16_t
**
)
frame
->
extended_data
;
s
->
frame_size
=
frame
->
nb_samples
;
...
...
@@ -577,7 +576,7 @@ AVCodec ff_alac_encoder = {
.
encode2
=
alac_encode_frame
,
.
close
=
alac_encode_close
,
.
capabilities
=
CODEC_CAP_SMALL_LAST_FRAME
,
.
sample_fmts
=
(
const
enum
AVSampleFormat
[]){
AV_SAMPLE_FMT_S16
,
.
sample_fmts
=
(
const
enum
AVSampleFormat
[]){
AV_SAMPLE_FMT_S16
P
,
AV_SAMPLE_FMT_NONE
},
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"ALAC (Apple Lossless Audio Codec)"
),
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录