Ticket #1052: movenc.diff

File movenc.diff, 2.2 KB (added by bbraun, 14 years ago)
  • libavformat/movenc.c

    diff --git a/libavformat/movenc.c b/libavformat/movenc.c
    index 7f970be..e5528f1 100644
    a b static int mov_write_trkn_tag(AVIOContext *pb, MOVMuxContext *mov,  
    18421842    return size;
    18431843}
    18441844
     1845static int mov_write_int8_metadata(AVFormatContext *s, AVIOContext *pb,
     1846                                     const char *name, const char *tag,
     1847                                     int long_style)
     1848{
     1849    int64_t pos = avio_tell(pb);
     1850    AVDictionaryEntry *t = NULL;
     1851    uint8_t num;
     1852
     1853    if (!(t = av_dict_get(s->metadata, tag, NULL, 0)))
     1854        return 0;
     1855    num = t ? atoi(t->value) : 0;
     1856
     1857    avio_wb32(pb, 4);
     1858    ffio_wfourcc(pb, name);
     1859    avio_w8(pb, 0);
     1860    avio_w8(pb, 0);
     1861    avio_w8(pb, 0);
     1862    avio_w8(pb, num);
     1863    return update_size(pb, pos);
     1864}
     1865
     1866static int mov_write_int8_metadata_no_padding(AVFormatContext *s, AVIOContext *pb,
     1867                                     const char *name, const char *tag,
     1868                                     int long_style)
     1869{
     1870    int64_t pos = avio_tell(pb);
     1871    AVDictionaryEntry *t = NULL;
     1872    uint8_t num;
     1873
     1874    if (!(t = av_dict_get(s->metadata, tag, NULL, 0)))
     1875        return 0;
     1876    num = t ? atoi(t->value) : 0;
     1877
     1878    avio_wb32(pb, 1);
     1879    ffio_wfourcc(pb, name);
     1880    avio_w8(pb, num);
     1881    return update_size(pb, pos);
     1882}
     1883
    18451884/* iTunes meta data list */
    18461885static int mov_write_ilst_tag(AVIOContext *pb, MOVMuxContext *mov,
    18471886                              AVFormatContext *s)
    static int mov_write_ilst_tag(AVIOContext *pb, MOVMuxContext *mov,  
    18661905    mov_write_string_metadata(s, pb, "tvsh",    "show"     , 1);
    18671906    mov_write_string_metadata(s, pb, "tven",    "episode_id",1);
    18681907    mov_write_string_metadata(s, pb, "tvnn",    "network"  , 1);
     1908    mov_write_int8_metadata(s, pb, "tves", "episode_sort",1);
     1909    mov_write_int8_metadata(s, pb, "tvsn", "season_number",1);
     1910    mov_write_int8_metadata_no_padding(s, pb, "stik", "media_type",1);
     1911    mov_write_int8_metadata_no_padding(s, pb, "hdvd", "hd_video",1);
     1912    mov_write_int8_metadata_no_padding(s, pb, "pgap", "gapless_playback",1);
    18691913    mov_write_trkn_tag(pb, mov, s);
    18701914    return update_size(pb, pos);
    18711915}