26 if (size_in_bytes == 0 || duration == 0) {
27 LOG(WARNING) <<
"Ignore block with size=" << size_in_bytes
28 <<
", duration=" << duration;
32 const int kBitsInByte = 8;
33 const uint64_t size_in_bits = size_in_bytes * kBitsInByte;
34 total_size_in_bits_ += size_in_bits;
35 total_duration_ += duration;
37 const size_t kTargetDurationThreshold = 10;
38 if (initial_blocks_.size() < kTargetDurationThreshold) {
39 initial_blocks_.push_back({size_in_bits, duration});
43 if (target_block_duration_ == 0) {
46 target_block_duration_ = GetAverageBlockDuration();
47 for (
const Block& block : initial_blocks_) {
49 std::max(max_bitrate_, GetBitrate(block, target_block_duration_));
53 max_bitrate_ = std::max(max_bitrate_, GetBitrate({size_in_bits, duration},
54 target_block_duration_));
64 if (max_bitrate_ != 0)
69 DCHECK(target_block_duration_ == 0);
70 const double target_block_duration = GetAverageBlockDuration();
73 uint64_t max_bitrate = 0;
74 for (
const Block& block : initial_blocks_) {
76 std::max(max_bitrate, GetBitrate(block, target_block_duration));
85 std::accumulate(initial_blocks_.begin(), initial_blocks_.end(), 0.0,