Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
84d098d9
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,发现更多精彩内容 >>
提交
84d098d9
编写于
7月 05, 2011
作者:
M
Matthew Hoops
提交者:
Ronald S. Bultje
7月 09, 2011
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
segafilm: add support for videos with cri adx adpcm
Signed-off-by:
N
Ronald S. Bultje
<
rsbultje@gmail.com
>
上级
99fecc64
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
7 deletion
+21
-7
libavformat/segafilm.c
libavformat/segafilm.c
+21
-7
未找到文件。
libavformat/segafilm.c
浏览文件 @
84d098d9
...
...
@@ -111,7 +111,9 @@ static int film_read_header(AVFormatContext *s,
film
->
audio_samplerate
=
AV_RB16
(
&
scratch
[
24
]);
film
->
audio_channels
=
scratch
[
21
];
film
->
audio_bits
=
scratch
[
22
];
if
(
film
->
audio_bits
==
8
)
if
(
scratch
[
23
]
==
2
)
film
->
audio_type
=
CODEC_ID_ADPCM_ADX
;
else
if
(
film
->
audio_bits
==
8
)
film
->
audio_type
=
CODEC_ID_PCM_S8
;
else
if
(
film
->
audio_bits
==
16
)
film
->
audio_type
=
CODEC_ID_PCM_S16BE
;
...
...
@@ -149,12 +151,19 @@ static int film_read_header(AVFormatContext *s,
st
->
codec
->
codec_id
=
film
->
audio_type
;
st
->
codec
->
codec_tag
=
1
;
st
->
codec
->
channels
=
film
->
audio_channels
;
st
->
codec
->
bits_per_coded_sample
=
film
->
audio_bits
;
st
->
codec
->
sample_rate
=
film
->
audio_samplerate
;
if
(
film
->
audio_type
==
CODEC_ID_ADPCM_ADX
)
{
st
->
codec
->
bits_per_coded_sample
=
18
*
8
/
32
;
st
->
codec
->
block_align
=
st
->
codec
->
channels
*
18
;
}
else
{
st
->
codec
->
bits_per_coded_sample
=
film
->
audio_bits
;
st
->
codec
->
block_align
=
st
->
codec
->
channels
*
st
->
codec
->
bits_per_coded_sample
/
8
;
}
st
->
codec
->
bit_rate
=
st
->
codec
->
channels
*
st
->
codec
->
sample_rate
*
st
->
codec
->
bits_per_coded_sample
;
st
->
codec
->
block_align
=
st
->
codec
->
channels
*
st
->
codec
->
bits_per_coded_sample
/
8
;
}
/* load the sample table */
...
...
@@ -187,8 +196,12 @@ static int film_read_header(AVFormatContext *s,
film
->
sample_table
[
i
].
pts
*=
film
->
base_clock
;
film
->
sample_table
[
i
].
pts
/=
film
->
audio_samplerate
;
audio_frame_counter
+=
(
film
->
sample_table
[
i
].
sample_size
/
(
film
->
audio_channels
*
film
->
audio_bits
/
8
));
if
(
film
->
audio_type
==
CODEC_ID_ADPCM_ADX
)
audio_frame_counter
+=
(
film
->
sample_table
[
i
].
sample_size
*
32
/
(
18
*
film
->
audio_channels
));
else
audio_frame_counter
+=
(
film
->
sample_table
[
i
].
sample_size
/
(
film
->
audio_channels
*
film
->
audio_bits
/
8
));
}
else
{
film
->
sample_table
[
i
].
stream
=
film
->
video_stream_index
;
film
->
sample_table
[
i
].
pts
=
AV_RB32
(
&
scratch
[
8
])
&
0x7FFFFFFF
;
...
...
@@ -227,7 +240,8 @@ static int film_read_packet(AVFormatContext *s,
return
AVERROR
(
ENOMEM
);
avio_read
(
pb
,
pkt
->
data
,
sample
->
sample_size
);
}
else
if
((
sample
->
stream
==
film
->
audio_stream_index
)
&&
(
film
->
audio_channels
==
2
))
{
(
film
->
audio_channels
==
2
)
&&
(
film
->
audio_type
!=
CODEC_ID_ADPCM_ADX
))
{
/* stereo PCM needs to be interleaved */
if
(
av_new_packet
(
pkt
,
sample
->
sample_size
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录