Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
5f759938
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,发现更多精彩内容 >>
提交
5f759938
编写于
7月 05, 2015
作者:
J
jp9000
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
obs-ffmpeg: Improve AAC logging
Adds a separator and uses better logging techniques
上级
0b7cd0ac
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
29 deletion
+23
-29
plugins/obs-ffmpeg/obs-ffmpeg-aac.c
plugins/obs-ffmpeg/obs-ffmpeg-aac.c
+23
-29
未找到文件。
plugins/obs-ffmpeg/obs-ffmpeg-aac.c
浏览文件 @
5f759938
...
...
@@ -25,6 +25,14 @@
#include "obs-ffmpeg-formats.h"
#include "obs-ffmpeg-compat.h"
#define do_log(level, format, ...) \
blog(level, "[FFmpeg aac encoder: '%s'] " format, \
obs_encoder_get_name(enc->encoder), ##__VA_ARGS__)
#define warn(format, ...) do_log(LOG_WARNING, format, ##__VA_ARGS__)
#define info(format, ...) do_log(LOG_INFO, format, ##__VA_ARGS__)
#define debug(format, ...) do_log(LOG_DEBUG, format, ##__VA_ARGS__)
struct
aac_encoder
{
obs_encoder_t
*
encoder
;
...
...
@@ -49,17 +57,6 @@ static const char *aac_getname(void)
return
obs_module_text
(
"FFmpegAAC"
);
}
static
void
aac_warn
(
const
char
*
func
,
const
char
*
format
,
...)
{
va_list
args
;
char
msg
[
1024
];
va_start
(
args
,
format
);
vsnprintf
(
msg
,
sizeof
(
msg
),
format
,
args
);
blog
(
LOG_WARNING
,
"[%s]: %s"
,
func
,
msg
);
va_end
(
args
);
}
static
void
aac_destroy
(
void
*
data
)
{
struct
aac_encoder
*
enc
=
data
;
...
...
@@ -81,14 +78,13 @@ static bool initialize_codec(struct aac_encoder *enc)
enc
->
aframe
=
av_frame_alloc
();
if
(
!
enc
->
aframe
)
{
aac_warn
(
"initialize_codec"
,
"Failed to allocate audio frame"
);
warn
(
"Failed to allocate audio frame"
);
return
false
;
}
ret
=
avcodec_open2
(
enc
->
context
,
enc
->
aac
,
NULL
);
if
(
ret
<
0
)
{
aac_warn
(
"initialize_codec"
,
"Failed to open AAC codec: %s"
,
av_err2str
(
ret
));
warn
(
"Failed to open AAC codec: %s"
,
av_err2str
(
ret
));
return
false
;
}
...
...
@@ -101,8 +97,7 @@ static bool initialize_codec(struct aac_encoder *enc)
ret
=
av_samples_alloc
(
enc
->
samples
,
NULL
,
enc
->
context
->
channels
,
enc
->
frame_size
,
enc
->
context
->
sample_fmt
,
0
);
if
(
ret
<
0
)
{
aac_warn
(
"initialize_codec"
,
"Failed to create audio buffer: "
"%s"
,
av_err2str
(
ret
));
warn
(
"Failed to create audio buffer: %s"
,
av_err2str
(
ret
));
return
false
;
}
...
...
@@ -131,26 +126,27 @@ static void *aac_create(obs_data_t *settings, obs_encoder_t *encoder)
int
bitrate
=
(
int
)
obs_data_get_int
(
settings
,
"bitrate"
);
audio_t
*
audio
=
obs_encoder_audio
(
encoder
);
if
(
!
bitrate
)
{
aac_warn
(
"aac_create"
,
"Invalid bitrate specified"
);
return
NULL
;
}
avcodec_register_all
();
enc
=
bzalloc
(
sizeof
(
struct
aac_encoder
));
enc
->
encoder
=
encoder
;
enc
->
aac
=
avcodec_find_encoder
(
AV_CODEC_ID_AAC
);
blog
(
LOG_INFO
,
"---------------------------------"
);
if
(
!
enc
->
aac
)
{
aac_warn
(
"aac_create"
,
"Couldn't find encoder"
);
warn
(
"Couldn't find encoder"
);
goto
fail
;
}
blog
(
LOG_INFO
,
"Using ffmpeg
\"
%s
\"
aac encoder"
,
enc
->
aac
->
name
);
if
(
!
bitrate
)
{
warn
(
"Invalid bitrate specified"
);
return
NULL
;
}
enc
->
context
=
avcodec_alloc_context3
(
enc
->
aac
);
if
(
!
enc
->
context
)
{
aac_warn
(
"aac_create"
,
"Failed to create codec context"
);
warn
(
"Failed to create codec context"
);
goto
fail
;
}
...
...
@@ -173,7 +169,7 @@ static void *aac_create(obs_data_t *settings, obs_encoder_t *encoder)
enc
->
context
->
cutoff
=
cutoff
;
}
blog
(
LOG_INFO
,
"FFmpeg AAC:
bitrate: %d, channels: %d"
,
info
(
"
bitrate: %d, channels: %d"
,
enc
->
context
->
bit_rate
/
1000
,
enc
->
context
->
channels
);
init_sizes
(
enc
,
audio
);
...
...
@@ -208,8 +204,7 @@ static bool do_aac_encode(struct aac_encoder *enc,
enc
->
context
->
sample_fmt
,
enc
->
samples
[
0
],
enc
->
frame_size_bytes
*
enc
->
context
->
channels
,
1
);
if
(
ret
<
0
)
{
aac_warn
(
"do_aac_encode"
,
"avcodec_fill_audio_frame failed: %s"
,
av_err2str
(
ret
));
warn
(
"avcodec_fill_audio_frame failed: %s"
,
av_err2str
(
ret
));
return
false
;
}
...
...
@@ -218,8 +213,7 @@ static bool do_aac_encode(struct aac_encoder *enc,
ret
=
avcodec_encode_audio2
(
enc
->
context
,
&
avpacket
,
enc
->
aframe
,
&
got_packet
);
if
(
ret
<
0
)
{
aac_warn
(
"do_aac_encode"
,
"avcodec_encode_audio2 failed: %s"
,
av_err2str
(
ret
));
warn
(
"avcodec_encode_audio2 failed: %s"
,
av_err2str
(
ret
));
return
false
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录