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
da9cc22d
Commit
da9cc22d
authored
Jul 31, 2014
by
John Stebbins
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
movenc: add track title to tracks
parent
d9432789
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
65 additions
and
11 deletions
+65
-11
movenc.c
libavformat/movenc.c
+64
-11
movenc.h
libavformat/movenc.h
+1
-0
No files found.
libavformat/movenc.c
View file @
da9cc22d
...
...
@@ -78,6 +78,17 @@ static const AVClass flavor ## _muxer_class = {\
.version = LIBAVUTIL_VERSION_INT,\
};
static
int
utf8len
(
const
uint8_t
*
b
)
{
int
len
=
0
;
int
val
;
while
(
*
b
)
{
GET_UTF8
(
val
,
*
b
++
,
return
-
1
;)
len
++
;
}
return
len
;
}
//FIXME support 64 bit variant with wide placeholders
static
int64_t
update_size
(
AVIOContext
*
pb
,
int64_t
pos
)
{
...
...
@@ -1353,6 +1364,15 @@ static int mov_write_hdlr_tag(AVIOContext *pb, MOVTrack *track)
"Unknown hldr_type for %s / 0x%04X, writing dummy values
\n
"
,
tag_buf
,
track
->
enc
->
codec_tag
);
}
if
(
track
->
st
)
{
// hdlr.name is used by some players to identify the content title
// of the track. So if an alternate handler description is
// specified, use it.
AVDictionaryEntry
*
t
;
t
=
av_dict_get
(
track
->
st
->
metadata
,
"handler"
,
NULL
,
0
);
if
(
t
&&
utf8len
(
t
->
value
))
descr
=
t
->
value
;
}
}
avio_wb32
(
pb
,
0
);
/* size */
...
...
@@ -1672,6 +1692,47 @@ static int mov_write_udta_sdp(AVIOContext *pb, MOVTrack *track)
return
len
+
24
;
}
static
int
mov_write_track_metadata
(
AVIOContext
*
pb
,
AVStream
*
st
,
const
char
*
tag
,
const
char
*
str
)
{
int64_t
pos
=
avio_tell
(
pb
);
AVDictionaryEntry
*
t
=
av_dict_get
(
st
->
metadata
,
str
,
NULL
,
0
);
if
(
!
t
||
!
utf8len
(
t
->
value
))
return
0
;
avio_wb32
(
pb
,
0
);
/* size */
ffio_wfourcc
(
pb
,
tag
);
/* type */
avio_write
(
pb
,
t
->
value
,
strlen
(
t
->
value
));
/* UTF8 string value */
return
update_size
(
pb
,
pos
);
}
static
int
mov_write_track_udta_tag
(
AVIOContext
*
pb
,
MOVMuxContext
*
mov
,
AVStream
*
st
)
{
AVIOContext
*
pb_buf
;
int
ret
,
size
;
uint8_t
*
buf
;
if
(
st
==
NULL
||
mov
->
fc
->
flags
&
AVFMT_FLAG_BITEXACT
)
return
0
;
ret
=
avio_open_dyn_buf
(
&
pb_buf
);
if
(
ret
<
0
)
return
ret
;
if
(
mov
->
mode
&
MODE_MP4
)
mov_write_track_metadata
(
pb_buf
,
st
,
"name"
,
"title"
);
if
((
size
=
avio_close_dyn_buf
(
pb_buf
,
&
buf
))
>
0
)
{
avio_wb32
(
pb
,
size
+
8
);
ffio_wfourcc
(
pb
,
"udta"
);
avio_write
(
pb
,
buf
,
size
);
}
av_free
(
buf
);
return
0
;
}
static
int
mov_write_trak_tag
(
AVIOContext
*
pb
,
MOVMuxContext
*
mov
,
MOVTrack
*
track
,
AVStream
*
st
)
{
...
...
@@ -1703,6 +1764,7 @@ static int mov_write_trak_tag(AVIOContext *pb, MOVMuxContext *mov,
mov_write_tapt_tag
(
pb
,
track
);
}
}
mov_write_track_udta_tag
(
pb
,
mov
,
st
);
return
update_size
(
pb
,
pos
);
}
...
...
@@ -1960,17 +2022,6 @@ static int mov_write_meta_tag(AVIOContext *pb, MOVMuxContext *mov,
return
size
;
}
static
int
utf8len
(
const
uint8_t
*
b
)
{
int
len
=
0
;
int
val
;
while
(
*
b
)
{
GET_UTF8
(
val
,
*
b
++
,
return
-
1
;)
len
++
;
}
return
len
;
}
static
int
ascii_to_wc
(
AVIOContext
*
pb
,
const
uint8_t
*
b
)
{
int
val
;
...
...
@@ -3308,6 +3359,8 @@ static int mov_write_header(AVFormatContext *s)
AVDictionaryEntry
*
t
;
int
i
,
hint_track
=
0
;
mov
->
fc
=
s
;
/* Default mode == MP4 */
mov
->
mode
=
MODE_MP4
;
...
...
libavformat/movenc.h
View file @
da9cc22d
...
...
@@ -164,6 +164,7 @@ typedef struct MOVMuxContext {
char
*
major_brand
;
int
per_stream_grouping
;
AVFormatContext
*
fc
;
}
MOVMuxContext
;
#define FF_MOV_FLAG_RTP_HINT 1
...
...
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