| /* |
| * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "webrtc/modules/video_coding/main/test/video_source.h" |
| |
| #include <assert.h> |
| |
| #include "webrtc/test/testsupport/fileutils.h" |
| |
| VideoSource::VideoSource() |
| : |
| _fileName(webrtc::test::ProjectRootPath() + "resources/foreman_cif.yuv"), |
| _width(352), |
| _height(288), |
| _type(webrtc::kI420), |
| _frameRate(30) |
| { |
| // |
| } |
| |
| VideoSource::VideoSource(std::string fileName, VideoSize size, |
| float frameRate, webrtc::VideoType type /*= webrtc::kI420*/) |
| : |
| _fileName(fileName), |
| _width(0), |
| _height(0), |
| _type(type), |
| _frameRate(frameRate) |
| { |
| assert(size != kUndefined && size != kNumberOfVideoSizes); |
| assert(type != webrtc::kUnknown); |
| assert(frameRate > 0); |
| GetWidthHeight(size); |
| } |
| |
| VideoSource::VideoSource(std::string fileName, uint16_t width, uint16_t height, |
| float frameRate /*= 30*/, webrtc::VideoType type /*= webrtc::kI420*/) |
| : |
| _fileName(fileName), |
| _width(width), |
| _height(height), |
| _type(type), |
| _frameRate(frameRate) |
| { |
| assert(width > 0); |
| assert(height > 0); |
| assert(type != webrtc::kUnknown); |
| assert(frameRate > 0); |
| } |
| |
| size_t |
| VideoSource::GetFrameLength() const |
| { |
| return webrtc::CalcBufferSize(_type, _width, _height); |
| } |
| |
| std::string |
| VideoSource::GetName() const |
| { |
| // Remove path. |
| size_t slashPos = _fileName.find_last_of("/\\"); |
| if (slashPos == std::string::npos) |
| { |
| slashPos = 0; |
| } |
| else |
| { |
| slashPos++; |
| } |
| |
| // Remove extension and underscored suffix if it exists. |
| //return _fileName.substr(slashPos, std::min(_fileName.find_last_of("_"), |
| // _fileName.find_last_of(".")) - slashPos); |
| // MS: Removing suffix, not underscore....keeping full file name |
| return _fileName.substr(slashPos, _fileName.find_last_of(".") - slashPos); |
| |
| } |
| |
| int |
| VideoSource::GetWidthHeight( VideoSize size) |
| { |
| switch(size) |
| { |
| case kSQCIF: |
| _width = 128; |
| _height = 96; |
| return 0; |
| case kQQVGA: |
| _width = 160; |
| _height = 120; |
| return 0; |
| case kQCIF: |
| _width = 176; |
| _height = 144; |
| return 0; |
| case kCGA: |
| _width = 320; |
| _height = 200; |
| return 0; |
| case kQVGA: |
| _width = 320; |
| _height = 240; |
| return 0; |
| case kSIF: |
| _width = 352; |
| _height = 240; |
| return 0; |
| case kWQVGA: |
| _width = 400; |
| _height = 240; |
| return 0; |
| case kCIF: |
| _width = 352; |
| _height = 288; |
| return 0; |
| case kW288p: |
| _width = 512; |
| _height = 288; |
| return 0; |
| case k448p: |
| _width = 576; |
| _height = 448; |
| return 0; |
| case kVGA: |
| _width = 640; |
| _height = 480; |
| return 0; |
| case k432p: |
| _width = 720; |
| _height = 432; |
| return 0; |
| case kW432p: |
| _width = 768; |
| _height = 432; |
| return 0; |
| case k4SIF: |
| _width = 704; |
| _height = 480; |
| return 0; |
| case kW448p: |
| _width = 768; |
| _height = 448; |
| return 0; |
| case kNTSC: |
| _width = 720; |
| _height = 480; |
| return 0; |
| case kFW448p: |
| _width = 800; |
| _height = 448; |
| return 0; |
| case kWVGA: |
| _width = 800; |
| _height = 480; |
| return 0; |
| case k4CIF: |
| _width = 704; |
| _height = 576; |
| return 0; |
| case kSVGA: |
| _width = 800; |
| _height = 600; |
| return 0; |
| case kW544p: |
| _width = 960; |
| _height = 544; |
| return 0; |
| case kW576p: |
| _width = 1024; |
| _height = 576; |
| return 0; |
| case kHD: |
| _width = 960; |
| _height = 720; |
| return 0; |
| case kXGA: |
| _width = 1024; |
| _height = 768; |
| return 0; |
| case kFullHD: |
| _width = 1440; |
| _height = 1080; |
| return 0; |
| case kWHD: |
| _width = 1280; |
| _height = 720; |
| return 0; |
| case kWFullHD: |
| _width = 1920; |
| _height = 1080; |
| return 0; |
| default: |
| return -1; |
| } |
| } |