xref: /aosp_15_r20/external/libwebm/common/video_frame.cc (revision 103e46e4cd4b6efcf6001f23fa8665fb110abf8d)
1*103e46e4SHarish Mahendrakar // Copyright (c) 2016 The WebM project authors. All Rights Reserved.
2*103e46e4SHarish Mahendrakar //
3*103e46e4SHarish Mahendrakar // Use of this source code is governed by a BSD-style license
4*103e46e4SHarish Mahendrakar // that can be found in the LICENSE file in the root of the source
5*103e46e4SHarish Mahendrakar // tree. An additional intellectual property rights grant can be found
6*103e46e4SHarish Mahendrakar // in the file PATENTS.  All contributing project authors may
7*103e46e4SHarish Mahendrakar // be found in the AUTHORS file in the root of the source tree.
8*103e46e4SHarish Mahendrakar #include "common/video_frame.h"
9*103e46e4SHarish Mahendrakar 
10*103e46e4SHarish Mahendrakar #include <cstdio>
11*103e46e4SHarish Mahendrakar 
12*103e46e4SHarish Mahendrakar namespace libwebm {
13*103e46e4SHarish Mahendrakar 
Init(std::size_t new_length)14*103e46e4SHarish Mahendrakar bool VideoFrame::Buffer::Init(std::size_t new_length) {
15*103e46e4SHarish Mahendrakar   capacity = 0;
16*103e46e4SHarish Mahendrakar   length = 0;
17*103e46e4SHarish Mahendrakar   data.reset(new std::uint8_t[new_length]);
18*103e46e4SHarish Mahendrakar 
19*103e46e4SHarish Mahendrakar   if (data.get() == nullptr) {
20*103e46e4SHarish Mahendrakar     fprintf(stderr, "VideoFrame: Out of memory.");
21*103e46e4SHarish Mahendrakar     return false;
22*103e46e4SHarish Mahendrakar   }
23*103e46e4SHarish Mahendrakar 
24*103e46e4SHarish Mahendrakar   capacity = new_length;
25*103e46e4SHarish Mahendrakar   length = 0;
26*103e46e4SHarish Mahendrakar   return true;
27*103e46e4SHarish Mahendrakar }
28*103e46e4SHarish Mahendrakar 
Init(std::size_t length)29*103e46e4SHarish Mahendrakar bool VideoFrame::Init(std::size_t length) { return buffer_.Init(length); }
30*103e46e4SHarish Mahendrakar 
Init(std::size_t length,std::int64_t nano_pts,Codec codec)31*103e46e4SHarish Mahendrakar bool VideoFrame::Init(std::size_t length, std::int64_t nano_pts, Codec codec) {
32*103e46e4SHarish Mahendrakar   nanosecond_pts_ = nano_pts;
33*103e46e4SHarish Mahendrakar   codec_ = codec;
34*103e46e4SHarish Mahendrakar   return Init(length);
35*103e46e4SHarish Mahendrakar }
36*103e46e4SHarish Mahendrakar 
SetBufferLength(std::size_t length)37*103e46e4SHarish Mahendrakar bool VideoFrame::SetBufferLength(std::size_t length) {
38*103e46e4SHarish Mahendrakar   if (length > buffer_.capacity || buffer_.data.get() == nullptr)
39*103e46e4SHarish Mahendrakar     return false;
40*103e46e4SHarish Mahendrakar 
41*103e46e4SHarish Mahendrakar   buffer_.length = length;
42*103e46e4SHarish Mahendrakar   return true;
43*103e46e4SHarish Mahendrakar }
44*103e46e4SHarish Mahendrakar 
45*103e46e4SHarish Mahendrakar }  // namespace libwebm
46