Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
1e5f5e3b
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,发现更多精彩内容 >>
提交
1e5f5e3b
编写于
3月 03, 2007
作者:
B
Baptiste Coudurier
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use common tables for mov muxer and demuxer
Originally committed as revision 8205 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
25f5f17f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
114 addition
and
147 deletion
+114
-147
libavformat/isom.c
libavformat/isom.c
+110
-0
libavformat/isom.h
libavformat/isom.h
+2
-0
libavformat/mov.c
libavformat/mov.c
+2
-112
libavformat/movenc.c
libavformat/movenc.c
+0
-35
未找到文件。
libavformat/isom.c
浏览文件 @
1e5f5e3b
...
...
@@ -55,6 +55,116 @@ const AVCodecTag ff_mov_obj_type[] = {
{
0
,
0
},
};
const
AVCodecTag
codec_movvideo_tags
[]
=
{
/* { CODEC_ID_, MKTAG('I', 'V', '5', '0') }, *//* Indeo 5.0 */
{
CODEC_ID_RAWVIDEO
,
MKTAG
(
'r'
,
'a'
,
'w'
,
' '
)
},
/* Uncompressed RGB */
/* { CODEC_ID_RAWVIDEO, MKTAG('Y', 'u', 'v', '2') }, *//* Uncompressed YUV422 */
{
CODEC_ID_RAWVIDEO
,
MKTAG
(
'A'
,
'V'
,
'U'
,
'I'
)
},
/* YUV with alpha-channel (AVID Uncompressed) */
{
CODEC_ID_RAWVIDEO
,
MKTAG
(
'2'
,
'v'
,
'u'
,
'y'
)
},
/* UNCOMPRESSED 8BIT 4:2:2 */
{
CODEC_ID_MJPEG
,
MKTAG
(
'j'
,
'p'
,
'e'
,
'g'
)
},
/* PhotoJPEG */
{
CODEC_ID_MJPEG
,
MKTAG
(
'm'
,
'j'
,
'p'
,
'a'
)
},
/* Motion-JPEG (format A) */
{
CODEC_ID_MJPEG
,
MKTAG
(
'A'
,
'V'
,
'D'
,
'J'
)
},
/* MJPEG with alpha-channel (AVID JFIF meridien compressed) */
/* { CODEC_ID_MJPEG, MKTAG('A', 'V', 'R', 'n') }, *//* MJPEG with alpha-channel (AVID ABVB/Truevision NuVista) */
{
CODEC_ID_MJPEGB
,
MKTAG
(
'm'
,
'j'
,
'p'
,
'b'
)
},
/* Motion-JPEG (format B) */
{
CODEC_ID_SVQ1
,
MKTAG
(
'S'
,
'V'
,
'Q'
,
'1'
)
},
/* Sorenson Video v1 */
{
CODEC_ID_SVQ1
,
MKTAG
(
's'
,
'v'
,
'q'
,
'1'
)
},
/* Sorenson Video v1 */
{
CODEC_ID_SVQ1
,
MKTAG
(
's'
,
'v'
,
'q'
,
'i'
)
},
/* Sorenson Video v1 (from QT specs)*/
{
CODEC_ID_SVQ3
,
MKTAG
(
'S'
,
'V'
,
'Q'
,
'3'
)
},
/* Sorenson Video v3 */
{
CODEC_ID_MPEG4
,
MKTAG
(
'm'
,
'p'
,
'4'
,
'v'
)
},
{
CODEC_ID_MPEG4
,
MKTAG
(
'D'
,
'I'
,
'V'
,
'X'
)
},
/* OpenDiVX *//* sample files at http://heroinewarrior.com/xmovie.php3 use this tag */
{
CODEC_ID_MPEG4
,
MKTAG
(
'X'
,
'V'
,
'I'
,
'D'
)
},
{
CODEC_ID_MPEG4
,
MKTAG
(
'3'
,
'I'
,
'V'
,
'2'
)
},
/* experimental: 3IVX files before ivx D4 4.5.1 */
{
CODEC_ID_H263
,
MKTAG
(
'h'
,
'2'
,
'6'
,
'3'
)
},
/* H263 */
{
CODEC_ID_H263
,
MKTAG
(
's'
,
'2'
,
'6'
,
'3'
)
},
/* H263 ?? works */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
'p'
)
},
/* DV PAL */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
' '
)
},
/* DV NTSC */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'p'
,
'p'
)
},
/* DVCPRO PAL produced by FCP */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'5'
,
'p'
)
},
/* DVCPRO50 PAL produced by FCP */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'5'
,
'n'
)
},
/* DVCPRO50 NTSC produced by FCP */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'A'
,
'V'
,
'd'
,
'v'
)
},
/* AVID DV */
//{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '5') }, /* DVCPRO HD 50i produced by FCP */
//{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '6') }, /* DVCPRO HD 60i produced by FCP */
{
CODEC_ID_VP3
,
MKTAG
(
'V'
,
'P'
,
'3'
,
'1'
)
},
/* On2 VP3 */
{
CODEC_ID_RPZA
,
MKTAG
(
'r'
,
'p'
,
'z'
,
'a'
)
},
/* Apple Video (RPZA) */
{
CODEC_ID_CINEPAK
,
MKTAG
(
'c'
,
'v'
,
'i'
,
'd'
)
},
/* Cinepak */
{
CODEC_ID_8BPS
,
MKTAG
(
'8'
,
'B'
,
'P'
,
'S'
)
},
/* Planar RGB (8BPS) */
{
CODEC_ID_SMC
,
MKTAG
(
's'
,
'm'
,
'c'
,
' '
)
},
/* Apple Graphics (SMC) */
{
CODEC_ID_QTRLE
,
MKTAG
(
'r'
,
'l'
,
'e'
,
' '
)
},
/* Apple Animation (RLE) */
{
CODEC_ID_MSRLE
,
MKTAG
(
'W'
,
'R'
,
'L'
,
'E'
)
},
{
CODEC_ID_QDRAW
,
MKTAG
(
'q'
,
'd'
,
'r'
,
'w'
)
},
/* QuickDraw */
{
CODEC_ID_H264
,
MKTAG
(
'a'
,
'v'
,
'c'
,
'1'
)
},
/* AVC-1/H.264 */
{
CODEC_ID_MPEG1VIDEO
,
MKTAG
(
'm'
,
'p'
,
'e'
,
'g'
)
},
/* MPEG */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'h'
,
'd'
,
'v'
,
'2'
)
},
/* MPEG2 produced by Sony HD camera */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'h'
,
'd'
,
'v'
,
'3'
)
},
/* HDV produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'5'
,
'n'
)
},
/* MPEG2 IMX NTSC 525/60 50mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'5'
,
'p'
)
},
/* MPEG2 IMX PAL 625/50 50mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'3'
,
'n'
)
},
/* MPEG2 IMX NTSC 525/60 30mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'3'
,
'p'
)
},
/* MPEG2 IMX PAL 625/50 30mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'A'
,
'V'
,
'm'
,
'p'
)
},
/* AVID IMX PAL */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'A'
,
'V'
,
'm'
,
'n'
)
},
/* AVID IMX NTSC */
//{ CODEC_ID_JPEG2000, MKTAG('m', 'j', 'p', '2') }, /* JPEG 2000 produced by FCP */
{
CODEC_ID_TARGA
,
MKTAG
(
't'
,
'g'
,
'a'
,
' '
)
},
/* Truevision Targa */
{
CODEC_ID_TIFF
,
MKTAG
(
't'
,
'i'
,
'f'
,
'f'
)
},
/* TIFF embedded in MOV */
{
CODEC_ID_GIF
,
MKTAG
(
'g'
,
'i'
,
'f'
,
' '
)
},
/* embedded gif files as frames (usually one "click to play movie" frame) */
{
CODEC_ID_PNG
,
MKTAG
(
'p'
,
'n'
,
'g'
,
' '
)
},
{
CODEC_ID_VC1
,
MKTAG
(
'v'
,
'c'
,
'-'
,
'1'
)
},
/* SMPTE RP 2025 */
{
CODEC_ID_NONE
,
0
},
};
const
AVCodecTag
codec_movaudio_tags
[]
=
{
{
CODEC_ID_PCM_S32BE
,
MKTAG
(
'i'
,
'n'
,
'3'
,
'2'
)
},
{
CODEC_ID_PCM_S32LE
,
MKTAG
(
'i'
,
'n'
,
'3'
,
'2'
)
},
{
CODEC_ID_PCM_S24BE
,
MKTAG
(
'i'
,
'n'
,
'2'
,
'4'
)
},
{
CODEC_ID_PCM_S24LE
,
MKTAG
(
'i'
,
'n'
,
'2'
,
'4'
)
},
{
CODEC_ID_PCM_S16BE
,
MKTAG
(
't'
,
'w'
,
'o'
,
's'
)
},
/* 16 bits */
{
CODEC_ID_PCM_S16BE
,
MKTAG
(
'N'
,
'O'
,
'N'
,
'E'
)
},
/* uncompressed */
{
CODEC_ID_PCM_S16LE
,
MKTAG
(
's'
,
'o'
,
'w'
,
't'
)
},
/* */
{
CODEC_ID_PCM_S16LE
,
MKTAG
(
'l'
,
'p'
,
'c'
,
'm'
)
},
{
CODEC_ID_PCM_U8
,
MKTAG
(
'r'
,
'a'
,
'w'
,
' '
)
},
/* 8 bits unsigned */
{
CODEC_ID_PCM_MULAW
,
MKTAG
(
'u'
,
'l'
,
'a'
,
'w'
)
},
/* */
{
CODEC_ID_PCM_ALAW
,
MKTAG
(
'a'
,
'l'
,
'a'
,
'w'
)
},
/* */
{
CODEC_ID_ADPCM_IMA_QT
,
MKTAG
(
'i'
,
'm'
,
'a'
,
'4'
)
},
/* IMA-4 ADPCM */
{
CODEC_ID_ADPCM_MS
,
MKTAG
(
'm'
,
's'
,
0x00
,
0x02
)
},
/* MS ADPCM */
{
CODEC_ID_MACE3
,
MKTAG
(
'M'
,
'A'
,
'C'
,
'3'
)
},
/* Macintosh Audio Compression and Expansion 3:1 */
{
CODEC_ID_MACE6
,
MKTAG
(
'M'
,
'A'
,
'C'
,
'6'
)
},
/* Macintosh Audio Compression and Expansion 6:1 */
{
CODEC_ID_MP3
,
MKTAG
(
'.'
,
'm'
,
'p'
,
'3'
)
},
/* MPEG layer 3 */
/* sample files at http://www.3ivx.com/showcase.html use this tag */
{
CODEC_ID_MP2
,
0x6D730055
},
/* MPEG layer 3 */
{
CODEC_ID_MP2
,
0x5500736D
},
/* MPEG layer 3 *//* XXX: check endianness */
/* { CODEC_ID_OGG_VORBIS, MKTAG('O', 'g', 'g', 'S') }, *//* sample files at http://heroinewarrior.com/xmovie.php3 use this tag */
{
CODEC_ID_AAC
,
MKTAG
(
'm'
,
'p'
,
'4'
,
'a'
)
},
/* MPEG-4 AAC */
{
CODEC_ID_AMR_NB
,
MKTAG
(
's'
,
'a'
,
'm'
,
'r'
)
},
/* AMR-NB 3gp */
{
CODEC_ID_AMR_WB
,
MKTAG
(
's'
,
'a'
,
'w'
,
'b'
)
},
/* AMR-WB 3gp */
{
CODEC_ID_AC3
,
MKTAG
(
'm'
,
's'
,
0x20
,
0x00
)
},
/* Dolby AC-3 */
{
CODEC_ID_ALAC
,
MKTAG
(
'a'
,
'l'
,
'a'
,
'c'
)
},
/* Apple Lossless */
{
CODEC_ID_QDM2
,
MKTAG
(
'Q'
,
'D'
,
'M'
,
'2'
)
},
/* QDM2 */
{
CODEC_ID_DVAUDIO
,
MKTAG
(
'v'
,
'd'
,
'v'
,
'a'
)
},
{
CODEC_ID_DVAUDIO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
'a'
)
},
{
CODEC_ID_NONE
,
0
},
};
/* map numeric codes from mdhd atom to ISO 639 */
/* cf. QTFileFormat.pdf p253, qtff.pdf p205 */
/* http://developer.apple.com/documentation/mac/Text/Text-368.html */
...
...
libavformat/isom.h
浏览文件 @
1e5f5e3b
...
...
@@ -26,6 +26,8 @@
/* isom.c */
extern
const
AVCodecTag
ff_mov_obj_type
[];
extern
const
AVCodecTag
codec_movvideo_tags
[];
extern
const
AVCodecTag
codec_movaudio_tags
[];
int
ff_mov_iso639_to_lang
(
const
char
*
lang
,
int
mp4
);
int
ff_mov_lang_to_iso639
(
int
code
,
char
*
to
);
...
...
libavformat/mov.c
浏览文件 @
1e5f5e3b
...
...
@@ -66,116 +66,6 @@
#undef NDEBUG
#include <assert.h>
static
const
AVCodecTag
mov_video_tags
[]
=
{
/* { CODEC_ID_, MKTAG('I', 'V', '5', '0') }, *//* Indeo 5.0 */
{
CODEC_ID_RAWVIDEO
,
MKTAG
(
'r'
,
'a'
,
'w'
,
' '
)
},
/* Uncompressed RGB */
/* { CODEC_ID_RAWVIDEO, MKTAG('Y', 'u', 'v', '2') }, *//* Uncompressed YUV422 */
{
CODEC_ID_RAWVIDEO
,
MKTAG
(
'A'
,
'V'
,
'U'
,
'I'
)
},
/* YUV with alpha-channel (AVID Uncompressed) */
{
CODEC_ID_RAWVIDEO
,
MKTAG
(
'2'
,
'v'
,
'u'
,
'y'
)
},
/* UNCOMPRESSED 8BIT 4:2:2 */
{
CODEC_ID_MJPEG
,
MKTAG
(
'j'
,
'p'
,
'e'
,
'g'
)
},
/* PhotoJPEG */
{
CODEC_ID_MJPEG
,
MKTAG
(
'm'
,
'j'
,
'p'
,
'a'
)
},
/* Motion-JPEG (format A) */
{
CODEC_ID_MJPEG
,
MKTAG
(
'A'
,
'V'
,
'D'
,
'J'
)
},
/* MJPEG with alpha-channel (AVID JFIF meridien compressed) */
/* { CODEC_ID_MJPEG, MKTAG('A', 'V', 'R', 'n') }, *//* MJPEG with alpha-channel (AVID ABVB/Truevision NuVista) */
{
CODEC_ID_MJPEGB
,
MKTAG
(
'm'
,
'j'
,
'p'
,
'b'
)
},
/* Motion-JPEG (format B) */
{
CODEC_ID_SVQ1
,
MKTAG
(
'S'
,
'V'
,
'Q'
,
'1'
)
},
/* Sorenson Video v1 */
{
CODEC_ID_SVQ1
,
MKTAG
(
's'
,
'v'
,
'q'
,
'1'
)
},
/* Sorenson Video v1 */
{
CODEC_ID_SVQ1
,
MKTAG
(
's'
,
'v'
,
'q'
,
'i'
)
},
/* Sorenson Video v1 (from QT specs)*/
{
CODEC_ID_SVQ3
,
MKTAG
(
'S'
,
'V'
,
'Q'
,
'3'
)
},
/* Sorenson Video v3 */
{
CODEC_ID_MPEG4
,
MKTAG
(
'm'
,
'p'
,
'4'
,
'v'
)
},
{
CODEC_ID_MPEG4
,
MKTAG
(
'D'
,
'I'
,
'V'
,
'X'
)
},
/* OpenDiVX *//* sample files at http://heroinewarrior.com/xmovie.php3 use this tag */
{
CODEC_ID_MPEG4
,
MKTAG
(
'X'
,
'V'
,
'I'
,
'D'
)
},
{
CODEC_ID_MPEG4
,
MKTAG
(
'3'
,
'I'
,
'V'
,
'2'
)
},
/* experimental: 3IVX files before ivx D4 4.5.1 */
{
CODEC_ID_H263
,
MKTAG
(
'h'
,
'2'
,
'6'
,
'3'
)
},
/* H263 */
{
CODEC_ID_H263
,
MKTAG
(
's'
,
'2'
,
'6'
,
'3'
)
},
/* H263 ?? works */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
'p'
)
},
/* DV PAL */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
' '
)
},
/* DV NTSC */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'p'
,
'p'
)
},
/* DVCPRO PAL produced by FCP */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'5'
,
'p'
)
},
/* DVCPRO50 PAL produced by FCP */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'5'
,
'n'
)
},
/* DVCPRO50 NTSC produced by FCP */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'A'
,
'V'
,
'd'
,
'v'
)
},
/* AVID DV */
//{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '5') }, /* DVCPRO HD 50i produced by FCP */
//{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '6') }, /* DVCPRO HD 60i produced by FCP */
{
CODEC_ID_VP3
,
MKTAG
(
'V'
,
'P'
,
'3'
,
'1'
)
},
/* On2 VP3 */
{
CODEC_ID_RPZA
,
MKTAG
(
'r'
,
'p'
,
'z'
,
'a'
)
},
/* Apple Video (RPZA) */
{
CODEC_ID_CINEPAK
,
MKTAG
(
'c'
,
'v'
,
'i'
,
'd'
)
},
/* Cinepak */
{
CODEC_ID_8BPS
,
MKTAG
(
'8'
,
'B'
,
'P'
,
'S'
)
},
/* Planar RGB (8BPS) */
{
CODEC_ID_SMC
,
MKTAG
(
's'
,
'm'
,
'c'
,
' '
)
},
/* Apple Graphics (SMC) */
{
CODEC_ID_QTRLE
,
MKTAG
(
'r'
,
'l'
,
'e'
,
' '
)
},
/* Apple Animation (RLE) */
{
CODEC_ID_MSRLE
,
MKTAG
(
'W'
,
'R'
,
'L'
,
'E'
)
},
{
CODEC_ID_QDRAW
,
MKTAG
(
'q'
,
'd'
,
'r'
,
'w'
)
},
/* QuickDraw */
{
CODEC_ID_H264
,
MKTAG
(
'a'
,
'v'
,
'c'
,
'1'
)
},
/* AVC-1/H.264 */
{
CODEC_ID_MPEG1VIDEO
,
MKTAG
(
'm'
,
'p'
,
'e'
,
'g'
)
},
/* MPEG */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'h'
,
'd'
,
'v'
,
'2'
)
},
/* MPEG2 produced by Sony HD camera */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'h'
,
'd'
,
'v'
,
'3'
)
},
/* HDV produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'5'
,
'n'
)
},
/* MPEG2 IMX NTSC 525/60 50mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'5'
,
'p'
)
},
/* MPEG2 IMX PAL 625/50 50mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'3'
,
'n'
)
},
/* MPEG2 IMX NTSC 525/60 30mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'm'
,
'x'
,
'3'
,
'p'
)
},
/* MPEG2 IMX PAL 625/50 30mb/s produced by FCP */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'A'
,
'V'
,
'm'
,
'p'
)
},
/* AVID IMX PAL */
{
CODEC_ID_MPEG2VIDEO
,
MKTAG
(
'A'
,
'V'
,
'm'
,
'n'
)
},
/* AVID IMX NTSC */
//{ CODEC_ID_JPEG2000, MKTAG('m', 'j', 'p', '2') }, /* JPEG 2000 produced by FCP */
{
CODEC_ID_TARGA
,
MKTAG
(
't'
,
'g'
,
'a'
,
' '
)
},
/* Truevision Targa */
{
CODEC_ID_TIFF
,
MKTAG
(
't'
,
'i'
,
'f'
,
'f'
)
},
/* TIFF embedded in MOV */
{
CODEC_ID_GIF
,
MKTAG
(
'g'
,
'i'
,
'f'
,
' '
)
},
/* embedded gif files as frames (usually one "click to play movie" frame) */
{
CODEC_ID_PNG
,
MKTAG
(
'p'
,
'n'
,
'g'
,
' '
)
},
{
CODEC_ID_VC1
,
MKTAG
(
'v'
,
'c'
,
'-'
,
'1'
)
},
/* SMPTE RP 2025 */
{
CODEC_ID_NONE
,
0
},
};
static
const
AVCodecTag
mov_audio_tags
[]
=
{
{
CODEC_ID_PCM_S32BE
,
MKTAG
(
'i'
,
'n'
,
'3'
,
'2'
)
},
{
CODEC_ID_PCM_S32LE
,
MKTAG
(
'i'
,
'n'
,
'3'
,
'2'
)
},
{
CODEC_ID_PCM_S24BE
,
MKTAG
(
'i'
,
'n'
,
'2'
,
'4'
)
},
{
CODEC_ID_PCM_S24LE
,
MKTAG
(
'i'
,
'n'
,
'2'
,
'4'
)
},
{
CODEC_ID_PCM_S16BE
,
MKTAG
(
't'
,
'w'
,
'o'
,
's'
)
},
/* 16 bits */
{
CODEC_ID_PCM_S16BE
,
MKTAG
(
'N'
,
'O'
,
'N'
,
'E'
)
},
/* uncompressed */
{
CODEC_ID_PCM_S16LE
,
MKTAG
(
's'
,
'o'
,
'w'
,
't'
)
},
/* */
{
CODEC_ID_PCM_S16LE
,
MKTAG
(
'l'
,
'p'
,
'c'
,
'm'
)
},
{
CODEC_ID_PCM_U8
,
MKTAG
(
'r'
,
'a'
,
'w'
,
' '
)
},
/* 8 bits unsigned */
{
CODEC_ID_PCM_MULAW
,
MKTAG
(
'u'
,
'l'
,
'a'
,
'w'
)
},
/* */
{
CODEC_ID_PCM_ALAW
,
MKTAG
(
'a'
,
'l'
,
'a'
,
'w'
)
},
/* */
{
CODEC_ID_ADPCM_IMA_QT
,
MKTAG
(
'i'
,
'm'
,
'a'
,
'4'
)
},
/* IMA-4 ADPCM */
{
CODEC_ID_ADPCM_MS
,
MKTAG
(
'm'
,
's'
,
0x00
,
0x02
)
},
/* MS ADPCM */
{
CODEC_ID_MACE3
,
MKTAG
(
'M'
,
'A'
,
'C'
,
'3'
)
},
/* Macintosh Audio Compression and Expansion 3:1 */
{
CODEC_ID_MACE6
,
MKTAG
(
'M'
,
'A'
,
'C'
,
'6'
)
},
/* Macintosh Audio Compression and Expansion 6:1 */
{
CODEC_ID_MP3
,
MKTAG
(
'.'
,
'm'
,
'p'
,
'3'
)
},
/* MPEG layer 3 */
/* sample files at http://www.3ivx.com/showcase.html use this tag */
{
CODEC_ID_MP2
,
0x6D730055
},
/* MPEG layer 3 */
{
CODEC_ID_MP2
,
0x5500736D
},
/* MPEG layer 3 *//* XXX: check endianness */
/* { CODEC_ID_OGG_VORBIS, MKTAG('O', 'g', 'g', 'S') }, *//* sample files at http://heroinewarrior.com/xmovie.php3 use this tag */
{
CODEC_ID_AAC
,
MKTAG
(
'm'
,
'p'
,
'4'
,
'a'
)
},
/* MPEG-4 AAC */
{
CODEC_ID_AMR_NB
,
MKTAG
(
's'
,
'a'
,
'm'
,
'r'
)
},
/* AMR-NB 3gp */
{
CODEC_ID_AMR_WB
,
MKTAG
(
's'
,
'a'
,
'w'
,
'b'
)
},
/* AMR-WB 3gp */
{
CODEC_ID_AC3
,
MKTAG
(
'm'
,
's'
,
0x20
,
0x00
)
},
/* Dolby AC-3 */
{
CODEC_ID_ALAC
,
MKTAG
(
'a'
,
'l'
,
'a'
,
'c'
)
},
/* Apple Lossless */
{
CODEC_ID_QDM2
,
MKTAG
(
'Q'
,
'D'
,
'M'
,
'2'
)
},
/* QDM2 */
{
CODEC_ID_DVAUDIO
,
MKTAG
(
'v'
,
'd'
,
'v'
,
'a'
)
},
{
CODEC_ID_DVAUDIO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
'a'
)
},
{
CODEC_ID_NONE
,
0
},
};
/* the QuickTime file format is quite convoluted...
* it has lots of index tables, each indexing something in another one...
* Here we just use what is needed to read the chunks
...
...
@@ -800,12 +690,12 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
}
st
->
codec
->
codec_tag
=
format
;
id
=
codec_get_id
(
mov_
audio_tags
,
format
);
id
=
codec_get_id
(
codec_mov
audio_tags
,
format
);
if
(
st
->
codec
->
codec_type
!=
CODEC_TYPE_VIDEO
&&
id
>
0
)
{
st
->
codec
->
codec_type
=
CODEC_TYPE_AUDIO
;
}
else
if
(
st
->
codec
->
codec_type
!=
CODEC_TYPE_AUDIO
&&
/* do not overwrite codec type */
format
&&
format
!=
MKTAG
(
'm'
,
'p'
,
'4'
,
's'
))
{
/* skip old asf mpeg4 tag */
id
=
codec_get_id
(
mov_
video_tags
,
format
);
id
=
codec_get_id
(
codec_mov
video_tags
,
format
);
if
(
id
<=
0
)
id
=
codec_get_id
(
codec_bmp_tags
,
format
);
if
(
id
>
0
)
...
...
libavformat/movenc.c
浏览文件 @
1e5f5e3b
...
...
@@ -322,25 +322,6 @@ static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack* track)
return
updateSize
(
pb
,
pos
);
}
static
const
AVCodecTag
codec_movaudio_tags
[]
=
{
{
CODEC_ID_PCM_MULAW
,
MKTAG
(
'u'
,
'l'
,
'a'
,
'w'
)
},
{
CODEC_ID_PCM_ALAW
,
MKTAG
(
'a'
,
'l'
,
'a'
,
'w'
)
},
{
CODEC_ID_ADPCM_IMA_QT
,
MKTAG
(
'i'
,
'm'
,
'a'
,
'4'
)
},
{
CODEC_ID_MACE3
,
MKTAG
(
'M'
,
'A'
,
'C'
,
'3'
)
},
{
CODEC_ID_MACE6
,
MKTAG
(
'M'
,
'A'
,
'C'
,
'6'
)
},
{
CODEC_ID_AAC
,
MKTAG
(
'm'
,
'p'
,
'4'
,
'a'
)
},
{
CODEC_ID_AMR_NB
,
MKTAG
(
's'
,
'a'
,
'm'
,
'r'
)
},
{
CODEC_ID_AMR_WB
,
MKTAG
(
's'
,
'a'
,
'w'
,
'b'
)
},
{
CODEC_ID_PCM_S16BE
,
MKTAG
(
't'
,
'w'
,
'o'
,
's'
)
},
{
CODEC_ID_PCM_S16LE
,
MKTAG
(
's'
,
'o'
,
'w'
,
't'
)
},
{
CODEC_ID_PCM_S24BE
,
MKTAG
(
'i'
,
'n'
,
'2'
,
'4'
)
},
{
CODEC_ID_PCM_S24LE
,
MKTAG
(
'i'
,
'n'
,
'2'
,
'4'
)
},
{
CODEC_ID_PCM_S32BE
,
MKTAG
(
'i'
,
'n'
,
'3'
,
'2'
)
},
{
CODEC_ID_PCM_S32LE
,
MKTAG
(
'i'
,
'n'
,
'3'
,
'2'
)
},
{
CODEC_ID_MP3
,
MKTAG
(
'.'
,
'm'
,
'p'
,
'3'
)
},
{
CODEC_ID_NONE
,
0
},
};
static
int
mov_write_audio_tag
(
ByteIOContext
*
pb
,
MOVTrack
*
track
)
{
offset_t
pos
=
url_ftell
(
pb
);
...
...
@@ -526,22 +507,6 @@ static int mov_write_avcc_tag(ByteIOContext *pb, MOVTrack *track)
return
updateSize
(
pb
,
pos
);
}
static
const
AVCodecTag
codec_movvideo_tags
[]
=
{
{
CODEC_ID_SVQ1
,
MKTAG
(
'S'
,
'V'
,
'Q'
,
'1'
)
},
{
CODEC_ID_SVQ3
,
MKTAG
(
'S'
,
'V'
,
'Q'
,
'3'
)
},
{
CODEC_ID_MPEG4
,
MKTAG
(
'm'
,
'p'
,
'4'
,
'v'
)
},
{
CODEC_ID_H263
,
MKTAG
(
'h'
,
'2'
,
'6'
,
'3'
)
},
{
CODEC_ID_H263
,
MKTAG
(
's'
,
'2'
,
'6'
,
'3'
)
},
{
CODEC_ID_H264
,
MKTAG
(
'a'
,
'v'
,
'c'
,
'1'
)
},
/* special handling in mov_find_video_codec_tag */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
' '
)
},
/* DV NTSC */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'c'
,
'p'
)
},
/* DV PAL */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'p'
,
'p'
)
},
/* DVCPRO PAL */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'5'
,
'n'
)
},
/* DVCPRO50 NTSC */
{
CODEC_ID_DVVIDEO
,
MKTAG
(
'd'
,
'v'
,
'5'
,
'p'
)
},
/* DVCPRO50 PAL */
{
CODEC_ID_NONE
,
0
},
};
static
int
mov_find_video_codec_tag
(
AVFormatContext
*
s
,
MOVTrack
*
track
)
{
int
tag
=
track
->
enc
->
codec_tag
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录