blob: 0573893a71c105052f9e068419aada6f555519fe [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/base/video_frame_layout.h"
#include <numeric>
#include <sstream>
namespace {
template <class T>
std::string VectorToString(const std::vector<T>& vec) {
std::ostringstream result;
std::string delim;
result << "[";
for (auto v : vec) {
result << delim << v;
if (delim.size() == 0)
delim = ", ";
}
result << "]";
return result.str();
}
} // namespace
namespace media {
VideoFrameLayout::VideoFrameLayout(VideoPixelFormat format,
const gfx::Size& coded_size,
std::vector<int32_t> strides,
std::vector<size_t> buffer_sizes)
: format_(format),
coded_size_(coded_size),
strides_(std::move(strides)),
buffer_sizes_(std::move(buffer_sizes)) {}
VideoFrameLayout::VideoFrameLayout(VideoFrameLayout&&) = default;
VideoFrameLayout::~VideoFrameLayout() = default;
VideoFrameLayout VideoFrameLayout::Clone() const {
return VideoFrameLayout(format_, coded_size_, strides_, buffer_sizes_);
}
size_t VideoFrameLayout::GetTotalBufferSize() const {
return std::accumulate(buffer_sizes_.begin(), buffer_sizes_.end(), 0u);
}
std::string VideoFrameLayout::ToString() const {
std::ostringstream s;
s << "VideoFrameLayout format:" << VideoPixelFormatToString(format_)
<< " coded_size:" << coded_size_.ToString()
<< " num_buffers:" << num_buffers()
<< " buffer_sizes:" << VectorToString(buffer_sizes_)
<< " num_strides:" << num_strides()
<< " strides:" << VectorToString(strides_);
return s.str();
}
} // namespace media