Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
0199e00b
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,发现更多精彩内容 >>
提交
0199e00b
编写于
5月 19, 2011
作者:
M
Mans Rullgard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mpegaudio: move all header parsing to mpegaudiodecheader.[ch]
Signed-off-by:
N
Mans Rullgard
<
mans@mansr.com
>
上级
984ece75
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
79 addition
and
80 deletion
+79
-80
libavcodec/mp3_header_compress_bsf.c
libavcodec/mp3_header_compress_bsf.c
+1
-1
libavcodec/mp3_header_decompress_bsf.c
libavcodec/mp3_header_decompress_bsf.c
+1
-1
libavcodec/mpegaudio.h
libavcodec/mpegaudio.h
+1
-37
libavcodec/mpegaudio_parser.c
libavcodec/mpegaudio_parser.c
+0
-39
libavcodec/mpegaudiodecheader.c
libavcodec/mpegaudiodecheader.c
+37
-0
libavcodec/mpegaudiodecheader.h
libavcodec/mpegaudiodecheader.h
+39
-2
未找到文件。
libavcodec/mp3_header_compress_bsf.c
浏览文件 @
0199e00b
...
...
@@ -20,7 +20,7 @@
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "mpegaudio.h"
#include "mpegaudio
decheader
.h"
static
int
mp3_header_compress
(
AVBitStreamFilterContext
*
bsfc
,
AVCodecContext
*
avctx
,
const
char
*
args
,
...
...
libavcodec/mp3_header_decompress_bsf.c
浏览文件 @
0199e00b
...
...
@@ -20,7 +20,7 @@
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "mpegaudio.h"
#include "mpegaudio
decheader
.h"
#include "mpegaudiodata.h"
...
...
libavcodec/mpegaudio.h
浏览文件 @
0199e00b
...
...
@@ -30,7 +30,7 @@
# define CONFIG_FLOAT 0
#endif
#include
"avcodec.h"
#include
<stdint.h>
/* max frame size, in samples */
#define MPA_FRAME_SIZE 1152
...
...
@@ -47,8 +47,6 @@
#define MPA_DUAL 2
#define MPA_MONO 3
#define MP3_MASK 0xFFFE0CCF
#ifndef FRAC_BITS
#define FRAC_BITS 23
/* fractional bits for sb_samples and dct */
#define WFRAC_BITS 16
/* fractional bits for window */
...
...
@@ -72,40 +70,6 @@ typedef int32_t MPA_INT;
typedef
int16_t
OUT_INT
;
#endif
#define MPA_DECODE_HEADER \
int frame_size; \
int error_protection; \
int layer; \
int sample_rate; \
int sample_rate_index;
/* between 0 and 8 */
\
int bit_rate; \
int nb_channels; \
int mode; \
int mode_ext; \
int lsf;
typedef
struct
MPADecodeHeader
{
MPA_DECODE_HEADER
}
MPADecodeHeader
;
int
ff_mpa_l2_select_table
(
int
bitrate
,
int
nb_channels
,
int
freq
,
int
lsf
);
int
ff_mpa_decode_header
(
AVCodecContext
*
avctx
,
uint32_t
head
,
int
*
sample_rate
,
int
*
channels
,
int
*
frame_size
,
int
*
bitrate
);
/* fast header check for resync */
static
inline
int
ff_mpa_check_header
(
uint32_t
header
){
/* header */
if
((
header
&
0xffe00000
)
!=
0xffe00000
)
return
-
1
;
/* layer check */
if
((
header
&
(
3
<<
17
))
==
0
)
return
-
1
;
/* bit rate */
if
((
header
&
(
0xf
<<
12
))
==
0xf
<<
12
)
return
-
1
;
/* frequency */
if
((
header
&
(
3
<<
10
))
==
3
<<
10
)
return
-
1
;
return
0
;
}
#endif
/* AVCODEC_MPEGAUDIO_H */
libavcodec/mpegaudio_parser.c
浏览文件 @
0199e00b
...
...
@@ -38,45 +38,6 @@ typedef struct MpegAudioParseContext {
#define SAME_HEADER_MASK \
(0xffe00000 | (3 << 17) | (3 << 10) | (3 << 19))
/* useful helper to get mpeg audio stream infos. Return -1 if error in
header, otherwise the coded frame size in bytes */
int
ff_mpa_decode_header
(
AVCodecContext
*
avctx
,
uint32_t
head
,
int
*
sample_rate
,
int
*
channels
,
int
*
frame_size
,
int
*
bit_rate
)
{
MPADecodeHeader
s1
,
*
s
=
&
s1
;
if
(
ff_mpa_check_header
(
head
)
!=
0
)
return
-
1
;
if
(
ff_mpegaudio_decode_header
(
s
,
head
)
!=
0
)
{
return
-
1
;
}
switch
(
s
->
layer
)
{
case
1
:
avctx
->
codec_id
=
CODEC_ID_MP1
;
*
frame_size
=
384
;
break
;
case
2
:
avctx
->
codec_id
=
CODEC_ID_MP2
;
*
frame_size
=
1152
;
break
;
default:
case
3
:
avctx
->
codec_id
=
CODEC_ID_MP3
;
if
(
s
->
lsf
)
*
frame_size
=
576
;
else
*
frame_size
=
1152
;
break
;
}
*
sample_rate
=
s
->
sample_rate
;
*
channels
=
s
->
nb_channels
;
*
bit_rate
=
s
->
bit_rate
;
avctx
->
sub_id
=
s
->
layer
;
return
s
->
frame_size
;
}
static
int
mpegaudio_parse
(
AVCodecParserContext
*
s1
,
AVCodecContext
*
avctx
,
const
uint8_t
**
poutbuf
,
int
*
poutbuf_size
,
...
...
libavcodec/mpegaudiodecheader.c
浏览文件 @
0199e00b
...
...
@@ -108,3 +108,40 @@ int ff_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)
#endif
return
0
;
}
int
ff_mpa_decode_header
(
AVCodecContext
*
avctx
,
uint32_t
head
,
int
*
sample_rate
,
int
*
channels
,
int
*
frame_size
,
int
*
bit_rate
)
{
MPADecodeHeader
s1
,
*
s
=
&
s1
;
if
(
ff_mpa_check_header
(
head
)
!=
0
)
return
-
1
;
if
(
ff_mpegaudio_decode_header
(
s
,
head
)
!=
0
)
{
return
-
1
;
}
switch
(
s
->
layer
)
{
case
1
:
avctx
->
codec_id
=
CODEC_ID_MP1
;
*
frame_size
=
384
;
break
;
case
2
:
avctx
->
codec_id
=
CODEC_ID_MP2
;
*
frame_size
=
1152
;
break
;
default:
case
3
:
avctx
->
codec_id
=
CODEC_ID_MP3
;
if
(
s
->
lsf
)
*
frame_size
=
576
;
else
*
frame_size
=
1152
;
break
;
}
*
sample_rate
=
s
->
sample_rate
;
*
channels
=
s
->
nb_channels
;
*
bit_rate
=
s
->
bit_rate
;
avctx
->
sub_id
=
s
->
layer
;
return
s
->
frame_size
;
}
libavcodec/mpegaudiodecheader.h
浏览文件 @
0199e00b
...
...
@@ -27,13 +27,50 @@
#ifndef AVCODEC_MPEGAUDIODECHEADER_H
#define AVCODEC_MPEGAUDIODECHEADER_H
#include "libavutil/common.h"
#include "mpegaudio.h"
#include "avcodec.h"
#define MP3_MASK 0xFFFE0CCF
#define MPA_DECODE_HEADER \
int frame_size; \
int error_protection; \
int layer; \
int sample_rate; \
int sample_rate_index;
/* between 0 and 8 */
\
int bit_rate; \
int nb_channels; \
int mode; \
int mode_ext; \
int lsf;
typedef
struct
MPADecodeHeader
{
MPA_DECODE_HEADER
}
MPADecodeHeader
;
/* header decoding. MUST check the header before because no
consistency check is done there. Return 1 if free format found and
that the frame size must be computed externally */
int
ff_mpegaudio_decode_header
(
MPADecodeHeader
*
s
,
uint32_t
header
);
/* useful helper to get mpeg audio stream infos. Return -1 if error in
header, otherwise the coded frame size in bytes */
int
ff_mpa_decode_header
(
AVCodecContext
*
avctx
,
uint32_t
head
,
int
*
sample_rate
,
int
*
channels
,
int
*
frame_size
,
int
*
bitrate
);
/* fast header check for resync */
static
inline
int
ff_mpa_check_header
(
uint32_t
header
){
/* header */
if
((
header
&
0xffe00000
)
!=
0xffe00000
)
return
-
1
;
/* layer check */
if
((
header
&
(
3
<<
17
))
==
0
)
return
-
1
;
/* bit rate */
if
((
header
&
(
0xf
<<
12
))
==
0xf
<<
12
)
return
-
1
;
/* frequency */
if
((
header
&
(
3
<<
10
))
==
3
<<
10
)
return
-
1
;
return
0
;
}
#endif
/* AVCODEC_MPEGAUDIODECHEADER_H */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录