Line data Source code
1 : /*
2 : * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 : *
4 : * Use of this source code is governed by a BSD-style license
5 : * that can be found in the LICENSE file in the root of the source
6 : * tree. An additional intellectual property rights grant can be found
7 : * in the file PATENTS. All contributing project authors may
8 : * be found in the AUTHORS file in the root of the source tree.
9 : */
10 :
11 : #include "webrtc/api/video/video_frame.h"
12 :
13 : #include "webrtc/base/checks.h"
14 : #include "webrtc/base/timeutils.h"
15 :
16 : namespace webrtc {
17 :
18 0 : VideoFrame::VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
19 : webrtc::VideoRotation rotation,
20 0 : int64_t timestamp_us)
21 : : video_frame_buffer_(buffer),
22 : timestamp_rtp_(0),
23 : ntp_time_ms_(0),
24 : timestamp_us_(timestamp_us),
25 0 : rotation_(rotation) {}
26 :
27 0 : VideoFrame::VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
28 : uint32_t timestamp,
29 : int64_t render_time_ms,
30 0 : VideoRotation rotation)
31 : : video_frame_buffer_(buffer),
32 : timestamp_rtp_(timestamp),
33 : ntp_time_ms_(0),
34 0 : timestamp_us_(render_time_ms * rtc::kNumMicrosecsPerMillisec),
35 0 : rotation_(rotation) {
36 0 : RTC_DCHECK(buffer);
37 0 : }
38 :
39 : VideoFrame::~VideoFrame() = default;
40 :
41 : VideoFrame::VideoFrame(const VideoFrame&) = default;
42 : VideoFrame::VideoFrame(VideoFrame&&) = default;
43 : VideoFrame& VideoFrame::operator=(const VideoFrame&) = default;
44 : VideoFrame& VideoFrame::operator=(VideoFrame&&) = default;
45 :
46 0 : int VideoFrame::width() const {
47 0 : return video_frame_buffer_ ? video_frame_buffer_->width() : 0;
48 : }
49 :
50 0 : int VideoFrame::height() const {
51 0 : return video_frame_buffer_ ? video_frame_buffer_->height() : 0;
52 : }
53 :
54 0 : rtc::scoped_refptr<VideoFrameBuffer> VideoFrame::video_frame_buffer() const {
55 0 : return video_frame_buffer_;
56 : }
57 :
58 0 : void VideoFrame::set_render_time_ms(int64_t render_time_ms) {
59 0 : set_timestamp_us(render_time_ms * rtc::kNumMicrosecsPerMillisec);
60 0 : }
61 :
62 0 : int64_t VideoFrame::render_time_ms() const {
63 0 : return timestamp_us() / rtc::kNumMicrosecsPerMillisec;
64 : }
65 :
66 : } // namespace webrtc
|