|
|
@@ -1216,6 +1216,26 @@ static uint16_t language_code(const char *str) |
|
|
return (((str[0]-0x60) & 0x1F) << 10) + (((str[1]-0x60) & 0x1F) << 5) + ((str[2]-0x60) & 0x1F); |
|
|
return (((str[0]-0x60) & 0x1F) << 10) + (((str[1]-0x60) & 0x1F) << 5) + ((str[2]-0x60) & 0x1F); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static int mov_write_3gp_udta_tag(ByteIOContext *pb, AVFormatContext *s, |
|
|
|
|
|
const char *tag, const char *str) |
|
|
|
|
|
{ |
|
|
|
|
|
offset_t pos = url_ftell(pb); |
|
|
|
|
|
if (!utf8len(str)) |
|
|
|
|
|
return 0; |
|
|
|
|
|
put_be32(pb, 0); /* size */ |
|
|
|
|
|
put_tag (pb, tag); /* type */ |
|
|
|
|
|
put_be32(pb, 0); /* version + flags */ |
|
|
|
|
|
if (!strcmp(tag, "yrrc")) |
|
|
|
|
|
put_be16(pb, s->year); |
|
|
|
|
|
else { |
|
|
|
|
|
put_be16(pb, language_code("eng")); /* language */ |
|
|
|
|
|
ascii_to_wc(pb, str); |
|
|
|
|
|
if (!strcmp(tag, "albm") && s->year) |
|
|
|
|
|
put_byte(pb, s->year); |
|
|
|
|
|
} |
|
|
|
|
|
return updateSize(pb, pos); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
static int mov_write_udta_tag(ByteIOContext *pb, MOVContext *mov, |
|
|
static int mov_write_udta_tag(ByteIOContext *pb, MOVContext *mov, |
|
|
AVFormatContext *s) |
|
|
AVFormatContext *s) |
|
|
{ |
|
|
{ |
|
|
@@ -1235,6 +1255,14 @@ static int mov_write_udta_tag(ByteIOContext *pb, MOVContext *mov, |
|
|
put_be32(pb, 0); /* size */ |
|
|
put_be32(pb, 0); /* size */ |
|
|
put_tag(pb, "udta"); |
|
|
put_tag(pb, "udta"); |
|
|
|
|
|
|
|
|
|
|
|
if (mov->mode == MODE_3GP || mov->mode == MODE_3G2) { |
|
|
|
|
|
mov_write_3gp_udta_tag(pb, s, "titl", s->title); |
|
|
|
|
|
mov_write_3gp_udta_tag(pb, s, "auth", s->author); |
|
|
|
|
|
mov_write_3gp_udta_tag(pb, s, "gnre", s->genre); |
|
|
|
|
|
mov_write_3gp_udta_tag(pb, s, "dscp", s->comment); |
|
|
|
|
|
mov_write_3gp_udta_tag(pb, s, "albm", s->album); |
|
|
|
|
|
mov_write_3gp_udta_tag(pb, s, "yrrc", "nil"); |
|
|
|
|
|
} else { |
|
|
/* iTunes meta data */ |
|
|
/* iTunes meta data */ |
|
|
mov_write_meta_tag(pb, mov, s); |
|
|
mov_write_meta_tag(pb, mov, s); |
|
|
|
|
|
|
|
|
@@ -1247,7 +1275,7 @@ static int mov_write_udta_tag(ByteIOContext *pb, MOVContext *mov, |
|
|
mov_write_string_tag(pb, "\251des", s->comment , 0); |
|
|
mov_write_string_tag(pb, "\251des", s->comment , 0); |
|
|
mov_write_string_tag(pb, "\251gen", s->genre , 0); |
|
|
mov_write_string_tag(pb, "\251gen", s->genre , 0); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
return updateSize(pb, pos); |
|
|
return updateSize(pb, pos); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@@ -1330,7 +1358,7 @@ static int mov_write_moov_tag(ByteIOContext *pb, MOVContext *mov, |
|
|
|
|
|
|
|
|
if (mov->mode == MODE_PSP) |
|
|
if (mov->mode == MODE_PSP) |
|
|
mov_write_uuidusmt_tag(pb, s); |
|
|
mov_write_uuidusmt_tag(pb, s); |
|
|
else if (mov->mode != MODE_3GP && mov->mode != MODE_3G2) |
|
|
|
|
|
|
|
|
else |
|
|
mov_write_udta_tag(pb, mov, s); |
|
|
mov_write_udta_tag(pb, mov, s); |
|
|
|
|
|
|
|
|
return updateSize(pb, pos); |
|
|
return updateSize(pb, pos); |
|
|
|