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
7b62d341
Commit
7b62d341
authored
Sep 10, 2012
by
Stefano Sabatini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc/h263dec: return or propagate proper error codes
parent
ac006d29
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
18 deletions
+21
-18
h263dec.c
libavcodec/h263dec.c
+21
-18
No files found.
libavcodec/h263dec.c
View file @
7b62d341
...
...
@@ -47,6 +47,7 @@
av_cold
int
ff_h263_decode_init
(
AVCodecContext
*
avctx
)
{
MpegEncContext
*
s
=
avctx
->
priv_data
;
int
ret
;
s
->
avctx
=
avctx
;
s
->
out_format
=
FMT_H263
;
...
...
@@ -110,15 +111,15 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx)
s
->
h263_flv
=
1
;
break
;
default:
return
-
1
;
return
AVERROR
(
EINVAL
)
;
}
s
->
codec_id
=
avctx
->
codec
->
id
;
avctx
->
hwaccel
=
ff_find_hwaccel
(
avctx
->
codec
->
id
,
avctx
->
pix_fmt
);
/* for h263, we allocate the images after having read the header */
if
(
avctx
->
codec
->
id
!=
AV_CODEC_ID_H263
&&
avctx
->
codec
->
id
!=
AV_CODEC_ID_H263P
&&
avctx
->
codec
->
id
!=
AV_CODEC_ID_MPEG4
)
if
(
ff_MPV_common_init
(
s
)
<
0
)
return
-
1
;
if
(
(
ret
=
ff_MPV_common_init
(
s
)
)
<
0
)
return
ret
;
ff_h263_decode_init_vlc
(
s
);
...
...
@@ -157,6 +158,8 @@ static int get_consumed_bytes(MpegEncContext *s, int buf_size){
static
int
decode_slice
(
MpegEncContext
*
s
){
const
int
part_mask
=
s
->
partitioned_frame
?
(
ER_AC_END
|
ER_AC_ERROR
)
:
0x7F
;
const
int
mb_size
=
16
>>
s
->
avctx
->
lowres
;
int
ret
;
s
->
last_resync_gb
=
s
->
gb
;
s
->
first_slice_line
=
1
;
...
...
@@ -176,8 +179,8 @@ static int decode_slice(MpegEncContext *s){
const
int
qscale
=
s
->
qscale
;
if
(
CONFIG_MPEG4_DECODER
&&
s
->
codec_id
==
AV_CODEC_ID_MPEG4
){
if
(
ff_mpeg4_decode_partitions
(
s
)
<
0
)
return
-
1
;
if
((
ret
=
ff_mpeg4_decode_partitions
(
s
)
)
<
0
)
return
ret
;
}
/* restore variables which were modified */
...
...
@@ -246,12 +249,12 @@ static int decode_slice(MpegEncContext *s){
}
else
if
(
ret
==
SLICE_NOEND
){
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"Slice mismatch at MB: %d
\n
"
,
xy
);
ff_er_add_slice
(
s
,
s
->
resync_mb_x
,
s
->
resync_mb_y
,
s
->
mb_x
+
1
,
s
->
mb_y
,
ER_MB_END
&
part_mask
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"Error at MB: %d
\n
"
,
xy
);
ff_er_add_slice
(
s
,
s
->
resync_mb_x
,
s
->
resync_mb_y
,
s
->
mb_x
,
s
->
mb_y
,
ER_MB_ERROR
&
part_mask
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
ff_MPV_decode_mb
(
s
,
s
->
block
);
...
...
@@ -339,7 +342,7 @@ static int decode_slice(MpegEncContext *s){
ff_er_add_slice
(
s
,
s
->
resync_mb_x
,
s
->
resync_mb_y
,
s
->
mb_x
,
s
->
mb_y
,
ER_MB_END
&
part_mask
);
return
-
1
;
return
AVERROR_INVALIDDATA
;
}
int
ff_h263_decode_frame
(
AVCodecContext
*
avctx
,
...
...
@@ -382,7 +385,7 @@ uint64_t time= rdtsc();
next
=
ff_h263_find_frame_end
(
&
s
->
parse_context
,
buf
,
buf_size
);
}
else
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"this codec does not support truncated bitstreams
\n
"
);
return
-
1
;
return
AVERROR
(
EINVAL
)
;
}
if
(
ff_combine_frame
(
&
s
->
parse_context
,
next
,
(
const
uint8_t
**
)
&
buf
,
&
buf_size
)
<
0
)
...
...
@@ -411,8 +414,8 @@ retry:
s
->
bitstream_buffer_size
=
0
;
if
(
!
s
->
context_initialized
)
{
if
(
ff_MPV_common_init
(
s
)
<
0
)
//we need the idct permutaton for reading a custom matrix
return
-
1
;
if
(
(
ret
=
ff_MPV_common_init
(
s
)
)
<
0
)
//we need the idct permutaton for reading a custom matrix
return
ret
;
}
/* We need to set current_picture_ptr before reading the header,
...
...
@@ -458,7 +461,7 @@ retry:
/* skip if the header was thrashed */
if
(
ret
<
0
){
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"header damaged
\n
"
);
return
-
1
;
return
ret
;
}
else
if
((
s
->
width
!=
avctx
->
coded_width
||
s
->
height
!=
avctx
->
coded_height
||
(
s
->
width
+
15
)
>>
4
!=
s
->
mb_width
||
...
...
@@ -651,8 +654,8 @@ retry:
s
->
me
.
qpel_avg
=
s
->
dsp
.
avg_qpel_pixels_tab
;
}
if
(
ff_MPV_frame_start
(
s
,
avctx
)
<
0
)
return
-
1
;
if
((
ret
=
ff_MPV_frame_start
(
s
,
avctx
)
)
<
0
)
return
ret
;
if
(
!
s
->
divx_packed
)
ff_thread_finish_setup
(
avctx
);
...
...
@@ -662,8 +665,8 @@ retry:
}
if
(
avctx
->
hwaccel
)
{
if
(
avctx
->
hwaccel
->
start_frame
(
avctx
,
s
->
gb
.
buffer
,
s
->
gb
.
buffer_end
-
s
->
gb
.
buffer
)
<
0
)
return
-
1
;
if
(
(
ret
=
avctx
->
hwaccel
->
start_frame
(
avctx
,
s
->
gb
.
buffer
,
s
->
gb
.
buffer_end
-
s
->
gb
.
buffer
)
)
<
0
)
return
ret
;
}
ff_er_frame_start
(
s
);
...
...
@@ -737,8 +740,8 @@ intrax8_decoded:
ff_er_frame_end
(
s
);
if
(
avctx
->
hwaccel
)
{
if
(
avctx
->
hwaccel
->
end_frame
(
avctx
)
<
0
)
return
-
1
;
if
(
(
ret
=
avctx
->
hwaccel
->
end_frame
(
avctx
)
)
<
0
)
return
ret
;
}
ff_MPV_frame_end
(
s
);
...
...
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