Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
aom-rav1e
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xiph.Org
aom-rav1e
Commits
f0fde243
Commit
f0fde243
authored
Jan 13, 2014
by
Dmitry Kovalev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding raw_read_frame() function to vpxdec.
Change-Id: Ie2a4606daf35b327d6f2ac8d7fd8f6cacf4c5b6a
parent
21a0c1f3
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
47 deletions
+51
-47
vpxdec.c
vpxdec.c
+51
-47
No files found.
vpxdec.c
View file @
f0fde243
...
@@ -167,64 +167,68 @@ void usage_exit() {
...
@@ -167,64 +167,68 @@ void usage_exit() {
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
static
int
read_frame
(
struct
VpxDecInputContext
*
input
,
static
int
raw_read_frame
(
struct
VpxInputContext
*
input_ctx
,
uint8_t
**
buffer
,
uint8_t
**
buf
,
size_t
*
bytes_read
,
size_t
*
buffer_size
)
{
size_t
*
bytes_in_buffer
,
size_t
*
buffer_size
)
{
char
raw_hdr
[
RAW_FRAME_HDR_SZ
];
char
raw_hdr
[
RAW_FRAME_HDR_SZ
];
size_t
bytes_to_read
=
0
;
size_t
frame_size
=
0
;
FILE
*
infile
=
input
->
vpx_input_ctx
->
file
;
FILE
*
infile
=
input_ctx
->
file
;
enum
VideoFileType
kind
=
input
->
vpx_input_ctx
->
file_type
;
if
(
kind
==
FILE_TYPE_WEBM
)
{
return
webm_read_frame
(
input
->
webm_ctx
,
buf
,
bytes_in_buffer
,
buffer_size
);
}
else
if
(
kind
==
FILE_TYPE_RAW
)
{
if
(
fread
(
raw_hdr
,
RAW_FRAME_HDR_SZ
,
1
,
infile
)
!=
1
)
{
if
(
fread
(
raw_hdr
,
RAW_FRAME_HDR_SZ
,
1
,
infile
)
!=
1
)
{
if
(
!
feof
(
infile
))
if
(
!
feof
(
infile
))
warn
(
"Failed to read RAW frame size
\n
"
);
warn
(
"Failed to read RAW frame size
\n
"
);
}
else
{
}
else
{
const
int
kCorruptFrameThreshold
=
256
*
1024
*
1024
;
const
int
kCorruptFrameThreshold
=
256
*
1024
*
1024
;
const
int
kFrameTooSmallThreshold
=
256
*
1024
;
const
int
kFrameTooSmallThreshold
=
256
*
1024
;
bytes_to_read
=
mem_get_le32
(
raw_hdr
);
frame_size
=
mem_get_le32
(
raw_hdr
);
if
(
bytes_to_read
>
kCorruptFrameThreshold
)
{
if
(
frame_size
>
kCorruptFrameThreshold
)
{
warn
(
"Read invalid frame size (%u)
\n
"
,
(
unsigned
int
)
bytes_to_read
);
warn
(
"Read invalid frame size (%u)
\n
"
,
(
unsigned
int
)
frame_size
);
bytes_to_read
=
0
;
frame_size
=
0
;
}
}
if
(
kind
==
FILE_TYPE_RAW
&&
bytes_to_read
<
kFrameTooSmallThreshold
)
{
if
(
frame_size
<
kFrameTooSmallThreshold
)
{
warn
(
"Warning: Read invalid frame size (%u) - not a raw file?
\n
"
,
warn
(
"Warning: Read invalid frame size (%u) - not a raw file?
\n
"
,
(
unsigned
int
)
bytes_to_read
);
(
unsigned
int
)
frame_size
);
}
}
if
(
bytes_to_read
>
*
buffer_size
)
{
if
(
frame_size
>
*
buffer_size
)
{
uint8_t
*
new_buf
=
realloc
(
*
buf
,
2
*
bytes_to_read
);
uint8_t
*
new_buf
=
realloc
(
*
buffer
,
2
*
frame_size
);
if
(
new_buf
)
{
if
(
new_buf
)
{
*
buf
=
new_buf
;
*
buffer
=
new_buf
;
*
buffer_size
=
2
*
bytes_to_read
;
*
buffer_size
=
2
*
frame_size
;
}
else
{
}
else
{
warn
(
"Failed to allocate compressed data buffer
\n
"
);
warn
(
"Failed to allocate compressed data buffer
\n
"
);
bytes_to_read
=
0
;
frame_size
=
0
;
}
}
}
}
}
}
if
(
!
feof
(
infile
))
{
if
(
!
feof
(
infile
))
{
if
(
fread
(
*
buf
,
1
,
bytes_to_read
,
infile
)
!=
bytes_to_read
)
{
if
(
fread
(
*
buffer
,
1
,
frame_size
,
infile
)
!=
frame_size
)
{
warn
(
"Failed to read full frame
\n
"
);
warn
(
"Failed to read full frame
\n
"
);
return
1
;
return
1
;
}
}
*
bytes_in_buffer
=
bytes_to_read
;
*
bytes_read
=
frame_size
;
}
}
return
0
;
return
0
;
}
else
if
(
kind
==
FILE_TYPE_IVF
)
{
}
static
int
read_frame
(
struct
VpxDecInputContext
*
input
,
uint8_t
**
buf
,
size_t
*
bytes_in_buffer
,
size_t
*
buffer_size
)
{
switch
(
input
->
vpx_input_ctx
->
file_type
)
{
case
FILE_TYPE_WEBM
:
return
webm_read_frame
(
input
->
webm_ctx
,
buf
,
bytes_in_buffer
,
buffer_size
);
case
FILE_TYPE_RAW
:
return
raw_read_frame
(
input
->
vpx_input_ctx
,
buf
,
bytes_in_buffer
,
buffer_size
);
case
FILE_TYPE_IVF
:
return
ivf_read_frame
(
input
->
vpx_input_ctx
,
return
ivf_read_frame
(
input
->
vpx_input_ctx
,
buf
,
bytes_in_buffer
,
buffer_size
);
buf
,
bytes_in_buffer
,
buffer_size
);
}
default:
return
1
;
return
1
;
}
}
}
void
*
out_open
(
const
char
*
out_fn
,
int
do_md5
)
{
void
*
out_open
(
const
char
*
out_fn
,
int
do_md5
)
{
...
...
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