Home | History | Annotate | Download | only in test
      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 
     19 enum 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 
     52 class 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