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
ce355189
Commit
ce355189
authored
Dec 26, 2014
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avformat/cache: keep cache_pos updated
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
954fc854
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
6 additions
and
2 deletions
+6
-2
cache.c
libavformat/cache.c
+6
-2
No files found.
libavformat/cache.c
View file @
ce355189
...
...
@@ -110,6 +110,7 @@ static int add_entry(URLContext *h, const unsigned char *buf, int size)
av_log
(
h
,
AV_LOG_ERROR
,
"seek in cache failed
\n
"
);
goto
fail
;
}
c
->
cache_pos
=
pos
;
ret
=
write
(
c
->
fd
,
buf
,
size
);
if
(
ret
<
0
)
{
...
...
@@ -121,6 +122,7 @@ static int add_entry(URLContext *h, const unsigned char *buf, int size)
entry
->
logical_pos
=
c
->
logical_pos
;
entry
->
physical_pos
=
pos
;
entry
->
size
=
ret
;
c
->
cache_pos
=
entry
->
physical_pos
+
entry
->
size
;
entry_ret
=
av_tree_insert
(
&
c
->
root
,
entry
,
cmp
,
&
node
);
if
(
entry_ret
&&
entry_ret
!=
entry
)
{
...
...
@@ -128,7 +130,6 @@ static int add_entry(URLContext *h, const unsigned char *buf, int size)
av_log
(
h
,
AV_LOG_ERROR
,
"av_tree_insert failed
\n
"
);
goto
fail
;
}
c
->
cache_pos
=
entry
->
physical_pos
+
entry
->
size
;
return
0
;
fail:
...
...
@@ -157,10 +158,13 @@ static int cache_read(URLContext *h, unsigned char *buf, int size)
int64_t
physical_target
=
entry
->
physical_pos
+
in_block_pos
;
//FIXME avoid seek if unneeded
r
=
lseek
(
c
->
fd
,
physical_target
,
SEEK_SET
);
if
(
r
>=
0
)
if
(
r
>=
0
)
{
c
->
cache_pos
=
r
;
r
=
read
(
c
->
fd
,
buf
,
FFMIN
(
size
,
entry
->
size
-
in_block_pos
));
}
if
(
r
>
0
)
{
c
->
cache_pos
+=
r
;
c
->
logical_pos
+=
r
;
c
->
cache_hit
++
;
return
r
;
...
...
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