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#ifndef WEBRTC_MODULES_VIDEO_CODING_TEST_VIDEO_SOURCE_H_
12#define WEBRTC_MODULES_VIDEO_CODING_TEST_VIDEO_SOURCE_H_
13
14#include <string>
15
16#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
17#include "webrtc/typedefs.h"
18
19enum VideoSize {
20  kUndefined,
21  kSQCIF,    // 128*96       = 12 288
22  kQQVGA,    // 160*120      = 19 200
23  kQCIF,     // 176*144      = 25 344
24  kCGA,      // 320*200      = 64 000
25  kQVGA,     // 320*240      = 76 800
26  kSIF,      // 352*240      = 84 480
27  kWQVGA,    // 400*240      = 96 000
28  kCIF,      // 352*288      = 101 376
29  kW288p,    // 512*288      = 147 456 (WCIF)
30  k448p,     // 576*448      = 281 088
31  kVGA,      // 640*480      = 307 200
32  k432p,     // 720*432      = 311 040
33  kW432p,    // 768*432      = 331 776
34  k4SIF,     // 704*480      = 337 920
35  kW448p,    // 768*448      = 344 064
36  kNTSC,     // 720*480      = 345 600
37  kFW448p,   // 800*448      = 358 400
38  kWVGA,     // 800*480      = 384 000
39  k4CIF,     // 704*576      = 405 504
40  kSVGA,     // 800*600      = 480 000
41  kW544p,    // 960*544      = 522 240
42  kW576p,    // 1024*576     = 589 824 (W4CIF)
43  kHD,       // 960*720      = 691 200
44  kXGA,      // 1024*768     = 786 432
45  kWHD,      // 1280*720     = 921 600
46  kFullHD,   // 1440*1080    = 1 555 200
47  kWFullHD,  // 1920*1080    = 2 073 600
48
49  kNumberOfVideoSizes
50};
51
52class VideoSource {
53 public:
54  VideoSource();
55  VideoSource(std::string fileName,
56              VideoSize size,
57              float frameRate,
58              webrtc::VideoType type = webrtc::kI420);
59  VideoSource(std::string fileName,
60              uint16_t width,
61              uint16_t height,
62              float frameRate = 30,
63              webrtc::VideoType type = webrtc::kI420);
64
65  std::string GetFileName() const { return _fileName; }
66  uint16_t GetWidth() const { return _width; }
67  uint16_t GetHeight() const { return _height; }
68  webrtc::VideoType GetType() const { return _type; }
69  float GetFrameRate() const { return _frameRate; }
70  int GetWidthHeight(VideoSize size);
71
72  // Returns the filename with the path (including the leading slash) removed.
73  std::string GetName() const;
74
75  size_t GetFrameLength() const;
76
77 private:
78  std::string _fileName;
79  uint16_t _width;
80  uint16_t _height;
81  webrtc::VideoType _type;
82  float _frameRate;
83};
84
85#endif  // WEBRTC_MODULES_VIDEO_CODING_TEST_VIDEO_SOURCE_H_
86