Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
c437d4aa
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,发现更多精彩内容 >>
提交
c437d4aa
编写于
10月 21, 2015
作者:
M
Matt Oliver
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'upstream/master'
上级
2354799f
6b41b441
变更
19
显示空白变更内容
内联
并排
Showing
19 changed file
with
312 addition
and
103 deletion
+312
-103
Changelog
Changelog
+2
-1
doc/filters.texi
doc/filters.texi
+2
-1
libavcodec/ac3_parser.c
libavcodec/ac3_parser.c
+0
-9
libavcodec/ac3_parser.h
libavcodec/ac3_parser.h
+0
-2
libavcodec/dca_parser.c
libavcodec/dca_parser.c
+0
-1
libavcodec/dnxhdenc.c
libavcodec/dnxhdenc.c
+8
-16
libavcodec/x86/Makefile
libavcodec/x86/Makefile
+1
-0
libavcodec/x86/huffyuvencdsp.asm
libavcodec/x86/huffyuvencdsp.asm
+73
-0
libavcodec/x86/huffyuvencdsp_mmx.c
libavcodec/x86/huffyuvencdsp_mmx.c
+7
-30
libavfilter/vf_psnr.c
libavfilter/vf_psnr.c
+4
-2
libavformat/Makefile
libavformat/Makefile
+2
-0
libavformat/allformats.c
libavformat/allformats.c
+2
-0
libavformat/mp3dec.c
libavformat/mp3dec.c
+21
-7
libavformat/msf.c
libavformat/msf.c
+95
-0
libavformat/version.h
libavformat/version.h
+2
-2
libavformat/wvedec.c
libavformat/wvedec.c
+62
-0
libavutil/Makefile
libavutil/Makefile
+3
-0
libavutil/float_dsp.c
libavutil/float_dsp.c
+28
-23
libavutil/float_dsp.h
libavutil/float_dsp.h
+0
-9
未找到文件。
Changelog
浏览文件 @
c437d4aa
...
...
@@ -20,8 +20,9 @@ version <next>:
- selectivecolor filter
- extensive native AAC encoder improvements
- ADPCM PSX decoder
- genh, vag, ads & svag demuxer
- genh, vag, ads
, msf
& svag demuxer
- zscale filter
- wve demuxer
version 2.8:
...
...
doc/filters.texi
浏览文件 @
c437d4aa
...
...
@@ -8939,7 +8939,8 @@ The description of the accepted parameters follows.
@table @option
@item stats_file, f
If specified the filter will use the named file to save the PSNR of
each individual frame.
each individual frame. When filename equals "-" the data is sent to
standard output.
@end table
The file printed if @var{stats_file} is selected, contains a sequence of
...
...
libavcodec/ac3_parser.c
浏览文件 @
c437d4aa
...
...
@@ -151,15 +151,6 @@ int avpriv_ac3_parse_header2(GetBitContext *gbc, AC3HeaderInfo **phdr)
return
0
;
}
int
avpriv_ac3_parse_header
(
GetBitContext
*
gbc
,
AC3HeaderInfo
*
hdr
)
{
AC3HeaderInfo
tmp
,
*
ptmp
=
&
tmp
;
int
ret
=
avpriv_ac3_parse_header2
(
gbc
,
&
ptmp
);
memcpy
(
hdr
,
ptmp
,
((
intptr_t
)
&
tmp
.
channel_layout
)
-
((
intptr_t
)
&
tmp
)
+
sizeof
(
uint64_t
));
return
ret
;
}
static
int
ac3_sync
(
uint64_t
state
,
AACAC3ParseContext
*
hdr_info
,
int
*
need_next_header
,
int
*
new_frame_start
)
{
...
...
libavcodec/ac3_parser.h
浏览文件 @
c437d4aa
...
...
@@ -39,6 +39,4 @@
*/
int
avpriv_ac3_parse_header2
(
GetBitContext
*
gbc
,
AC3HeaderInfo
**
hdr
);
int
avpriv_ac3_parse_header
(
GetBitContext
*
gbc
,
AC3HeaderInfo
*
hdr
);
#endif
/* AVCODEC_AC3_PARSER_H */
libavcodec/dca_parser.c
浏览文件 @
c437d4aa
...
...
@@ -166,7 +166,6 @@ static int dca_parse(AVCodecParserContext *s, AVCodecContext *avctx,
/* read the duration and sample rate from the frame header */
if
(
!
dca_parse_params
(
buf
,
buf_size
,
&
duration
,
&
sample_rate
,
&
pc1
->
framesize
))
{
s
->
duration
=
duration
;
avctx
->
sample_rate
=
sample_rate
;
}
else
s
->
duration
=
0
;
...
...
libavcodec/dnxhdenc.c
浏览文件 @
c437d4aa
...
...
@@ -87,22 +87,14 @@ void dnxhd_10bit_get_pixels_8x4_sym(int16_t *av_restrict block,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
)
{
int
i
;
const
uint16_t
*
pixels16
=
(
const
uint16_t
*
)
pixels
;
line_size
>>=
1
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
block
[
0
]
=
pixels16
[
0
];
block
[
1
]
=
pixels16
[
1
];
block
[
2
]
=
pixels16
[
2
];
block
[
3
]
=
pixels16
[
3
];
block
[
4
]
=
pixels16
[
4
];
block
[
5
]
=
pixels16
[
5
];
block
[
6
]
=
pixels16
[
6
];
block
[
7
]
=
pixels16
[
7
];
pixels16
+=
line_size
;
block
+=
8
;
}
memcpy
(
block
,
block
-
8
,
sizeof
(
*
block
)
*
8
);
memcpy
(
block
+
8
,
block
-
16
,
sizeof
(
*
block
)
*
8
);
memcpy
(
block
+
16
,
block
-
24
,
sizeof
(
*
block
)
*
8
);
memcpy
(
block
+
24
,
block
-
32
,
sizeof
(
*
block
)
*
8
);
memcpy
(
block
+
0
*
8
,
pixels
+
0
*
line_size
,
8
*
sizeof
(
*
block
));
memcpy
(
block
+
7
*
8
,
pixels
+
0
*
line_size
,
8
*
sizeof
(
*
block
));
memcpy
(
block
+
1
*
8
,
pixels
+
1
*
line_size
,
8
*
sizeof
(
*
block
));
memcpy
(
block
+
6
*
8
,
pixels
+
1
*
line_size
,
8
*
sizeof
(
*
block
));
memcpy
(
block
+
2
*
8
,
pixels
+
2
*
line_size
,
8
*
sizeof
(
*
block
));
memcpy
(
block
+
5
*
8
,
pixels
+
2
*
line_size
,
8
*
sizeof
(
*
block
));
memcpy
(
block
+
3
*
8
,
pixels
+
3
*
line_size
,
8
*
sizeof
(
*
block
));
memcpy
(
block
+
4
*
8
,
pixels
+
3
*
line_size
,
8
*
sizeof
(
*
block
));
}
static
int
dnxhd_10bit_dct_quantize
(
MpegEncContext
*
ctx
,
int16_t
*
block
,
...
...
libavcodec/x86/Makefile
浏览文件 @
c437d4aa
...
...
@@ -115,6 +115,7 @@ YASM-OBJS-$(CONFIG_H264QPEL) += x86/h264_qpel_8bit.o \
YASM-OBJS-$(CONFIG_HPELDSP)
+=
x86/fpel.o
\
x86/hpeldsp.o
YASM-OBJS-$(CONFIG_HUFFYUVDSP)
+=
x86/huffyuvdsp.o
YASM-OBJS-$(CONFIG_HUFFYUVENCDSP)
+=
x86/huffyuvencdsp.o
YASM-OBJS-$(CONFIG_IDCTDSP)
+=
x86/idctdsp.o
YASM-OBJS-$(CONFIG_LLAUDDSP)
+=
x86/lossless_audiodsp.o
YASM-OBJS-$(CONFIG_LLVIDDSP)
+=
x86/lossless_videodsp.o
...
...
libavcodec/x86/huffyuvencdsp.asm
0 → 100644
浏览文件 @
c437d4aa
;************************************************************************
;* SIMD-optimized HuffYUV encoding functions
;* Copyright (c) 2000, 2001 Fabrice Bellard
;* Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
;*
;* MMX optimization by Nick Kurshev <nickols_k@mail.ru>
;* Conversion to NASM format by Tiancheng "Timothy" Gu <timothygu99@gmail.com>
;*
;* This file is part of FFmpeg.
;*
;* FFmpeg is free software; you can redistribute it and/or
;* modify it under the terms of the GNU Lesser General Public
;* License as published by the Free Software Foundation; either
;* version 2.1 of the License, or (at your option) any later version.
;*
;* FFmpeg is distributed in the hope that it will be useful,
;* but WITHOUT ANY WARRANTY; without even the implied warranty of
;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;* Lesser General Public License for more details.
;*
;* You should have received a copy of the GNU Lesser General Public
;* License along with FFmpeg; if not, write to the Free Software
;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
;******************************************************************************
%include "libavutil/x86/x86util.asm"
section
.text
INIT_MMX
mmx
; void ff_diff_bytes_mmx(uint8_t *dst, const uint8_t *src1, const uint8_t *src2,
; intptr_t w);
%if ARCH_X86_32
cglobal
di
ff_bytes
,
3
,
5
,
2
,
ds
t
,
src1
,
src2
%define wq r4q
DECLARE_REG_TMP
3
mov
wq
,
r3mp
%else
cglobal
di
ff_bytes
,
4
,
5
,
2
,
ds
t
,
src1
,
src2
,
w
DECLARE_REG_TMP
4
%endif
; ARCH_X86_32
%define i t0q
mov
i
,
wq
and
i
,
-
2
*
mmsize
jz
.setup_loop2
add
ds
tq
,
i
add
src1q
,
i
add
src2q
,
i
neg
i
.loop:
mova
m0
,
[
src1q
+
i
]
mova
m1
,
[
src1q
+
i
+
mmsize
]
psubb
m0
,
[
src2q
+
i
]
psubb
m1
,
[
src2q
+
i
+
mmsize
]
mova
[
ds
tq
+
i
],
m0
mova
[
mmsize
+
ds
tq
+
i
],
m1
add
i
,
2
*
mmsize
jl
.loop
.setup_loop2:
and
wq
,
2
*
mmsize
-
1
jz
.end
add
ds
tq
,
wq
add
src1q
,
wq
add
src2q
,
wq
neg
wq
.loop2:
mov
t0b
,
[
src1q
+
wq
]
sub
t0b
,
[
src2q
+
wq
]
mov
[
ds
tq
+
wq
],
t0b
inc
wq
jl
.loop2
.end:
REP_RET
libavcodec/x86/huffyuvencdsp_mmx.c
浏览文件 @
c437d4aa
...
...
@@ -29,33 +29,10 @@
#include "libavcodec/huffyuvencdsp.h"
#include "libavcodec/mathops.h"
#if HAVE_INLINE_ASM
static
void
diff_bytes_mmx
(
uint8_t
*
dst
,
const
uint8_t
*
src1
,
const
uint8_t
*
src2
,
intptr_t
w
)
{
x86_reg
i
=
0
;
if
(
w
>=
16
)
__asm__
volatile
(
"1:
\n\t
"
"movq (%2, %0), %%mm0
\n\t
"
"movq (%1, %0), %%mm1
\n\t
"
"psubb %%mm0, %%mm1
\n\t
"
"movq %%mm1, (%3, %0)
\n\t
"
"movq 8(%2, %0), %%mm0
\n\t
"
"movq 8(%1, %0), %%mm1
\n\t
"
"psubb %%mm0, %%mm1
\n\t
"
"movq %%mm1, 8(%3, %0)
\n\t
"
"add $16, %0
\n\t
"
"cmp %4, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
i
)
:
"r"
(
src1
),
"r"
(
src2
),
"r"
(
dst
),
"r"
((
x86_reg
)
w
-
15
));
void
ff_diff_bytes_mmx
(
uint8_t
*
dst
,
const
uint8_t
*
src1
,
const
uint8_t
*
src2
,
intptr_t
w
);
for
(;
i
<
w
;
i
++
)
dst
[
i
+
0
]
=
src1
[
i
+
0
]
-
src2
[
i
+
0
];
}
#if HAVE_INLINE_ASM
static
void
sub_hfyu_median_pred_mmxext
(
uint8_t
*
dst
,
const
uint8_t
*
src1
,
const
uint8_t
*
src2
,
intptr_t
w
,
...
...
@@ -101,13 +78,13 @@ static void sub_hfyu_median_pred_mmxext(uint8_t *dst, const uint8_t *src1,
av_cold
void
ff_huffyuvencdsp_init_x86
(
HuffYUVEncDSPContext
*
c
)
{
#if HAVE_INLINE_ASM
int
cpu_flags
=
av_get_cpu_flags
();
av_unused
int
cpu_flags
=
av_get_cpu_flags
();
if
(
INLINE
_MMX
(
cpu_flags
))
{
c
->
diff_bytes
=
diff_bytes_mmx
;
if
(
EXTERNAL
_MMX
(
cpu_flags
))
{
c
->
diff_bytes
=
ff_
diff_bytes_mmx
;
}
#if HAVE_INLINE_ASM
if
(
INLINE_MMXEXT
(
cpu_flags
))
{
c
->
sub_hfyu_median_pred
=
sub_hfyu_median_pred_mmxext
;
}
...
...
libavfilter/vf_psnr.c
浏览文件 @
c437d4aa
...
...
@@ -193,7 +193,9 @@ static av_cold int init(AVFilterContext *ctx)
s
->
min_mse
=
+
INFINITY
;
s
->
max_mse
=
-
INFINITY
;
if
(
s
->
stats_file_str
)
{
if
(
!
strcmp
(
s
->
stats_file_str
,
"-"
))
{
s
->
stats_file
=
stdout
;
}
else
if
(
s
->
stats_file_str
)
{
s
->
stats_file
=
fopen
(
s
->
stats_file_str
,
"w"
);
if
(
!
s
->
stats_file
)
{
int
err
=
AVERROR
(
errno
);
...
...
@@ -334,7 +336,7 @@ static av_cold void uninit(AVFilterContext *ctx)
ff_dualinput_uninit
(
&
s
->
dinput
);
if
(
s
->
stats_file
)
if
(
s
->
stats_file
&&
s
->
stats_file
!=
stdout
)
fclose
(
s
->
stats_file
);
}
...
...
libavformat/Makefile
浏览文件 @
c437d4aa
...
...
@@ -280,6 +280,7 @@ OBJS-$(CONFIG_MPEGVIDEO_DEMUXER) += mpegvideodec.o rawdec.o
OBJS-$(CONFIG_MPJPEG_DEMUXER)
+=
mpjpegdec.o
OBJS-$(CONFIG_MPJPEG_MUXER)
+=
mpjpeg.o
OBJS-$(CONFIG_MPL2_DEMUXER)
+=
mpl2dec.o subtitles.o
OBJS-$(CONFIG_MSF_DEMUXER)
+=
msf.o
OBJS-$(CONFIG_MPSUB_DEMUXER)
+=
mpsubdec.o subtitles.o
OBJS-$(CONFIG_MSNWC_TCP_DEMUXER)
+=
msnwc_tcp.o
OBJS-$(CONFIG_MTV_DEMUXER)
+=
mtv.o
...
...
@@ -480,6 +481,7 @@ OBJS-$(CONFIG_WTV_DEMUXER) += wtvdec.o wtv_common.o asf.o \
OBJS-$(CONFIG_WTV_MUXER)
+=
wtvenc.o wtv_common.o
\
mpegtsenc.o asf.o
OBJS-$(CONFIG_WV_DEMUXER)
+=
wvdec.o wv.o apetag.o img2.o
OBJS-$(CONFIG_WVE_DEMUXER)
+=
wvedec.o pcm.o
OBJS-$(CONFIG_WV_MUXER)
+=
wvenc.o wv.o apetag.o img2.o
OBJS-$(CONFIG_XA_DEMUXER)
+=
xa.o
OBJS-$(CONFIG_XBIN_DEMUXER)
+=
bintext.o sauce.o
...
...
libavformat/allformats.c
浏览文件 @
c437d4aa
...
...
@@ -206,6 +206,7 @@ void av_register_all(void)
REGISTER_MUXDEMUX
(
MPJPEG
,
mpjpeg
);
REGISTER_DEMUXER
(
MPL2
,
mpl2
);
REGISTER_DEMUXER
(
MPSUB
,
mpsub
);
REGISTER_DEMUXER
(
MSF
,
msf
);
REGISTER_DEMUXER
(
MSNWC_TCP
,
msnwc_tcp
);
REGISTER_DEMUXER
(
MTV
,
mtv
);
REGISTER_DEMUXER
(
MV
,
mv
);
...
...
@@ -330,6 +331,7 @@ void av_register_all(void)
REGISTER_DEMUXER
(
WSAUD
,
wsaud
);
REGISTER_DEMUXER
(
WSVQA
,
wsvqa
);
REGISTER_MUXDEMUX
(
WTV
,
wtv
);
REGISTER_DEMUXER
(
WVE
,
wve
);
REGISTER_MUXDEMUX
(
WV
,
wv
);
REGISTER_DEMUXER
(
XA
,
xa
);
REGISTER_DEMUXER
(
XBIN
,
xbin
);
...
...
libavformat/mp3dec.c
浏览文件 @
c437d4aa
...
...
@@ -42,6 +42,9 @@
#define XING_TOC_COUNT 100
#define SAME_HEADER_MASK \
(0xffe00000 | (3 << 17) | (3 << 10) | (3 << 19))
typedef
struct
{
AVClass
*
class
;
int64_t
filesize
;
...
...
@@ -54,7 +57,7 @@ typedef struct {
int
is_cbr
;
}
MP3DecContext
;
static
int
check
(
AVIOContext
*
pb
,
int64_t
pos
);
static
int
check
(
AVIOContext
*
pb
,
int64_t
pos
,
uint32_t
*
header
);
/* mp3 read */
...
...
@@ -374,13 +377,22 @@ static int mp3_read_header(AVFormatContext *s)
off
=
avio_tell
(
s
->
pb
);
for
(
i
=
0
;
i
<
64
*
1024
;
i
++
)
{
uint32_t
header
,
header2
;
int
frame_size
;
if
(
!
(
i
&
1023
))
ffio_ensure_seekback
(
s
->
pb
,
i
+
1024
+
4
);
if
(
check
(
s
->
pb
,
off
+
i
)
>=
0
)
{
frame_size
=
check
(
s
->
pb
,
off
+
i
,
&
header
);
if
(
frame_size
>
0
)
{
avio_seek
(
s
->
pb
,
off
,
SEEK_SET
);
ffio_ensure_seekback
(
s
->
pb
,
i
+
1024
+
frame_size
+
4
);
if
(
check
(
s
->
pb
,
off
+
i
+
frame_size
,
&
header2
)
>=
0
&&
(
header
&
SAME_HEADER_MASK
)
==
(
header2
&
SAME_HEADER_MASK
))
{
av_log
(
s
,
AV_LOG_INFO
,
"Skipping %d bytes of junk at %"
PRId64
".
\n
"
,
i
,
off
);
avio_seek
(
s
->
pb
,
off
+
i
,
SEEK_SET
);
break
;
}
}
avio_seek
(
s
->
pb
,
off
,
SEEK_SET
);
}
...
...
@@ -420,7 +432,7 @@ static int mp3_read_packet(AVFormatContext *s, AVPacket *pkt)
#define SEEK_WINDOW 4096
static
int
check
(
AVIOContext
*
pb
,
int64_t
pos
)
static
int
check
(
AVIOContext
*
pb
,
int64_t
pos
,
uint32_t
*
ret_header
)
{
int64_t
ret
=
avio_seek
(
pb
,
pos
,
SEEK_SET
);
unsigned
header
;
...
...
@@ -434,6 +446,8 @@ static int check(AVIOContext *pb, int64_t pos)
if
(
avpriv_mpegaudio_decode_header
(
&
sd
,
header
)
==
1
)
return
-
1
;
if
(
ret_header
)
*
ret_header
=
header
;
return
sd
.
frame_size
;
}
...
...
@@ -461,7 +475,7 @@ static int64_t mp3_sync(AVFormatContext *s, int64_t target_pos, int flags)
continue
;
for
(
j
=
0
;
j
<
MIN_VALID
;
j
++
)
{
ret
=
check
(
s
->
pb
,
pos
);
ret
=
check
(
s
->
pb
,
pos
,
NULL
);
if
(
ret
<
0
)
break
;
if
((
target_pos
-
pos
)
*
dir
<=
0
&&
abs
(
MIN_VALID
/
2
-
j
)
<
score
)
{
...
...
libavformat/msf.c
0 → 100644
浏览文件 @
c437d4aa
/*
* MSF demuxer
* Copyright (c) 2015 Paul B Mahol
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavutil/intreadwrite.h"
#include "avformat.h"
#include "internal.h"
static
int
msf_probe
(
AVProbeData
*
p
)
{
if
(
memcmp
(
p
->
buf
,
"MSF"
,
3
))
return
0
;
if
(
AV_RB32
(
p
->
buf
+
8
)
<=
0
)
return
0
;
if
(
AV_RB32
(
p
->
buf
+
16
)
<=
0
)
return
0
;
return
AVPROBE_SCORE_MAX
/
3
*
2
;
}
static
int
msf_read_header
(
AVFormatContext
*
s
)
{
unsigned
codec
,
align
,
size
;
AVStream
*
st
;
avio_skip
(
s
->
pb
,
4
);
st
=
avformat_new_stream
(
s
,
NULL
);
if
(
!
st
)
return
AVERROR
(
ENOMEM
);
st
->
codec
->
codec_type
=
AVMEDIA_TYPE_AUDIO
;
codec
=
avio_rb32
(
s
->
pb
);
st
->
codec
->
channels
=
avio_rb32
(
s
->
pb
);
if
(
st
->
codec
->
channels
<=
0
)
return
AVERROR_INVALIDDATA
;
size
=
avio_rb32
(
s
->
pb
);
st
->
codec
->
sample_rate
=
avio_rb32
(
s
->
pb
);
if
(
st
->
codec
->
sample_rate
<=
0
)
return
AVERROR_INVALIDDATA
;
align
=
avio_rb32
(
s
->
pb
)
;
if
(
align
>
INT_MAX
/
st
->
codec
->
channels
)
return
AVERROR_INVALIDDATA
;
st
->
codec
->
block_align
=
align
;
switch
(
codec
)
{
case
0
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_S16BE
;
break
;
case
3
:
st
->
codec
->
block_align
=
16
*
st
->
codec
->
channels
;
st
->
codec
->
codec_id
=
AV_CODEC_ID_ADPCM_PSX
;
break
;
case
7
:
st
->
need_parsing
=
AVSTREAM_PARSE_FULL_RAW
;
st
->
codec
->
codec_id
=
AV_CODEC_ID_MP3
;
break
;
default:
avpriv_request_sample
(
s
,
"Codec %d"
,
codec
);
return
AVERROR_PATCHWELCOME
;
}
st
->
duration
=
av_get_audio_frame_duration
(
st
->
codec
,
size
);
avio_skip
(
s
->
pb
,
0x40
-
avio_tell
(
s
->
pb
));
avpriv_set_pts_info
(
st
,
64
,
1
,
st
->
codec
->
sample_rate
);
return
0
;
}
static
int
msf_read_packet
(
AVFormatContext
*
s
,
AVPacket
*
pkt
)
{
AVCodecContext
*
codec
=
s
->
streams
[
0
]
->
codec
;
return
av_get_packet
(
s
->
pb
,
pkt
,
codec
->
block_align
?
codec
->
block_align
:
1024
*
codec
->
channels
);
}
AVInputFormat
ff_msf_demuxer
=
{
.
name
=
"msf"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"MSF"
),
.
read_probe
=
msf_probe
,
.
read_header
=
msf_read_header
,
.
read_packet
=
msf_read_packet
,
.
extensions
=
"msf"
,
};
libavformat/version.h
浏览文件 @
c437d4aa
...
...
@@ -30,8 +30,8 @@
#include "libavutil/version.h"
#define LIBAVFORMAT_VERSION_MAJOR 57
#define LIBAVFORMAT_VERSION_MINOR
8
#define LIBAVFORMAT_VERSION_MICRO 10
2
#define LIBAVFORMAT_VERSION_MINOR
10
#define LIBAVFORMAT_VERSION_MICRO 10
0
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \
...
...
libavformat/wvedec.c
0 → 100644
浏览文件 @
c437d4aa
/*
* Copyright (c) 2015 Paul B Mahol
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "avformat.h"
#include "internal.h"
#include "pcm.h"
static
int
wve_probe
(
AVProbeData
*
p
)
{
if
(
memcmp
(
p
->
buf
,
"ALawSoundFile**
\0\017\020
"
,
18
)
||
memcmp
(
p
->
buf
+
22
,
"
\0\0\0\1\0\0\0\0\0\0
"
,
10
))
return
0
;
return
AVPROBE_SCORE_MAX
;
}
static
int
wve_read_header
(
AVFormatContext
*
s
)
{
AVStream
*
st
;
st
=
avformat_new_stream
(
s
,
NULL
);
if
(
!
st
)
return
AVERROR
(
ENOMEM
);
avio_skip
(
s
->
pb
,
18
);
st
->
duration
=
avio_rb32
(
s
->
pb
);
st
->
codec
->
codec_type
=
AVMEDIA_TYPE_AUDIO
;
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_ALAW
;
st
->
codec
->
sample_rate
=
8000
;
st
->
codec
->
channels
=
1
;
st
->
codec
->
bits_per_coded_sample
=
av_get_bits_per_sample
(
st
->
codec
->
codec_id
);
st
->
codec
->
block_align
=
st
->
codec
->
bits_per_coded_sample
*
st
->
codec
->
channels
/
8
;
avpriv_set_pts_info
(
st
,
64
,
1
,
st
->
codec
->
sample_rate
);
avio_skip
(
s
->
pb
,
10
);
return
0
;
}
AVInputFormat
ff_wve_demuxer
=
{
.
name
=
"wve"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Psion 3 audio"
),
.
read_probe
=
wve_probe
,
.
read_header
=
wve_read_header
,
.
read_packet
=
ff_pcm_read_packet
,
.
read_seek
=
ff_pcm_read_seek
,
};
libavutil/Makefile
浏览文件 @
c437d4aa
...
...
@@ -20,6 +20,7 @@ HEADERS = adler32.h \
common.h
\
cpu.h
\
crc.h
\
des.h
\
display.h
\
downmix_info.h
\
error.h
\
...
...
@@ -47,6 +48,7 @@ HEADERS = adler32.h \
pixelutils.h
\
pixfmt.h
\
random_seed.h
\
rc4.h
\
replaygain.h
\
rational.h
\
ripemd.h
\
...
...
@@ -58,6 +60,7 @@ HEADERS = adler32.h \
time.h
\
timecode.h
\
timestamp.h
\
tree.h
\
twofish.h
\
version.h
\
xtea.h
\
...
...
libavutil/float_dsp.c
浏览文件 @
c437d4aa
...
...
@@ -116,8 +116,12 @@ float avpriv_scalarproduct_float_c(const float *v1, const float *v2, int len)
return
p
;
}
av_cold
void
avpriv_float_dsp_init
(
AVFloatDSPContext
*
fdsp
,
int
bit_exact
)
av_cold
AVFloatDSPContext
*
avpriv_float_dsp_alloc
(
int
bit_exact
)
{
AVFloatDSPContext
*
fdsp
=
av_mallocz
(
sizeof
(
AVFloatDSPContext
));
if
(
!
fdsp
)
return
NULL
;
fdsp
->
vector_fmul
=
vector_fmul_c
;
fdsp
->
vector_fmac_scalar
=
vector_fmac_scalar_c
;
fdsp
->
vector_fmul_scalar
=
vector_fmul_scalar_c
;
...
...
@@ -138,14 +142,7 @@ av_cold void avpriv_float_dsp_init(AVFloatDSPContext *fdsp, int bit_exact)
ff_float_dsp_init_x86
(
fdsp
);
if
(
ARCH_MIPS
)
ff_float_dsp_init_mips
(
fdsp
);
}
av_cold
AVFloatDSPContext
*
avpriv_float_dsp_alloc
(
int
bit_exact
)
{
AVFloatDSPContext
*
ret
=
av_mallocz
(
sizeof
(
AVFloatDSPContext
));
if
(
ret
)
avpriv_float_dsp_init
(
ret
,
bit_exact
);
return
ret
;
return
fdsp
;
}
...
...
@@ -386,7 +383,7 @@ int main(int argc, char **argv)
{
int
ret
=
0
,
seeded
=
0
;
uint32_t
seed
;
AVFloatDSPContext
fdsp
,
cdsp
;
AVFloatDSPContext
*
fdsp
,
*
cdsp
;
AVLFG
lfg
;
LOCAL_ALIGNED
(
32
,
float
,
src0
,
[
LEN
]);
...
...
@@ -421,6 +418,15 @@ int main(int argc, char **argv)
av_log
(
NULL
,
AV_LOG_INFO
,
"float_dsp-test: %s %u
\n
"
,
seeded
?
"seed"
:
"random seed"
,
seed
);
fdsp
=
avpriv_float_dsp_alloc
(
1
);
av_force_cpu_flags
(
0
);
cdsp
=
avpriv_float_dsp_alloc
(
1
);
if
(
!
fdsp
||
!
cdsp
)
{
ret
=
1
;
goto
end
;
}
av_lfg_init
(
&
lfg
,
seed
);
fill_float_array
(
&
lfg
,
src0
,
LEN
);
...
...
@@ -430,29 +436,28 @@ int main(int argc, char **argv)
fill_double_array
(
&
lfg
,
dbl_src0
,
LEN
);
fill_double_array
(
&
lfg
,
dbl_src1
,
LEN
);
avpriv_float_dsp_init
(
&
fdsp
,
1
);
av_force_cpu_flags
(
0
);
avpriv_float_dsp_init
(
&
cdsp
,
1
);
if
(
test_vector_fmul
(
&
fdsp
,
&
cdsp
,
src0
,
src1
))
if
(
test_vector_fmul
(
fdsp
,
cdsp
,
src0
,
src1
))
ret
-=
1
<<
0
;
if
(
test_vector_fmac_scalar
(
&
fdsp
,
&
cdsp
,
src2
,
src0
,
src1
[
0
]))
if
(
test_vector_fmac_scalar
(
fdsp
,
cdsp
,
src2
,
src0
,
src1
[
0
]))
ret
-=
1
<<
1
;
if
(
test_vector_fmul_scalar
(
&
fdsp
,
&
cdsp
,
src0
,
src1
[
0
]))
if
(
test_vector_fmul_scalar
(
fdsp
,
cdsp
,
src0
,
src1
[
0
]))
ret
-=
1
<<
2
;
if
(
test_vector_fmul_window
(
&
fdsp
,
&
cdsp
,
src0
,
src1
,
src2
))
if
(
test_vector_fmul_window
(
fdsp
,
cdsp
,
src0
,
src1
,
src2
))
ret
-=
1
<<
3
;
if
(
test_vector_fmul_add
(
&
fdsp
,
&
cdsp
,
src0
,
src1
,
src2
))
if
(
test_vector_fmul_add
(
fdsp
,
cdsp
,
src0
,
src1
,
src2
))
ret
-=
1
<<
4
;
if
(
test_vector_fmul_reverse
(
&
fdsp
,
&
cdsp
,
src0
,
src1
))
if
(
test_vector_fmul_reverse
(
fdsp
,
cdsp
,
src0
,
src1
))
ret
-=
1
<<
5
;
if
(
test_butterflies_float
(
&
fdsp
,
&
cdsp
,
src0
,
src1
))
if
(
test_butterflies_float
(
fdsp
,
cdsp
,
src0
,
src1
))
ret
-=
1
<<
6
;
if
(
test_scalarproduct_float
(
&
fdsp
,
&
cdsp
,
src0
,
src1
))
if
(
test_scalarproduct_float
(
fdsp
,
cdsp
,
src0
,
src1
))
ret
-=
1
<<
7
;
if
(
test_vector_dmul_scalar
(
&
fdsp
,
&
cdsp
,
dbl_src0
,
dbl_src1
[
0
]))
if
(
test_vector_dmul_scalar
(
fdsp
,
cdsp
,
dbl_src0
,
dbl_src1
[
0
]))
ret
-=
1
<<
8
;
end:
av_freep
(
&
fdsp
);
av_freep
(
&
cdsp
);
return
ret
;
}
...
...
libavutil/float_dsp.h
浏览文件 @
c437d4aa
...
...
@@ -170,15 +170,6 @@ typedef struct AVFloatDSPContext {
*/
float
avpriv_scalarproduct_float_c
(
const
float
*
v1
,
const
float
*
v2
,
int
len
);
/**
* Initialize a float DSP context.
*
* @param fdsp float DSP context
* @param strict setting to non-zero avoids using functions which may not be IEEE-754 compliant
*/
void
avpriv_float_dsp_init
(
AVFloatDSPContext
*
fdsp
,
int
strict
);
void
ff_float_dsp_init_aarch64
(
AVFloatDSPContext
*
fdsp
);
void
ff_float_dsp_init_arm
(
AVFloatDSPContext
*
fdsp
);
void
ff_float_dsp_init_ppc
(
AVFloatDSPContext
*
fdsp
,
int
strict
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录