Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
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
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