summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-06-11 09:02:01 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-06-11 09:02:01 +0000
commit20e22af85a57e76878d11381ee0cfff14e95f59a (patch)
tree5109e8af9bb96f8185dc13f697ae2da6c32ed61d /libavformat
parentf7635edb4dfb5779948cb43f8494241e25292f29 (diff)
factorize psp metadata
Originally committed as revision 13742 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/movenc.c54
1 files changed, 18 insertions, 36 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 65f749316b..fce27fc975 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1254,9 +1254,23 @@ static uint16_t language_code(const char *str)
return (((str[0]-0x60) & 0x1F) << 10) + (((str[1]-0x60) & 0x1F) << 5) + ((str[2]-0x60) & 0x1F);
}
+static int mov_write_psp_udta_tag(ByteIOContext *pb,
+ const char *str, const char *lang, int type)
+{
+ int len = utf8len(str)+1;
+ if(len<=0)
+ return 0;
+ put_be16(pb, len*2+10); /* size */
+ put_be32(pb, type); /* type */
+ put_be16(pb, language_code(lang)); /* language */
+ put_be16(pb, 0x01); /* ? */
+ ascii_to_wc(pb, str);
+ return len*2+10;
+}
+
static int mov_write_uuidusmt_tag(ByteIOContext *pb, AVFormatContext *s)
{
- size_t len, size;
+ size_t size;
offset_t pos, curpos;
size = 0;
@@ -1283,39 +1297,10 @@ static int mov_write_uuidusmt_tag(ByteIOContext *pb, AVFormatContext *s)
put_be16(pb, 0x021C); /* data */
size += 12;
- // Encoder
- len = utf8len(LIBAVCODEC_IDENT)+1;
- if(len<=0)
- goto not_utf8;
- put_be16(pb, len*2+10); /* size */
- put_be32(pb, 0x04); /* type */
- put_be16(pb, language_code("eng")); /* language */
- put_be16(pb, 0x01); /* ? */
- ascii_to_wc(pb, LIBAVCODEC_IDENT);
- size += len*2+10;
-
- // Title
- len = utf8len(s->title)+1;
- if(len<=0)
- goto not_utf8;
- put_be16(pb, len*2+10); /* size */
- put_be32(pb, 0x01); /* type */
- put_be16(pb, language_code("eng")); /* language */
- put_be16(pb, 0x01); /* ? */
- ascii_to_wc(pb, s->title);
- size += len*2+10;
-
- // Date
+ size += mov_write_psp_udta_tag(pb, LIBAVCODEC_IDENT, "eng", 0x04);
+ size += mov_write_psp_udta_tag(pb, s->title, "eng", 0x01);
// snprintf(dt,32,"%04d/%02d/%02d %02d:%02d:%02d",t_st->tm_year+1900,t_st->tm_mon+1,t_st->tm_mday,t_st->tm_hour,t_st->tm_min,t_st->tm_sec);
- len = utf8len("2006/04/01 11:11:11")+1;
- if(len<=0)
- goto not_utf8;
- put_be16(pb, len*2+10); /* size */
- put_be32(pb, 0x03); /* type */
- put_be16(pb, language_code("und")); /* language */
- put_be16(pb, 0x01); /* ? */
- ascii_to_wc(pb, "2006/04/01 11:11:11");
- size += len*2+10;
+ size += mov_write_psp_udta_tag(pb, "2006/04/01 11:11:11", "und", 0x03);
// size
curpos = url_ftell(pb);
@@ -1327,9 +1312,6 @@ static int mov_write_uuidusmt_tag(ByteIOContext *pb, AVFormatContext *s)
}
return size;
-not_utf8:
- av_log(s, AV_LOG_ERROR, "not utf8\n");
- return -1;
}
static int mov_write_moov_tag(ByteIOContext *pb, MOVContext *mov,