Merge commit '5845a8273e4694e0254ad728970b82bb64fd8bc0'
authorHendrik Leppkes <h.leppkes@gmail.com>
Thu, 17 Dec 2015 12:50:36 +0000 (13:50 +0100)
committerHendrik Leppkes <h.leppkes@gmail.com>
Thu, 17 Dec 2015 12:50:36 +0000 (13:50 +0100)
* commit '5845a8273e4694e0254ad728970b82bb64fd8bc0':
  movenc: use the CPB props side data

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavformat/movenc.c

@@@ -542,22 -303,11 +542,23 @@@ static void put_descr(AVIOContext *pb, 
      avio_w8(pb, size & 0x7F);
  }
  
 +static unsigned compute_avg_bitrate(MOVTrack *track)
 +{
 +    uint64_t size = 0;
 +    int i;
 +    if (!track->track_duration)
 +        return 0;
 +    for (i = 0; i < track->entry; i++)
 +        size += track->cluster[i].size;
 +    return size * 8 * track->timescale / track->track_duration;
 +}
 +
  static int mov_write_esds_tag(AVIOContext *pb, MOVTrack *track) // Basic
  {
+     AVCPBProperties *props;
      int64_t pos = avio_tell(pb);
      int decoder_specific_info_len = track->vos_len ? 5 + track->vos_len : 0;
 +    unsigned avg_bitrate;
  
      avio_wb32(pb, 0); // size
      ffio_wfourcc(pb, "esds");
      else
          avio_w8(pb, 0x11); // flags (= Visualstream)
  
-     avio_wb24(pb, track->enc->rc_buffer_size >> 3); // Buffersize DB
+     props = (AVCPBProperties*)av_stream_get_side_data(track->st, AV_PKT_DATA_CPB_PROPERTIES,
+                                                       NULL);
+     avio_wb24(pb, props ? props->buffer_size / 8 : 0); // Buffersize DB
  
 -    avio_wb32(pb, props ? FFMAX(props->max_bitrate, props->avg_bitrate) : track->enc->bit_rate); // maxbitrate (FIXME should be max rate in any 1 sec window)
 -    if (!props || !props->min_bitrate || props->max_bitrate != props->min_bitrate)
 -        avio_wb32(pb, 0); // vbr
 -    else
 -        avio_wb32(pb, props->max_bitrate); // avg bitrate
 +    avg_bitrate = compute_avg_bitrate(track);
-     // maxbitrate (FIXME should be max rate in any 1 sec window)
-     avio_wb32(pb, FFMAX3(track->enc->bit_rate, track->enc->rc_max_rate, avg_bitrate));
++    avio_wb32(pb, props ? FFMAX3(props->max_bitrate, props->avg_bitrate, avg_bitrate) : FFMAX(track->enc->bit_rate, avg_bitrate)); // maxbitrate (FIXME should be max rate in any 1 sec window)
 +    avio_wb32(pb, avg_bitrate);
  
      if (track->vos_len) {
          // DecoderSpecific info descriptor