• 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 /*
12  * Common multi-thread functionality across video coding module tests
13  */
14 
15 #ifndef WEBRTC_MODULES_VIDEO_CODING_TEST_MT_TEST_COMMON_H_
16 #define WEBRTC_MODULES_VIDEO_CODING_TEST_MT_TEST_COMMON_H_
17 
18 #include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h"
19 #include "webrtc/modules/video_coding/main/interface/video_coding.h"
20 #include "webrtc/modules/video_coding/main/test/test_callbacks.h"
21 #include "webrtc/modules/video_coding/main/test/video_source.h"
22 
23 namespace webrtc {
24 
25 class SendSharedState
26 {
27 public:
SendSharedState(webrtc::VideoCodingModule & vcm,webrtc::RtpRtcp & rtp,CmdArgs args)28     SendSharedState(webrtc::VideoCodingModule& vcm, webrtc::RtpRtcp& rtp,
29             CmdArgs args) :
30             _vcm(vcm),
31             _rtp(rtp),
32             _args(args),
33             _sourceFile(NULL),
34             _frameCnt(0),
35             _timestamp(0) {}
36 
37     webrtc::VideoCodingModule&  _vcm;
38     webrtc::RtpRtcp&            _rtp;
39     CmdArgs                     _args;
40     FILE*                       _sourceFile;
41     int32_t               _frameCnt;
42     int32_t               _timestamp;
43 };
44 
45 // MT implementation of the RTPSendCompleteCallback (Transport)
46 class TransportCallback:public RTPSendCompleteCallback
47 {
48  public:
49     // constructor input: (receive side) rtp module to send encoded data to
50     TransportCallback(Clock* clock, const char* filename = NULL);
51     virtual ~TransportCallback();
52     // Add packets to list
53     // Incorporate network conditions - delay and packet loss
54     // Actual transmission will occur on a separate thread
55     int SendPacket(int channel, const void *data, int len);
56     // Send to the receiver packets which are ready to be submitted
57     int TransportPackets();
58 };
59 
60 class SharedRTPState
61 {
62 public:
SharedRTPState(webrtc::VideoCodingModule & vcm,webrtc::RtpRtcp & rtp)63     SharedRTPState(webrtc::VideoCodingModule& vcm, webrtc::RtpRtcp& rtp) :
64         _vcm(vcm),
65         _rtp(rtp) {}
66     webrtc::VideoCodingModule&  _vcm;
67     webrtc::RtpRtcp&            _rtp;
68 };
69 
70 
71 class SharedTransportState
72 {
73 public:
SharedTransportState(webrtc::RtpRtcp & rtp,TransportCallback & transport)74     SharedTransportState(webrtc::RtpRtcp& rtp, TransportCallback& transport):
75         _rtp(rtp),
76         _transport(transport) {}
77     webrtc::RtpRtcp&            _rtp;
78     TransportCallback&          _transport;
79 };
80 
81 bool VCMProcessingThread(void* obj);
82 bool VCMDecodeThread(void* obj);
83 bool TransportThread(void *obj);
84 
85 }  // namespace webrtc
86 
87 #endif  // WEBRTC_MODULES_VIDEO_CODING_TEST_MT_TEST_COMMON_H_
88