Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
0b5af5cf
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,发现更多精彩内容 >>
提交
0b5af5cf
编写于
8月 22, 2013
作者:
L
Luca Barbato
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mov: Refactor multiple stsd skipping in mov_mov_skip_multiple_stsd
上级
08504380
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
15 deletion
+26
-15
libavformat/mov.c
libavformat/mov.c
+26
-15
未找到文件。
libavformat/mov.c
浏览文件 @
0b5af5cf
...
...
@@ -1370,6 +1370,29 @@ static int mov_finalize_stsd_codec(MOVContext *c, AVIOContext *pb,
return
0
;
}
static
int
mov_skip_multiple_stsd
(
MOVContext
*
c
,
AVIOContext
*
pb
,
int
codec_tag
,
int
format
,
int
size
)
{
int
video_codec_id
=
ff_codec_get_id
(
ff_codec_movvideo_tags
,
format
);
if
(
codec_tag
&&
(
codec_tag
==
AV_RL32
(
"avc1"
)
||
(
codec_tag
!=
format
&&
(
c
->
fc
->
video_codec_id
?
video_codec_id
!=
c
->
fc
->
video_codec_id
:
codec_tag
!=
MKTAG
(
'j'
,
'p'
,
'e'
,
'g'
)))))
{
/* Multiple fourcc, we skip JPEG. This is not correct, we should
* export it as a separate AVStream but this needs a few changes
* in the MOV demuxer, patch welcome. */
av_log
(
c
->
fc
,
AV_LOG_WARNING
,
"multiple fourcc not supported
\n
"
);
avio_skip
(
pb
,
size
);
return
1
;
}
return
0
;
}
int
ff_mov_read_stsd_entries
(
MOVContext
*
c
,
AVIOContext
*
pb
,
int
entries
)
{
AVStream
*
st
;
...
...
@@ -1401,22 +1424,10 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
return
AVERROR_INVALIDDATA
;
}
if
(
st
->
codec
->
codec_tag
&&
st
->
codec
->
codec_tag
!=
format
&&
(
c
->
fc
->
video_codec_id
?
ff_codec_get_id
(
ff_codec_movvideo_tags
,
format
)
!=
c
->
fc
->
video_codec_id
:
st
->
codec
->
codec_tag
!=
MKTAG
(
'j'
,
'p'
,
'e'
,
'g'
))
){
/* Multiple fourcc, we skip JPEG. This is not correct, we should
* export it as a separate AVStream but this needs a few changes
* in the MOV demuxer, patch welcome. */
multiple_stsd:
av_log
(
c
->
fc
,
AV_LOG_WARNING
,
"multiple fourcc not supported
\n
"
);
avio_skip
(
pb
,
size
-
(
avio_tell
(
pb
)
-
start_pos
));
if
(
mov_skip_multiple_stsd
(
c
,
pb
,
st
->
codec
->
codec_tag
,
format
,
size
-
(
avio_tell
(
pb
)
-
start_pos
)))
continue
;
}
/* we cannot demux concatenated h264 streams because of different extradata */
if
(
st
->
codec
->
codec_tag
&&
st
->
codec
->
codec_tag
==
AV_RL32
(
"avc1"
))
goto
multiple_stsd
;
sc
->
pseudo_stream_id
=
st
->
codec
->
codec_tag
?
-
1
:
pseudo_stream_id
;
sc
->
dref_id
=
dref_id
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录