Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
1edaf601
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,发现更多精彩内容 >>
提交
1edaf601
编写于
12月 02, 2018
作者:
M
Martin Vignali
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avcodec/prores_aw : add 4444 xq support
上级
bbbbf237
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
9 deletion
+28
-9
libavcodec/proresenc_anatoliy.c
libavcodec/proresenc_anatoliy.c
+28
-9
未找到文件。
libavcodec/proresenc_anatoliy.c
浏览文件 @
1edaf601
...
...
@@ -45,12 +45,13 @@ static const AVProfile profiles[] = {
{
FF_PROFILE_PRORES_STANDARD
,
"apcn"
},
{
FF_PROFILE_PRORES_HQ
,
"apch"
},
{
FF_PROFILE_PRORES_4444
,
"ap4h"
},
{
FF_PROFILE_PRORES_XQ
,
"ap4x"
},
{
FF_PROFILE_UNKNOWN
}
};
static
const
int
qp_start_table
[
5
]
=
{
8
,
3
,
2
,
1
,
1
};
static
const
int
qp_end_table
[
5
]
=
{
13
,
9
,
6
,
6
,
5
};
static
const
int
bitrate_table
[
5
]
=
{
1000
,
2100
,
3500
,
5400
,
7
000
};
static
const
int
qp_start_table
[
6
]
=
{
8
,
3
,
2
,
1
,
1
,
1
};
static
const
int
qp_end_table
[
6
]
=
{
13
,
9
,
6
,
6
,
5
,
4
};
static
const
int
bitrate_table
[
6
]
=
{
1000
,
2100
,
3500
,
5400
,
7000
,
10
000
};
static
const
int
valid_primaries
[
9
]
=
{
AVCOL_PRI_RESERVED0
,
AVCOL_PRI_BT709
,
AVCOL_PRI_UNSPECIFIED
,
AVCOL_PRI_BT470BG
,
AVCOL_PRI_SMPTE170M
,
AVCOL_PRI_BT2020
,
AVCOL_PRI_SMPTE431
,
AVCOL_PRI_SMPTE432
,
INT_MAX
};
...
...
@@ -58,7 +59,7 @@ static const int valid_trc[4] = { AVCOL_TRC_RESERVED0, AVCOL_TRC_BT709, A
static
const
int
valid_colorspace
[
5
]
=
{
AVCOL_SPC_BT709
,
AVCOL_SPC_UNSPECIFIED
,
AVCOL_SPC_SMPTE170M
,
AVCOL_SPC_BT2020_NCL
,
INT_MAX
};
static
const
uint8_t
QMAT_LUMA
[
5
][
64
]
=
{
static
const
uint8_t
QMAT_LUMA
[
6
][
64
]
=
{
{
4
,
7
,
9
,
11
,
13
,
14
,
15
,
63
,
7
,
7
,
11
,
12
,
14
,
15
,
63
,
63
,
...
...
@@ -104,10 +105,19 @@ static const uint8_t QMAT_LUMA[5][64] = {
4
,
4
,
4
,
4
,
4
,
5
,
5
,
6
,
4
,
4
,
4
,
4
,
5
,
5
,
6
,
7
,
4
,
4
,
4
,
4
,
5
,
6
,
7
,
7
},
{
/* 444 XQ */
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
2
,
2
,
2
,
3
,
3
,
2
,
2
,
2
,
2
,
2
,
3
,
3
,
3
,
2
,
2
,
2
,
2
,
3
,
3
,
3
,
4
,
2
,
2
,
2
,
2
,
3
,
3
,
4
,
4
,
}
};
static
const
uint8_t
QMAT_CHROMA
[
5
][
64
]
=
{
static
const
uint8_t
QMAT_CHROMA
[
6
][
64
]
=
{
{
4
,
7
,
9
,
11
,
13
,
14
,
63
,
63
,
7
,
7
,
11
,
12
,
14
,
63
,
63
,
63
,
...
...
@@ -153,6 +163,15 @@ static const uint8_t QMAT_CHROMA[5][64] = {
4
,
4
,
4
,
4
,
4
,
5
,
5
,
6
,
4
,
4
,
4
,
4
,
5
,
5
,
6
,
7
,
4
,
4
,
4
,
4
,
5
,
6
,
7
,
7
},
{
/* 444 xq */
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
5
,
4
,
4
,
4
,
4
,
4
,
4
,
5
,
5
,
4
,
4
,
4
,
4
,
4
,
5
,
5
,
6
,
4
,
4
,
4
,
4
,
5
,
5
,
6
,
7
,
4
,
4
,
4
,
4
,
5
,
6
,
7
,
7
}
};
...
...
@@ -686,7 +705,7 @@ static int prores_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
bytestream_put_buffer
(
&
buf
,
ctx
->
vendor
,
4
);
bytestream_put_be16
(
&
buf
,
avctx
->
width
);
bytestream_put_be16
(
&
buf
,
avctx
->
height
);
if
(
avctx
->
profile
==
FF_PROFILE_PRORES_4444
)
{
if
(
avctx
->
profile
>=
FF_PROFILE_PRORES_4444
)
{
/* 4444 or 4444 Xq */
*
buf
++
=
0xC2
;
// 444, not interlaced
}
else
{
*
buf
++
=
0x82
;
// 422, not interlaced
...
...
@@ -768,16 +787,16 @@ static av_cold int prores_encode_init(AVCodecContext *avctx)
return
AVERROR
(
EINVAL
);
}
}
else
if
(
avctx
->
profile
<
FF_PROFILE_PRORES_PROXY
||
avctx
->
profile
>
FF_PROFILE_PRORES_
4444
)
{
||
avctx
->
profile
>
FF_PROFILE_PRORES_
XQ
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"unknown profile %d, use [0 - apco, 1 - apcs, 2 - apcn (default), 3 - apch, 4 - ap4h]
\n
"
,
"unknown profile %d, use [0 - apco, 1 - apcs, 2 - apcn (default), 3 - apch, 4 - ap4h
, 5 - ap4x
]
\n
"
,
avctx
->
profile
);
return
AVERROR
(
EINVAL
);
}
else
if
((
avctx
->
pix_fmt
==
AV_PIX_FMT_YUV422P10
)
&&
(
avctx
->
profile
>
FF_PROFILE_PRORES_HQ
)){
av_log
(
avctx
,
AV_LOG_ERROR
,
"encoding with ProRes 444
(ap4h
) profile, need YUV444P10 input
\n
"
);
"encoding with ProRes 444
/Xq (ap4h/ap4x
) profile, need YUV444P10 input
\n
"
);
return
AVERROR
(
EINVAL
);
}
else
if
((
avctx
->
pix_fmt
==
AV_PIX_FMT_YUV444P10
||
avctx
->
pix_fmt
==
AV_PIX_FMT_YUVA444P10
)
&&
(
avctx
->
profile
<
FF_PROFILE_PRORES_4444
)){
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录