Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
0628c844
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0628c844
编写于
7月 18, 2020
作者:
J
jpark37
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
libobs: Fix FFmpeg deprecation warnings
上级
cd865a0b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
33 addition
and
16 deletion
+33
-16
libobs/graphics/graphics-ffmpeg.c
libobs/graphics/graphics-ffmpeg.c
+33
-16
未找到文件。
libobs/graphics/graphics-ffmpeg.c
浏览文件 @
0628c844
...
...
@@ -11,9 +11,6 @@ struct ffmpeg_image {
const
char
*
file
;
AVFormatContext
*
fmt_ctx
;
AVCodecContext
*
decoder_ctx
;
AVCodec
*
decoder
;
AVStream
*
stream
;
int
stream_idx
;
int
cx
,
cy
;
enum
AVPixelFormat
format
;
...
...
@@ -21,26 +18,46 @@ struct ffmpeg_image {
static
bool
ffmpeg_image_open_decoder_context
(
struct
ffmpeg_image
*
info
)
{
int
ret
=
av_find_best_stream
(
info
->
fmt_ctx
,
AVMEDIA_TYPE_VIDEO
,
-
1
,
1
,
NULL
,
0
);
AVFormatContext
*
const
fmt_ctx
=
info
->
fmt_ctx
;
int
ret
=
av_find_best_stream
(
fmt_ctx
,
AVMEDIA_TYPE_VIDEO
,
-
1
,
1
,
NULL
,
0
);
if
(
ret
<
0
)
{
blog
(
LOG_WARNING
,
"Couldn't find video stream in file '%s': %s"
,
info
->
file
,
av_err2str
(
ret
));
return
false
;
}
info
->
stream_idx
=
ret
;
info
->
stream
=
info
->
fmt_ctx
->
streams
[
ret
];
info
->
decoder_ctx
=
info
->
stream
->
codec
;
info
->
decoder
=
avcodec_find_decoder
(
info
->
decoder_ctx
->
codec_id
);
if
(
!
info
->
decoder
)
{
AVStream
*
const
stream
=
fmt_ctx
->
streams
[
ret
];
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
AVCodecParameters
*
const
codecpar
=
stream
->
codecpar
;
AVCodec
*
const
decoder
=
avcodec_find_decoder
(
codecpar
->
codec_id
);
#else
AVCodecContext
*
const
decoder_ctx
=
stream
->
codec
;
AVCodec
*
const
decoder
=
avcodec_find_decoder
(
decoder_ctx
->
codec_id
);
#endif
if
(
!
decoder
)
{
blog
(
LOG_WARNING
,
"Failed to find decoder for file '%s'"
,
info
->
file
);
return
false
;
}
ret
=
avcodec_open2
(
info
->
decoder_ctx
,
info
->
decoder
,
NULL
);
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
AVCodecContext
*
const
decoder_ctx
=
avcodec_alloc_context3
(
decoder
);
avcodec_parameters_to_context
(
decoder_ctx
,
codecpar
);
#endif
info
->
decoder_ctx
=
decoder_ctx
;
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
info
->
cx
=
codecpar
->
width
;
info
->
cy
=
codecpar
->
height
;
info
->
format
=
codecpar
->
format
;
#else
info
->
cx
=
decoder_ctx
->
width
;
info
->
cy
=
decoder_ctx
->
height
;
info
->
format
=
decoder_ctx
->
pix_fmt
;
#endif
ret
=
avcodec_open2
(
decoder_ctx
,
decoder
,
NULL
);
if
(
ret
<
0
)
{
blog
(
LOG_WARNING
,
"Failed to open video codec for file '%s': "
...
...
@@ -54,7 +71,11 @@ static bool ffmpeg_image_open_decoder_context(struct ffmpeg_image *info)
static
void
ffmpeg_image_free
(
struct
ffmpeg_image
*
info
)
{
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
avcodec_free_context
(
&
info
->
decoder_ctx
);
#else
avcodec_close
(
info
->
decoder_ctx
);
#endif
avformat_close_input
(
&
info
->
fmt_ctx
);
}
...
...
@@ -67,7 +88,6 @@ static bool ffmpeg_image_init(struct ffmpeg_image *info, const char *file)
memset
(
info
,
0
,
sizeof
(
struct
ffmpeg_image
));
info
->
file
=
file
;
info
->
stream_idx
=
-
1
;
ret
=
avformat_open_input
(
&
info
->
fmt_ctx
,
file
,
NULL
,
NULL
);
if
(
ret
<
0
)
{
...
...
@@ -88,9 +108,6 @@ static bool ffmpeg_image_init(struct ffmpeg_image *info, const char *file)
if
(
!
ffmpeg_image_open_decoder_context
(
info
))
goto
fail
;
info
->
cx
=
info
->
decoder_ctx
->
width
;
info
->
cy
=
info
->
decoder_ctx
->
height
;
info
->
format
=
info
->
decoder_ctx
->
pix_fmt
;
return
true
;
fail:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录