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
e17a2aba
Commit
e17a2aba
authored
Sep 20, 2012
by
Clément Bœsch
Committed by
Clément Bœsch
Sep 27, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavf/movenc: add get_moov_size and use it in fragment code.
This function will be re-used in the following commits.
parent
65f7aee6
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
9 deletions
+18
-9
movenc.c
libavformat/movenc.c
+18
-9
No files found.
libavformat/movenc.c
View file @
e17a2aba
...
@@ -2876,6 +2876,21 @@ static void mov_parse_vc1_frame(AVPacket *pkt, MOVTrack *trk, int fragment)
...
@@ -2876,6 +2876,21 @@ static void mov_parse_vc1_frame(AVPacket *pkt, MOVTrack *trk, int fragment)
}
}
}
}
static
int
get_moov_size
(
AVFormatContext
*
s
)
{
int
ret
;
uint8_t
*
buf
;
AVIOContext
*
moov_buf
;
MOVMuxContext
*
mov
=
s
->
priv_data
;
if
((
ret
=
avio_open_dyn_buf
(
&
moov_buf
))
<
0
)
return
ret
;
mov_write_moov_tag
(
moov_buf
,
mov
,
s
);
ret
=
avio_close_dyn_buf
(
moov_buf
,
&
buf
);
av_free
(
buf
);
return
ret
;
}
static
int
mov_flush_fragment
(
AVFormatContext
*
s
)
static
int
mov_flush_fragment
(
AVFormatContext
*
s
)
{
{
MOVMuxContext
*
mov
=
s
->
priv_data
;
MOVMuxContext
*
mov
=
s
->
priv_data
;
...
@@ -2887,10 +2902,8 @@ static int mov_flush_fragment(AVFormatContext *s)
...
@@ -2887,10 +2902,8 @@ static int mov_flush_fragment(AVFormatContext *s)
if
(
!
(
mov
->
flags
&
FF_MOV_FLAG_EMPTY_MOOV
)
&&
mov
->
fragments
==
0
)
{
if
(
!
(
mov
->
flags
&
FF_MOV_FLAG_EMPTY_MOOV
)
&&
mov
->
fragments
==
0
)
{
int64_t
pos
=
avio_tell
(
s
->
pb
);
int64_t
pos
=
avio_tell
(
s
->
pb
);
int
ret
;
AVIOContext
*
moov_buf
;
uint8_t
*
buf
;
uint8_t
*
buf
;
int
buf_size
;
int
buf_size
,
moov_size
;
for
(
i
=
0
;
i
<
mov
->
nb_streams
;
i
++
)
for
(
i
=
0
;
i
<
mov
->
nb_streams
;
i
++
)
if
(
!
mov
->
tracks
[
i
].
entry
)
if
(
!
mov
->
tracks
[
i
].
entry
)
...
@@ -2899,13 +2912,9 @@ static int mov_flush_fragment(AVFormatContext *s)
...
@@ -2899,13 +2912,9 @@ static int mov_flush_fragment(AVFormatContext *s)
if
(
i
<
mov
->
nb_streams
)
if
(
i
<
mov
->
nb_streams
)
return
0
;
return
0
;
if
((
ret
=
avio_open_dyn_buf
(
&
moov_buf
))
<
0
)
moov_size
=
get_moov_size
(
s
);
return
ret
;
mov_write_moov_tag
(
moov_buf
,
mov
,
s
);
buf_size
=
avio_close_dyn_buf
(
moov_buf
,
&
buf
);
av_free
(
buf
);
for
(
i
=
0
;
i
<
mov
->
nb_streams
;
i
++
)
for
(
i
=
0
;
i
<
mov
->
nb_streams
;
i
++
)
mov
->
tracks
[
i
].
data_offset
=
pos
+
buf
_size
+
8
;
mov
->
tracks
[
i
].
data_offset
=
pos
+
moov
_size
+
8
;
mov_write_moov_tag
(
s
->
pb
,
mov
,
s
);
mov_write_moov_tag
(
s
->
pb
,
mov
,
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