Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
0e78ef0f
Commit
0e78ef0f
authored
Jul 10, 2013
by
Luca Barbato
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
flac: use meaningful return values
parent
f1cb490d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
40 deletions
+40
-40
flac.c
libavcodec/flac.c
+8
-8
flacdec.c
libavcodec/flacdec.c
+32
-32
No files found.
libavcodec/flac.c
View file @
0e78ef0f
...
...
@@ -55,7 +55,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
/* frame sync code */
if
((
get_bits
(
gb
,
15
)
&
0x7FFF
)
!=
0x7FFC
)
{
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"invalid sync code
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
/* variable block size stream code */
...
...
@@ -76,7 +76,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
}
else
{
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"invalid channel mode: %d
\n
"
,
fi
->
ch_mode
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
/* bits per sample */
...
...
@@ -85,7 +85,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"invalid sample size code (%d)
\n
"
,
bps_code
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
fi
->
bps
=
sample_size_table
[
bps_code
];
...
...
@@ -93,7 +93,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
if
(
get_bits1
(
gb
))
{
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"broken stream, invalid padding
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
/* sample or frame count */
...
...
@@ -101,14 +101,14 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
if
(
fi
->
frame_or_sample_num
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"sample/frame number invalid; utf8 fscked
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
/* blocksize */
if
(
bs_code
==
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"reserved blocksize code: 0
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
else
if
(
bs_code
==
6
)
{
fi
->
blocksize
=
get_bits
(
gb
,
8
)
+
1
;
}
else
if
(
bs_code
==
7
)
{
...
...
@@ -130,7 +130,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"illegal sample rate code %d
\n
"
,
sr_code
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
/* header CRC-8 check */
...
...
@@ -139,7 +139,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
get_bits_count
(
gb
)
/
8
))
{
av_log
(
avctx
,
AV_LOG_ERROR
+
log_level_offset
,
"header crc mismatch
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
return
0
;
...
...
libavcodec/flacdec.c
View file @
0e78ef0f
...
...
@@ -100,7 +100,7 @@ static av_cold int flac_decode_init(AVCodecContext *avctx)
return
0
;
if
(
!
avpriv_flac_is_extradata_valid
(
avctx
,
&
format
,
&
streaminfo
))
return
-
1
;
return
AVERROR_INVALIDDATA
;
/* initialize based on the demuxer-supplied streamdata header */
avpriv_flac_parse_streaminfo
(
avctx
,
(
FLACStreaminfo
*
)
s
,
streaminfo
);
...
...
@@ -209,7 +209,7 @@ static int decode_residuals(FLACContext *s, int32_t *decoded, int pred_order)
if
(
method_type
>
1
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"illegal residual coding method %d
\n
"
,
method_type
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
rice_order
=
get_bits
(
&
s
->
gb
,
4
);
...
...
@@ -218,7 +218,7 @@ static int decode_residuals(FLACContext *s, int32_t *decoded, int pred_order)
if
(
pred_order
>
samples
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"invalid predictor order: %i > %i
\n
"
,
pred_order
,
samples
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
rice_bits
=
4
+
method_type
;
...
...
@@ -247,15 +247,15 @@ static int decode_subframe_fixed(FLACContext *s, int32_t *decoded,
int
pred_order
,
int
bps
)
{
const
int
blocksize
=
s
->
blocksize
;
int
a
,
b
,
c
,
d
,
i
;
int
a
,
b
,
c
,
d
,
i
,
ret
;
/* warm up samples */
for
(
i
=
0
;
i
<
pred_order
;
i
++
)
{
decoded
[
i
]
=
get_sbits_long
(
&
s
->
gb
,
bps
);
}
if
(
decode_residuals
(
s
,
decoded
,
pred_order
)
<
0
)
return
-
1
;
if
(
(
ret
=
decode_residuals
(
s
,
decoded
,
pred_order
)
)
<
0
)
return
ret
;
if
(
pred_order
>
0
)
a
=
decoded
[
pred_order
-
1
];
...
...
@@ -287,7 +287,7 @@ static int decode_subframe_fixed(FLACContext *s, int32_t *decoded,
break
;
default:
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"illegal pred order %d
\n
"
,
pred_order
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
return
0
;
...
...
@@ -296,7 +296,7 @@ static int decode_subframe_fixed(FLACContext *s, int32_t *decoded,
static
int
decode_subframe_lpc
(
FLACContext
*
s
,
int32_t
*
decoded
,
int
pred_order
,
int
bps
)
{
int
i
;
int
i
,
ret
;
int
coeff_prec
,
qlevel
;
int
coeffs
[
32
];
...
...
@@ -308,21 +308,21 @@ static int decode_subframe_lpc(FLACContext *s, int32_t *decoded, int pred_order,
coeff_prec
=
get_bits
(
&
s
->
gb
,
4
)
+
1
;
if
(
coeff_prec
==
16
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"invalid coeff precision
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
qlevel
=
get_sbits
(
&
s
->
gb
,
5
);
if
(
qlevel
<
0
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"qlevel %d not supported, maybe buggy stream
\n
"
,
qlevel
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
for
(
i
=
0
;
i
<
pred_order
;
i
++
)
{
coeffs
[
pred_order
-
i
-
1
]
=
get_sbits
(
&
s
->
gb
,
coeff_prec
);
}
if
(
decode_residuals
(
s
,
decoded
,
pred_order
)
<
0
)
return
-
1
;
if
(
(
ret
=
decode_residuals
(
s
,
decoded
,
pred_order
)
)
<
0
)
return
ret
;
s
->
dsp
.
lpc
(
decoded
,
coeffs
,
pred_order
,
qlevel
,
s
->
blocksize
);
...
...
@@ -334,7 +334,7 @@ static inline int decode_subframe(FLACContext *s, int channel)
int32_t
*
decoded
=
s
->
decoded
[
channel
];
int
type
,
wasted
=
0
;
int
bps
=
s
->
bps
;
int
i
,
tmp
;
int
i
,
tmp
,
ret
;
if
(
channel
==
0
)
{
if
(
s
->
ch_mode
==
FLAC_CHMODE_RIGHT_SIDE
)
...
...
@@ -346,7 +346,7 @@ static inline int decode_subframe(FLACContext *s, int channel)
if
(
get_bits1
(
&
s
->
gb
))
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"invalid subframe padding
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
type
=
get_bits
(
&
s
->
gb
,
6
);
...
...
@@ -379,14 +379,14 @@ static inline int decode_subframe(FLACContext *s, int channel)
for
(
i
=
0
;
i
<
s
->
blocksize
;
i
++
)
decoded
[
i
]
=
get_sbits_long
(
&
s
->
gb
,
bps
);
}
else
if
((
type
>=
8
)
&&
(
type
<=
12
))
{
if
(
decode_subframe_fixed
(
s
,
decoded
,
type
&
~
0x8
,
bps
)
<
0
)
return
-
1
;
if
(
(
ret
=
decode_subframe_fixed
(
s
,
decoded
,
type
&
~
0x8
,
bps
)
)
<
0
)
return
ret
;
}
else
if
(
type
>=
32
)
{
if
(
decode_subframe_lpc
(
s
,
decoded
,
(
type
&
~
0x20
)
+
1
,
bps
)
<
0
)
return
-
1
;
if
(
(
ret
=
decode_subframe_lpc
(
s
,
decoded
,
(
type
&
~
0x20
)
+
1
,
bps
)
)
<
0
)
return
ret
;
}
else
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"invalid coding type
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
if
(
wasted
)
{
...
...
@@ -404,9 +404,9 @@ static int decode_frame(FLACContext *s)
GetBitContext
*
gb
=
&
s
->
gb
;
FLACFrameInfo
fi
;
if
(
ff_flac_decode_frame_header
(
s
->
avctx
,
gb
,
&
fi
,
0
)
)
{
if
(
(
ret
=
ff_flac_decode_frame_header
(
s
->
avctx
,
gb
,
&
fi
,
0
))
<
0
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"invalid frame header
\n
"
);
return
-
1
;
return
ret
;
}
if
(
s
->
channels
&&
fi
.
channels
!=
s
->
channels
&&
s
->
got_streaminfo
)
{
...
...
@@ -423,14 +423,14 @@ static int decode_frame(FLACContext *s)
if
(
!
s
->
bps
&&
!
fi
.
bps
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"bps not found in STREAMINFO or frame header
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
if
(
!
fi
.
bps
)
{
fi
.
bps
=
s
->
bps
;
}
else
if
(
s
->
bps
&&
fi
.
bps
!=
s
->
bps
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"switching bps mid-stream is not "
"supported
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
if
(
!
s
->
bps
)
{
...
...
@@ -443,14 +443,14 @@ static int decode_frame(FLACContext *s)
if
(
fi
.
blocksize
>
s
->
max_blocksize
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"blocksize %d > %d
\n
"
,
fi
.
blocksize
,
s
->
max_blocksize
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
s
->
blocksize
=
fi
.
blocksize
;
if
(
!
s
->
samplerate
&&
!
fi
.
samplerate
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"sample rate not found in STREAMINFO"
" or frame header
\n
"
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
if
(
fi
.
samplerate
==
0
)
fi
.
samplerate
=
s
->
samplerate
;
...
...
@@ -469,8 +469,8 @@ static int decode_frame(FLACContext *s)
/* subframes */
for
(
i
=
0
;
i
<
s
->
channels
;
i
++
)
{
if
(
decode_subframe
(
s
,
i
)
<
0
)
return
-
1
;
if
(
(
ret
=
decode_subframe
(
s
,
i
)
)
<
0
)
return
ret
;
}
align_get_bits
(
gb
);
...
...
@@ -507,18 +507,18 @@ static int flac_decode_frame(AVCodecContext *avctx, void *data,
/* check for inline header */
if
(
AV_RB32
(
buf
)
==
MKBETAG
(
'f'
,
'L'
,
'a'
,
'C'
))
{
if
(
!
s
->
got_streaminfo
&&
parse_streaminfo
(
s
,
buf
,
buf_size
))
{
if
(
!
s
->
got_streaminfo
&&
(
ret
=
parse_streaminfo
(
s
,
buf
,
buf_size
)
))
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"invalid header
\n
"
);
return
-
1
;
return
ret
;
}
return
get_metadata_size
(
buf
,
buf_size
);
}
/* decode frame */
init_get_bits
(
&
s
->
gb
,
buf
,
buf_size
*
8
);
if
(
decode_frame
(
s
)
<
0
)
{
if
(
(
ret
=
decode_frame
(
s
)
)
<
0
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"decode_frame() failed
\n
"
);
return
-
1
;
return
ret
;
}
bytes_read
=
(
get_bits_count
(
&
s
->
gb
)
+
7
)
/
8
;
...
...
@@ -534,7 +534,7 @@ static int flac_decode_frame(AVCodecContext *avctx, void *data,
if
(
bytes_read
>
buf_size
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"overread: %d
\n
"
,
bytes_read
-
buf_size
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
if
(
bytes_read
<
buf_size
)
{
av_log
(
s
->
avctx
,
AV_LOG_DEBUG
,
"underread: %d orig size: %d
\n
"
,
...
...
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