Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
05fb4c9a
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,发现更多精彩内容 >>
提交
05fb4c9a
编写于
7月 15, 2015
作者:
V
Vittorio Giovara
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
proresenc: Do not entangle coded_frame
上级
91767360
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
7 deletion
+8
-7
libavcodec/proresenc.c
libavcodec/proresenc.c
+8
-7
未找到文件。
libavcodec/proresenc.c
浏览文件 @
05fb4c9a
...
@@ -195,6 +195,7 @@ typedef struct ProresContext {
...
@@ -195,6 +195,7 @@ typedef struct ProresContext {
int
linesize
,
int16_t
*
block
);
int
linesize
,
int16_t
*
block
);
FDCTDSPContext
fdsp
;
FDCTDSPContext
fdsp
;
const
AVFrame
*
pic
;
int
mb_width
,
mb_height
;
int
mb_width
,
mb_height
;
int
mbs_per_slice
;
int
mbs_per_slice
;
int
num_chroma_blocks
,
chroma_factor
;
int
num_chroma_blocks
,
chroma_factor
;
...
@@ -743,7 +744,7 @@ static int estimate_alpha_plane(ProresContext *ctx, int *error,
...
@@ -743,7 +744,7 @@ static int estimate_alpha_plane(ProresContext *ctx, int *error,
return
bits
;
return
bits
;
}
}
static
int
find_slice_quant
(
AVCodecContext
*
avctx
,
const
AVFrame
*
pic
,
static
int
find_slice_quant
(
AVCodecContext
*
avctx
,
int
trellis_node
,
int
x
,
int
y
,
int
mbs_per_slice
,
int
trellis_node
,
int
x
,
int
y
,
int
mbs_per_slice
,
ProresThreadData
*
td
)
ProresThreadData
*
td
)
{
{
...
@@ -765,7 +766,7 @@ static int find_slice_quant(AVCodecContext *avctx, const AVFrame *pic,
...
@@ -765,7 +766,7 @@ static int find_slice_quant(AVCodecContext *avctx, const AVFrame *pic,
if
(
ctx
->
pictures_per_frame
==
1
)
if
(
ctx
->
pictures_per_frame
==
1
)
line_add
=
0
;
line_add
=
0
;
else
else
line_add
=
ctx
->
cur_picture_idx
^
!
pic
->
top_field_first
;
line_add
=
ctx
->
cur_picture_idx
^
!
ctx
->
pic
->
top_field_first
;
mbs
=
x
+
mbs_per_slice
;
mbs
=
x
+
mbs_per_slice
;
for
(
i
=
0
;
i
<
ctx
->
num_planes
;
i
++
)
{
for
(
i
=
0
;
i
<
ctx
->
num_planes
;
i
++
)
{
...
@@ -785,9 +786,9 @@ static int find_slice_quant(AVCodecContext *avctx, const AVFrame *pic,
...
@@ -785,9 +786,9 @@ static int find_slice_quant(AVCodecContext *avctx, const AVFrame *pic,
pwidth
=
avctx
->
width
>>
1
;
pwidth
=
avctx
->
width
>>
1
;
}
}
linesize
[
i
]
=
pic
->
linesize
[
i
]
*
ctx
->
pictures_per_frame
;
linesize
[
i
]
=
ctx
->
pic
->
linesize
[
i
]
*
ctx
->
pictures_per_frame
;
src
=
(
const
uint16_t
*
)(
pic
->
data
[
i
]
+
yp
*
linesize
[
i
]
+
src
=
(
const
uint16_t
*
)(
ctx
->
pic
->
data
[
i
]
+
yp
*
linesize
[
i
]
+
line_add
*
pic
->
linesize
[
i
])
+
xp
;
line_add
*
ctx
->
pic
->
linesize
[
i
])
+
xp
;
if
(
i
<
3
)
{
if
(
i
<
3
)
{
get_slice_data
(
ctx
,
src
,
linesize
[
i
],
xp
,
yp
,
get_slice_data
(
ctx
,
src
,
linesize
[
i
],
xp
,
yp
,
...
@@ -910,7 +911,7 @@ static int find_quant_thread(AVCodecContext *avctx, void *arg,
...
@@ -910,7 +911,7 @@ static int find_quant_thread(AVCodecContext *avctx, void *arg,
for
(
x
=
mb
=
0
;
x
<
ctx
->
mb_width
;
x
+=
mbs_per_slice
,
mb
++
)
{
for
(
x
=
mb
=
0
;
x
<
ctx
->
mb_width
;
x
+=
mbs_per_slice
,
mb
++
)
{
while
(
ctx
->
mb_width
-
x
<
mbs_per_slice
)
while
(
ctx
->
mb_width
-
x
<
mbs_per_slice
)
mbs_per_slice
>>=
1
;
mbs_per_slice
>>=
1
;
q
=
find_slice_quant
(
avctx
,
avctx
->
coded_frame
,
q
=
find_slice_quant
(
avctx
,
(
mb
+
1
)
*
TRELLIS_WIDTH
,
x
,
y
,
(
mb
+
1
)
*
TRELLIS_WIDTH
,
x
,
y
,
mbs_per_slice
,
td
);
mbs_per_slice
,
td
);
}
}
...
@@ -937,7 +938,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
...
@@ -937,7 +938,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
int
pkt_size
,
ret
,
max_slice_size
=
0
;
int
pkt_size
,
ret
,
max_slice_size
=
0
;
uint8_t
frame_flags
;
uint8_t
frame_flags
;
*
avctx
->
coded_frame
=
*
pic
;
ctx
->
pic
=
pic
;
avctx
->
coded_frame
->
pict_type
=
AV_PICTURE_TYPE_I
;
avctx
->
coded_frame
->
pict_type
=
AV_PICTURE_TYPE_I
;
avctx
->
coded_frame
->
key_frame
=
1
;
avctx
->
coded_frame
->
key_frame
=
1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录