Ticket #6575: btrt_moovatom.patch

File btrt_moovatom.patch, 1.3 KB (added by Mista_D, 9 years ago)

libavformat/movenc.c patch

  • libavformat/movenc.c

    diff -Naur a/libavformat/movenc.c b/libavformat/movenc.c
    a b  
    10741074    return update_size(pb, pos);
    10751075}
    10761076
     1077static int mov_write_btrt_tag(AVIOContext *pb, MOVTrack *track)
     1078{
     1079    int64_t pos = avio_tell(pb);
     1080    AVCPBProperties *props;
     1081    props = (AVCPBProperties*)av_stream_get_side_data(track->st, AV_PKT_DATA_CPB_PROPERTIES, NULL);
     1082    unsigned avg_bitrate;
     1083    avg_bitrate = compute_avg_bitrate(track);
     1084
     1085    avio_wb32(pb, 0);
     1086    ffio_wfourcc(pb, "btrt");
     1087    avio_wb32(pb, props ? props->buffer_size : 0);
     1088    avio_wb32(pb, props ? FFMAX3(props->max_bitrate, props->avg_bitrate, avg_bitrate) : FFMAX(track->par->bit_rate, avg_bitrate));
     1089    avio_wb32(pb, avg_bitrate);
     1090    return update_size(pb, pos);
     1091}
     1092
    10771093static int mov_write_vpcc_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track)
    10781094{
    10791095    int64_t pos = avio_tell(pb);
     
    19171933        mov_write_hvcc_tag(pb, track);
    19181934    else if (track->par->codec_id == AV_CODEC_ID_H264 && !TAG_IS_AVCI(track->tag)) {
    19191935        mov_write_avcc_tag(pb, track);
     1936        mov_write_btrt_tag(pb, track);
    19201937        if (track->mode == MODE_IPOD)
    19211938            mov_write_uuid_tag_ipod(pb);
    19221939    } else if (track->par->codec_id == AV_CODEC_ID_VP9) {