|
|
|
@ -268,6 +268,23 @@ static int mov_metadata_loci(MOVContext *c, AVIOContext *pb, unsigned len) |
|
|
|
|
return av_dict_set(&c->fc->metadata, key, buf, 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int mov_metadata_hmmt(MOVContext *c, AVIOContext *pb, unsigned len) |
|
|
|
|
{ |
|
|
|
|
int i, n_hmmt; |
|
|
|
|
|
|
|
|
|
if (len < 2) |
|
|
|
|
return 0; |
|
|
|
|
if (c->ignore_chapters) |
|
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
n_hmmt = avio_rb32(pb); |
|
|
|
|
for (i = 0; i < n_hmmt && !pb->eof_reached; i++) { |
|
|
|
|
int moment_time = avio_rb32(pb); |
|
|
|
|
avpriv_new_chapter(c->fc, i, av_make_q(1, 1000), moment_time, AV_NOPTS_VALUE, NULL); |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom) |
|
|
|
|
{ |
|
|
|
|
char tmp_key[5]; |
|
|
|
@ -303,6 +320,8 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom) |
|
|
|
|
parse = mov_metadata_gnre; break; |
|
|
|
|
case MKTAG( 'h','d','v','d'): key = "hd_video"; |
|
|
|
|
parse = mov_metadata_int8_no_padding; break; |
|
|
|
|
case MKTAG( 'H','M','M','T'): |
|
|
|
|
return mov_metadata_hmmt(c, pb, atom.size); |
|
|
|
|
case MKTAG( 'k','e','y','w'): key = "keywords"; break; |
|
|
|
|
case MKTAG( 'l','d','e','s'): key = "synopsis"; break; |
|
|
|
|
case MKTAG( 'l','o','c','i'): |
|
|
|
|