• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_VIDEO_ENGINE_TEST_AUTO_TEST_PRIMITIVES_GENERAL_PRIMITIVES_H_
12 #define WEBRTC_VIDEO_ENGINE_TEST_AUTO_TEST_PRIMITIVES_GENERAL_PRIMITIVES_H_
13 
14 class ViEToFileRenderer;
15 
16 #include "webrtc/common_types.h"
17 
18 namespace webrtc {
19 class VideoCaptureModule;
20 class ViEBase;
21 class ViECapture;
22 class ViECodec;
23 class ViERender;
24 class ViERTP_RTCP;
25 struct VideoCodec;
26 }
27 
28 enum ProtectionMethod {
29   kNack,
30   kHybridNackFec,
31 };
32 
33 // This constant can be used as input to various functions to not force the
34 // codec resolution.
35 const int kDoNotForceResolution = 0;
36 
37 // Finds a suitable capture device (e.g. camera) on the current system
38 // and allocates it. Details about the found device are filled into the out
39 // parameters. If this operation fails, device_id is assigned a negative value
40 // and number_of_errors is incremented.
41 void FindCaptureDeviceOnSystem(webrtc::ViECapture* capture,
42                                char* device_name,
43                                const unsigned int kDeviceNameLength,
44                                int* device_id,
45                                webrtc::VideoCaptureModule** device_video);
46 
47 // Sets up rendering in a window previously created using a Window Manager
48 // (See vie_window_manager_factory.h for more details on how to make one of
49 // those). The frame provider id is a source of video frames, for instance
50 // a capture device or a video channel.
51 void RenderInWindow(webrtc::ViERender* video_render_interface,
52                     int  frame_provider_id,
53                     void* os_window,
54                     float z_index);
55 
56 // Similar in function to RenderInWindow, this function instead renders to
57 // a file using a to-file-renderer. The frame provider id is a source of
58 // video frames, for instance a capture device or a video channel.
59 void RenderToFile(webrtc::ViERender* renderer_interface,
60                   int frame_provider_id,
61                   ViEToFileRenderer* to_file_renderer);
62 
63 // Configures RTP-RTCP.
64 void ConfigureRtpRtcp(webrtc::ViERTP_RTCP* rtcp_interface,
65                       ProtectionMethod protection_method,
66                       int video_channel);
67 
68 // Finds a codec in the codec list. Returns true on success, false otherwise.
69 // The resulting codec is filled into result on success but is zeroed out
70 // on failure.
71 bool FindSpecificCodec(webrtc::VideoCodecType of_type,
72                        webrtc::ViECodec* codec_interface,
73                        webrtc::VideoCodec* result);
74 
75 // Sets up the provided codec with a resolution that takes individual codec
76 // quirks into account (except if the forced* variables are
77 // != kDoNotForceResolution)
78 void SetSuitableResolution(webrtc::VideoCodec* video_codec,
79                            int forced_codec_width,
80                            int forced_codec_height);
81 
82 #endif  // WEBRTC_VIDEO_ENGINE_TEST_AUTO_TEST_PRIMITIVES_GENERAL_PRIMITIVES_H_
83