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
efda3395
Commit
efda3395
authored
May 18, 2006
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
simplify meta tag writing code
Originally committed as revision 5403 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
dae5b496
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
173 deletions
+40
-173
movenc.c
libavformat/movenc.c
+40
-173
No files found.
libavformat/movenc.c
View file @
efda3395
...
@@ -1066,135 +1066,45 @@ static int mov_write_itunes_hdlr_tag(ByteIOContext *pb, MOVContext* mov,
...
@@ -1066,135 +1066,45 @@ static int mov_write_itunes_hdlr_tag(ByteIOContext *pb, MOVContext* mov,
}
}
/* helper function to write a data tag with the specified string as data */
/* helper function to write a data tag with the specified string as data */
static
int
mov_write_string_data_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
static
int
mov_write_string_data_tag
(
ByteIOContext
*
pb
,
const
char
*
data
,
int
long_style
)
AVFormatContext
*
s
,
const
char
*
data
)
{
{
offset_t
pos
=
url_ftell
(
pb
);
if
(
long_style
){
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"data"
);
put_be32
(
pb
,
1
);
put_be32
(
pb
,
0
);
put_buffer
(
pb
,
data
,
strlen
(
data
));
return
updateSize
(
pb
,
pos
);
}
/* iTunes name of the song/movie */
static
int
mov_write_nam_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
AVFormatContext
*
s
)
{
int
size
=
0
;
if
(
s
->
title
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
nam"
);
mov_write_string_data_tag
(
pb
,
mov
,
s
,
s
->
title
);
size
=
updateSize
(
pb
,
pos
);
}
return
size
;
}
/* iTunes name of the artist/performer */
static
int
mov_write_ART_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
AVFormatContext
*
s
)
{
int
size
=
0
;
if
(
s
->
author
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
ART"
);
// we use the author here as this is the only thing that we have...
mov_write_string_data_tag
(
pb
,
mov
,
s
,
s
->
author
);
size
=
updateSize
(
pb
,
pos
);
}
return
size
;
}
/* iTunes name of the writer */
static
int
mov_write_wrt_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
AVFormatContext
*
s
)
{
int
size
=
0
;
if
(
s
->
author
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
wrt"
);
put_tag
(
pb
,
"data"
);
mov_write_string_data_tag
(
pb
,
mov
,
s
,
s
->
author
);
put_be32
(
pb
,
1
);
size
=
updateSize
(
pb
,
pos
);
put_be32
(
pb
,
0
);
put_buffer
(
pb
,
data
,
strlen
(
data
));
return
updateSize
(
pb
,
pos
);
}
else
{
put_be16
(
pb
,
strlen
(
data
));
/* string length */
put_be16
(
pb
,
0
);
put_buffer
(
pb
,
data
,
strlen
(
data
));
return
strlen
(
data
)
+
4
;
}
}
return
size
;
}
}
/* iTunes name of the album */
static
int
mov_write_string_tag
(
ByteIOContext
*
pb
,
char
*
name
,
char
*
value
,
int
long_style
){
static
int
mov_write_alb_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
AVFormatContext
*
s
)
{
int
size
=
0
;
int
size
=
0
;
if
(
s
->
album
[
0
]
)
{
if
(
value
&&
value
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
alb"
);
put_tag
(
pb
,
name
);
mov_write_string_data_tag
(
pb
,
mov
,
s
,
s
->
album
);
mov_write_string_data_tag
(
pb
,
value
,
long_style
);
size
=
updateSize
(
pb
,
pos
);
size
=
updateSize
(
pb
,
pos
);
}
}
return
size
;
return
size
;
}
}
/* iTunes year */
/* iTunes year */
static
int
mov_write_day_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
static
int
mov_write_day_tag
(
ByteIOContext
*
pb
,
int
year
,
int
long_style
)
AVFormatContext
*
s
)
{
char
year
[
5
];
int
size
=
0
;
if
(
s
->
year
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
day"
);
snprintf
(
year
,
5
,
"%04d"
,
s
->
year
);
mov_write_string_data_tag
(
pb
,
mov
,
s
,
year
);
size
=
updateSize
(
pb
,
pos
);
}
return
size
;
}
/* iTunes tool used to create the file */
static
int
mov_write_too_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
AVFormatContext
*
s
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
too"
);
mov_write_string_data_tag
(
pb
,
mov
,
s
,
LIBAVFORMAT_IDENT
);
return
updateSize
(
pb
,
pos
);
}
/* iTunes comment */
static
int
mov_write_cmt_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
AVFormatContext
*
s
)
{
int
size
=
0
;
if
(
s
->
comment
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
cmt"
);
mov_write_string_data_tag
(
pb
,
mov
,
s
,
s
->
comment
);
size
=
updateSize
(
pb
,
pos
);
}
return
size
;
}
/* iTunes custom genre */
static
int
mov_write_gen_tag
(
ByteIOContext
*
pb
,
MOVContext
*
mov
,
AVFormatContext
*
s
)
{
{
int
size
=
0
;
if
(
year
){
if
(
s
->
genre
[
0
]
)
{
char
year_str
[
5
];
offset_t
pos
=
url_ftell
(
pb
);
snprintf
(
year_str
,
sizeof
(
year_str
),
"%04d"
,
year
);
put_be32
(
pb
,
0
);
/* size */
return
mov_write_string_tag
(
pb
,
"
\251
day"
,
year_str
,
long_style
);
put_tag
(
pb
,
"
\251
gen"
);
}
else
mov_write_string_data_tag
(
pb
,
mov
,
s
,
s
->
genre
);
return
0
;
size
=
updateSize
(
pb
,
pos
);
}
return
size
;
}
}
/* iTunes track number */
/* iTunes track number */
...
@@ -1230,14 +1140,14 @@ static int mov_write_ilst_tag(ByteIOContext *pb, MOVContext* mov,
...
@@ -1230,14 +1140,14 @@ static int mov_write_ilst_tag(ByteIOContext *pb, MOVContext* mov,
offset_t
pos
=
url_ftell
(
pb
);
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"ilst"
);
put_tag
(
pb
,
"ilst"
);
mov_write_
nam_tag
(
pb
,
mov
,
s
);
mov_write_
string_tag
(
pb
,
"
\251
nam"
,
s
->
title
,
1
);
mov_write_
ART_tag
(
pb
,
mov
,
s
);
mov_write_
string_tag
(
pb
,
"
\251
ART"
,
s
->
author
,
1
);
mov_write_
wrt_tag
(
pb
,
mov
,
s
);
mov_write_
string_tag
(
pb
,
"
\251
wrt"
,
s
->
author
,
1
);
mov_write_
alb_tag
(
pb
,
mov
,
s
);
mov_write_
string_tag
(
pb
,
"
\251
alb"
,
s
->
album
,
1
);
mov_write_day_tag
(
pb
,
mov
,
s
);
mov_write_day_tag
(
pb
,
s
->
year
,
1
);
mov_write_
too_tag
(
pb
,
mov
,
s
);
mov_write_
string_tag
(
pb
,
"
\251
too"
,
LIBAVFORMAT_IDENT
,
1
);
mov_write_
cmt_tag
(
pb
,
mov
,
s
);
mov_write_
string_tag
(
pb
,
"
\251
cmt"
,
s
->
comment
,
1
);
mov_write_
gen_tag
(
pb
,
mov
,
s
);
mov_write_
string_tag
(
pb
,
"
\251
gen"
,
s
->
genre
,
1
);
mov_write_trkn_tag
(
pb
,
mov
,
s
);
mov_write_trkn_tag
(
pb
,
mov
,
s
);
return
updateSize
(
pb
,
pos
);
return
updateSize
(
pb
,
pos
);
}
}
...
@@ -1279,62 +1189,19 @@ static int mov_write_udta_tag(ByteIOContext *pb, MOVContext* mov,
...
@@ -1279,62 +1189,19 @@ static int mov_write_udta_tag(ByteIOContext *pb, MOVContext* mov,
if
(
mov
->
tracks
[
i
].
entry
<=
0
)
continue
;
if
(
mov
->
tracks
[
i
].
entry
<=
0
)
continue
;
if
(
mov
->
tracks
[
i
].
enc
->
codec_id
==
CODEC_ID_AAC
||
if
(
mov
->
tracks
[
i
].
enc
->
codec_id
==
CODEC_ID_AAC
||
mov
->
tracks
[
i
].
enc
->
codec_id
==
CODEC_ID_MPEG4
)
{
mov
->
tracks
[
i
].
enc
->
codec_id
==
CODEC_ID_MPEG4
)
{
offset_t
pos
=
url_ftell
(
pb
);
mov_write_string_tag
(
pb
,
"
\251
req"
,
"QuickTime 6.0 or greater"
,
0
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
req"
);
put_be16
(
pb
,
sizeof
(
"QuickTime 6.0 or greater"
)
-
1
);
put_be16
(
pb
,
0
);
put_buffer
(
pb
,
"QuickTime 6.0 or greater"
,
sizeof
(
"QuickTime 6.0 or greater"
)
-
1
);
updateSize
(
pb
,
pos
);
break
;
break
;
}
}
}
}
/* Encoder */
mov_write_string_tag
(
pb
,
"
\251
nam"
,
s
->
title
,
0
);
mov_write_string_tag
(
pb
,
"
\251
aut"
,
s
->
author
,
0
);
mov_write_string_tag
(
pb
,
"
\251
alb"
,
s
->
album
,
0
);
mov_write_day_tag
(
pb
,
s
->
year
,
0
);
if
(
mov
->
tracks
[
0
].
enc
&&
!
(
mov
->
tracks
[
0
].
enc
->
flags
&
CODEC_FLAG_BITEXACT
))
if
(
mov
->
tracks
[
0
].
enc
&&
!
(
mov
->
tracks
[
0
].
enc
->
flags
&
CODEC_FLAG_BITEXACT
))
{
mov_write_string_tag
(
pb
,
"
\251
enc"
,
LIBAVFORMAT_IDENT
,
0
);
offset_t
pos
=
url_ftell
(
pb
);
mov_write_string_tag
(
pb
,
"
\251
des"
,
s
->
comment
,
0
);
put_be32
(
pb
,
0
);
/* size */
mov_write_string_tag
(
pb
,
"
\251
gen"
,
s
->
genre
,
0
);
put_tag
(
pb
,
"
\251
enc"
);
put_be16
(
pb
,
sizeof
(
LIBAVFORMAT_IDENT
)
-
1
);
/* string length */
put_be16
(
pb
,
0
);
put_buffer
(
pb
,
LIBAVFORMAT_IDENT
,
sizeof
(
LIBAVFORMAT_IDENT
)
-
1
);
updateSize
(
pb
,
pos
);
}
if
(
s
->
title
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
nam"
);
put_be16
(
pb
,
strlen
(
s
->
title
));
/* string length */
put_be16
(
pb
,
0
);
put_buffer
(
pb
,
s
->
title
,
strlen
(
s
->
title
));
updateSize
(
pb
,
pos
);
}
if
(
s
->
author
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
/*"\251aut"*/
"
\251
day"
);
put_be16
(
pb
,
strlen
(
s
->
author
));
/* string length */
put_be16
(
pb
,
0
);
put_buffer
(
pb
,
s
->
author
,
strlen
(
s
->
author
));
updateSize
(
pb
,
pos
);
}
if
(
s
->
comment
[
0
]
)
{
offset_t
pos
=
url_ftell
(
pb
);
put_be32
(
pb
,
0
);
/* size */
put_tag
(
pb
,
"
\251
des"
);
put_be16
(
pb
,
strlen
(
s
->
comment
));
/* string length */
put_be16
(
pb
,
0
);
put_buffer
(
pb
,
s
->
comment
,
strlen
(
s
->
comment
));
updateSize
(
pb
,
pos
);
}
return
updateSize
(
pb
,
pos
);
return
updateSize
(
pb
,
pos
);
}
}
...
...
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