Ticket #1052: movenc.diff

File movenc.diff, 2.2 KB (added by bbraun, 5 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}