Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
8eea8fdc
Commit
8eea8fdc
authored
Jul 10, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
flac: Move flac functions shared between libraries to flac common code
This fixes a number of flac-related build dependencies.
parent
a5194633
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
86 deletions
+85
-86
Makefile
libavcodec/Makefile
+11
-13
flac.c
libavcodec/flac.c
+74
-0
flacdec.c
libavcodec/flacdec.c
+0
-73
No files found.
libavcodec/Makefile
View file @
8eea8fdc
...
...
@@ -566,19 +566,18 @@ OBJS-$(CONFIG_CAF_DEMUXER) += mpeg4audio.o mpegaudiodata.o \
ac3tab.o
OBJS-$(CONFIG_DV_DEMUXER)
+=
dv_profile.o
OBJS-$(CONFIG_DV_MUXER)
+=
dv_profile.o
OBJS-$(CONFIG_FLAC_DEMUXER)
+=
flac
dec.o
flacdata.o
flac
.o
OBJS-$(CONFIG_FLAC_MUXER)
+=
flac
dec.o
flacdata.o
flac
.o
OBJS-$(CONFIG_FLAC_DEMUXER)
+=
flac
.o
flacdata
.o
OBJS-$(CONFIG_FLAC_MUXER)
+=
flac
.o
flacdata
.o
OBJS-$(CONFIG_FLV_DEMUXER)
+=
mpeg4audio.o
OBJS-$(CONFIG_GXF_DEMUXER)
+=
mpeg12data.o
OBJS-$(CONFIG_IFF_DEMUXER)
+=
iff.o
OBJS-$(CONFIG_ISMV_MUXER)
+=
mpeg4audio.o
mpegaudiodata.o
OBJS-$(CONFIG_LATM_MUXER)
+=
mpeg4audio.o
OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)
+=
xiph.o
mpeg4audio.o
\
flac
dec.o
flacdata.o
flac
.o
OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)
+=
xiph.o
mpeg4audio.o
\
flac
.o
flacdata
.o
OBJS-$(CONFIG_MATROSKA_DEMUXER)
+=
mpeg4audio.o
mpegaudiodata.o
OBJS-$(CONFIG_MATROSKA_MUXER)
+=
xiph.o
mpeg4audio.o
\
flacdec.o
flacdata.o
flac.o
\
mpegaudiodata.o
OBJS-$(CONFIG_MATROSKA_MUXER)
+=
mpeg4audio.o
mpegaudiodata.o
\
flac.o
flacdata.o
xiph.o
OBJS-$(CONFIG_MP2_MUXER)
+=
mpegaudiodata.o
mpegaudiodecheader.o
OBJS-$(CONFIG_MP3_MUXER)
+=
mpegaudiodata.o
mpegaudiodecheader.o
OBJS-$(CONFIG_MOV_DEMUXER)
+=
mpeg4audio.o
mpegaudiodata.o
ac3tab.o
...
...
@@ -586,14 +585,13 @@ OBJS-$(CONFIG_MOV_MUXER) += mpeg4audio.o mpegaudiodata.o
OBJS-$(CONFIG_MPEGTS_MUXER)
+=
mpegvideo.o
mpeg4audio.o
OBJS-$(CONFIG_MPEGTS_DEMUXER)
+=
mpeg4audio.o
mpegaudiodata.o
OBJS-$(CONFIG_NUT_MUXER)
+=
mpegaudiodata.o
OBJS-$(CONFIG_OGG_DEMUXER)
+=
flac
dec.o
flacdata.o
flac.o
\
dirac.o
mpeg12data.o
vorbis_parser.o
OBJS-$(CONFIG_OGG_MUXER)
+=
xiph.o
flac
dec.o
flacdata.o
flac
.o
OBJS-$(CONFIG_OGG_DEMUXER)
+=
flac
.o
flacdata.o
dirac.o
\
mpeg12data.o
vorbis_parser.o
OBJS-$(CONFIG_OGG_MUXER)
+=
xiph.o
flac
.o
flacdata
.o
OBJS-$(CONFIG_RTP_MUXER)
+=
mpeg4audio.o
mpegvideo.o
xiph.o
OBJS-$(CONFIG_SPDIF_DEMUXER)
+=
aacadtsdec.o
mpeg4audio.o
OBJS-$(CONFIG_WEBM_MUXER)
+=
xiph.o
mpeg4audio.o
\
flacdec.o
flacdata.o
flac.o
\
mpegaudiodata.o
OBJS-$(CONFIG_WEBM_MUXER)
+=
mpeg4audio.o
mpegaudiodata.o
\
xiph.o
flac.o
flacdata.o
OBJS-$(CONFIG_WTV_DEMUXER)
+=
mpeg4audio.o
mpegaudiodata.o
# external codec libraries
...
...
libavcodec/flac.c
View file @
8eea8fdc
...
...
@@ -20,6 +20,9 @@
*/
#include "libavutil/crc.h"
#include "libavutil/log.h"
#include "bytestream.h"
#include "get_bits.h"
#include "flac.h"
#include "flacdata.h"
...
...
@@ -150,3 +153,74 @@ int ff_flac_get_max_frame_size(int blocksize, int ch, int bps)
return
count
;
}
int
avpriv_flac_is_extradata_valid
(
AVCodecContext
*
avctx
,
enum
FLACExtradataFormat
*
format
,
uint8_t
**
streaminfo_start
)
{
if
(
!
avctx
->
extradata
||
avctx
->
extradata_size
<
FLAC_STREAMINFO_SIZE
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"extradata NULL or too small.
\n
"
);
return
0
;
}
if
(
AV_RL32
(
avctx
->
extradata
)
!=
MKTAG
(
'f'
,
'L'
,
'a'
,
'C'
))
{
/* extradata contains STREAMINFO only */
if
(
avctx
->
extradata_size
!=
FLAC_STREAMINFO_SIZE
)
{
av_log
(
avctx
,
AV_LOG_WARNING
,
"extradata contains %d bytes too many.
\n
"
,
FLAC_STREAMINFO_SIZE
-
avctx
->
extradata_size
);
}
*
format
=
FLAC_EXTRADATA_FORMAT_STREAMINFO
;
*
streaminfo_start
=
avctx
->
extradata
;
}
else
{
if
(
avctx
->
extradata_size
<
8
+
FLAC_STREAMINFO_SIZE
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"extradata too small.
\n
"
);
return
0
;
}
*
format
=
FLAC_EXTRADATA_FORMAT_FULL_HEADER
;
*
streaminfo_start
=
&
avctx
->
extradata
[
8
];
}
return
1
;
}
void
avpriv_flac_parse_streaminfo
(
AVCodecContext
*
avctx
,
struct
FLACStreaminfo
*
s
,
const
uint8_t
*
buffer
)
{
GetBitContext
gb
;
init_get_bits
(
&
gb
,
buffer
,
FLAC_STREAMINFO_SIZE
*
8
);
skip_bits
(
&
gb
,
16
);
/* skip min blocksize */
s
->
max_blocksize
=
get_bits
(
&
gb
,
16
);
if
(
s
->
max_blocksize
<
FLAC_MIN_BLOCKSIZE
)
{
av_log
(
avctx
,
AV_LOG_WARNING
,
"invalid max blocksize: %d
\n
"
,
s
->
max_blocksize
);
s
->
max_blocksize
=
16
;
}
skip_bits
(
&
gb
,
24
);
/* skip min frame size */
s
->
max_framesize
=
get_bits_long
(
&
gb
,
24
);
s
->
samplerate
=
get_bits_long
(
&
gb
,
20
);
s
->
channels
=
get_bits
(
&
gb
,
3
)
+
1
;
s
->
bps
=
get_bits
(
&
gb
,
5
)
+
1
;
avctx
->
channels
=
s
->
channels
;
avctx
->
sample_rate
=
s
->
samplerate
;
avctx
->
bits_per_raw_sample
=
s
->
bps
;
s
->
samples
=
get_bits_long
(
&
gb
,
32
)
<<
4
;
s
->
samples
|=
get_bits
(
&
gb
,
4
);
skip_bits_long
(
&
gb
,
64
);
/* md5 sum */
skip_bits_long
(
&
gb
,
64
);
/* md5 sum */
}
void
avpriv_flac_parse_block_header
(
const
uint8_t
*
block_header
,
int
*
last
,
int
*
type
,
int
*
size
)
{
int
tmp
=
bytestream_get_byte
(
&
block_header
);
if
(
last
)
*
last
=
tmp
&
0x80
;
if
(
type
)
*
type
=
tmp
&
0x7F
;
if
(
size
)
*
size
=
bytestream_get_be24
(
&
block_header
);
}
libavcodec/flacdec.c
View file @
8eea8fdc
...
...
@@ -75,33 +75,6 @@ static const int64_t flac_channel_layouts[6] = {
static
void
allocate_buffers
(
FLACContext
*
s
);
int
avpriv_flac_is_extradata_valid
(
AVCodecContext
*
avctx
,
enum
FLACExtradataFormat
*
format
,
uint8_t
**
streaminfo_start
)
{
if
(
!
avctx
->
extradata
||
avctx
->
extradata_size
<
FLAC_STREAMINFO_SIZE
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"extradata NULL or too small.
\n
"
);
return
0
;
}
if
(
AV_RL32
(
avctx
->
extradata
)
!=
MKTAG
(
'f'
,
'L'
,
'a'
,
'C'
))
{
/* extradata contains STREAMINFO only */
if
(
avctx
->
extradata_size
!=
FLAC_STREAMINFO_SIZE
)
{
av_log
(
avctx
,
AV_LOG_WARNING
,
"extradata contains %d bytes too many.
\n
"
,
FLAC_STREAMINFO_SIZE
-
avctx
->
extradata_size
);
}
*
format
=
FLAC_EXTRADATA_FORMAT_STREAMINFO
;
*
streaminfo_start
=
avctx
->
extradata
;
}
else
{
if
(
avctx
->
extradata_size
<
8
+
FLAC_STREAMINFO_SIZE
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"extradata too small.
\n
"
);
return
0
;
}
*
format
=
FLAC_EXTRADATA_FORMAT_FULL_HEADER
;
*
streaminfo_start
=
&
avctx
->
extradata
[
8
];
}
return
1
;
}
static
void
flac_set_bps
(
FLACContext
*
s
)
{
enum
AVSampleFormat
req
=
s
->
avctx
->
request_sample_fmt
;
...
...
@@ -175,52 +148,6 @@ static void allocate_buffers(FLACContext *s)
}
}
void
avpriv_flac_parse_streaminfo
(
AVCodecContext
*
avctx
,
struct
FLACStreaminfo
*
s
,
const
uint8_t
*
buffer
)
{
GetBitContext
gb
;
init_get_bits
(
&
gb
,
buffer
,
FLAC_STREAMINFO_SIZE
*
8
);
skip_bits
(
&
gb
,
16
);
/* skip min blocksize */
s
->
max_blocksize
=
get_bits
(
&
gb
,
16
);
if
(
s
->
max_blocksize
<
FLAC_MIN_BLOCKSIZE
)
{
av_log
(
avctx
,
AV_LOG_WARNING
,
"invalid max blocksize: %d
\n
"
,
s
->
max_blocksize
);
s
->
max_blocksize
=
16
;
}
skip_bits
(
&
gb
,
24
);
/* skip min frame size */
s
->
max_framesize
=
get_bits_long
(
&
gb
,
24
);
s
->
samplerate
=
get_bits_long
(
&
gb
,
20
);
s
->
channels
=
get_bits
(
&
gb
,
3
)
+
1
;
s
->
bps
=
get_bits
(
&
gb
,
5
)
+
1
;
avctx
->
channels
=
s
->
channels
;
avctx
->
sample_rate
=
s
->
samplerate
;
avctx
->
bits_per_raw_sample
=
s
->
bps
;
s
->
samples
=
get_bits_long
(
&
gb
,
32
)
<<
4
;
s
->
samples
|=
get_bits
(
&
gb
,
4
);
skip_bits_long
(
&
gb
,
64
);
/* md5 sum */
skip_bits_long
(
&
gb
,
64
);
/* md5 sum */
dump_headers
(
avctx
,
s
);
}
void
avpriv_flac_parse_block_header
(
const
uint8_t
*
block_header
,
int
*
last
,
int
*
type
,
int
*
size
)
{
int
tmp
=
bytestream_get_byte
(
&
block_header
);
if
(
last
)
*
last
=
tmp
&
0x80
;
if
(
type
)
*
type
=
tmp
&
0x7F
;
if
(
size
)
*
size
=
bytestream_get_be24
(
&
block_header
);
}
/**
* Parse the STREAMINFO from an inline header.
* @param s the flac decoding context
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment