295 lines
7.1 KiB
C
295 lines
7.1 KiB
C
|
/*
|
||
|
* 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.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* vie_defines.h
|
||
|
*/
|
||
|
|
||
|
#ifndef WEBRTC_VIDEO_ENGINE_MAIN_SOURCE_VIE_DEFINES_H_
|
||
|
#define WEBRTC_VIDEO_ENGINE_MAIN_SOURCE_VIE_DEFINES_H_
|
||
|
|
||
|
#include "engine_configurations.h"
|
||
|
|
||
|
#ifdef WEBRTC_MAC_INTEL
|
||
|
#include <stdio.h>
|
||
|
#include <unistd.h>
|
||
|
#endif
|
||
|
|
||
|
#ifdef ANDROID
|
||
|
#include <pthread.h>
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/socket.h>
|
||
|
#include <netinet/in.h>
|
||
|
#include <arpa/inet.h>
|
||
|
#include <linux/net.h>
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
#include <time.h>
|
||
|
#include <sys/time.h>
|
||
|
#endif
|
||
|
|
||
|
namespace webrtc
|
||
|
{
|
||
|
// ===================================================
|
||
|
// ViE Defines
|
||
|
// ===================================================
|
||
|
|
||
|
// General
|
||
|
enum { kViEMinKeyRequestIntervalMs = 300};
|
||
|
|
||
|
// ViEBase
|
||
|
enum { kViEMaxNumberOfChannels = 4};
|
||
|
enum { kViEVersionMaxMessageSize = 1024 };
|
||
|
enum { kViEMaxModuleVersionSize = 960 };
|
||
|
|
||
|
// ViECapture
|
||
|
enum { kViEMaxCaptureDevices=10};
|
||
|
// Width used if no send codec has been set when a capture device is started
|
||
|
enum { kViECaptureDefaultWidth = 352};
|
||
|
// Height used if no send codec has been set when a capture device is started
|
||
|
enum { kViECaptureDefaultHeight = 288};
|
||
|
enum { kViECaptureDefaultFramerate = 30};
|
||
|
enum { kViECaptureMaxSnapshotWaitTimeMs = 500 };
|
||
|
|
||
|
// ViECodec
|
||
|
enum { kViEMaxCodecWidth = 1920};
|
||
|
enum { kViEMaxCodecHeight = 1200};
|
||
|
enum { kViEMaxCodecFramerate = 60};
|
||
|
enum { kViEMinCodecBitrate = 30};
|
||
|
|
||
|
// ViEEncryption
|
||
|
enum { kViEMaxSrtpKeyLength = 30};
|
||
|
enum { kViEMinSrtpEncryptLength = 16};
|
||
|
enum { kViEMaxSrtpEncryptLength = 256};
|
||
|
enum { kViEMaxSrtpAuthSh1Length = 20};
|
||
|
enum { kViEMaxSrtpTagAuthNullLength = 12};
|
||
|
enum { kViEMaxSrtpKeyAuthNullLength = 256};
|
||
|
|
||
|
// ViEExternalCodec
|
||
|
|
||
|
// ViEFile
|
||
|
enum { kViEMaxFilePlayers = 3};
|
||
|
|
||
|
// ViEImageProcess
|
||
|
|
||
|
// ViENetwork
|
||
|
enum { kViEMaxMtu = 1500};
|
||
|
enum { kViESocketThreads = 1};
|
||
|
enum { kViENumReceiveSocketBuffers = 500};
|
||
|
|
||
|
// ViERender
|
||
|
// Max valid time set in SetRenderTimeoutImage
|
||
|
enum { kViEMaxRenderTimeoutTimeMs = 10000};
|
||
|
// Min valid time set in SetRenderTimeoutImage
|
||
|
enum { kViEMinRenderTimeoutTimeMs = 33};
|
||
|
enum { kViEDefaultRenderDelayMs = 10};
|
||
|
|
||
|
// ViERTP_RTCP
|
||
|
enum { kNackHistorySize = 400};
|
||
|
|
||
|
// Id definitions
|
||
|
enum {
|
||
|
kViEChannelIdBase=0x0,
|
||
|
kViEChannelIdMax=0xFF,
|
||
|
kViECaptureIdBase=0x1001,
|
||
|
kViECaptureIdMax=0x10FF,
|
||
|
kViEFileIdBase=0x2000,
|
||
|
kViEFileIdMax=0x200F,
|
||
|
kViEDummyChannelId=0xFFFF
|
||
|
};
|
||
|
|
||
|
// Module id
|
||
|
// Create a unique id based on the ViE instance id and the
|
||
|
// channel id. ViE id > 0 and 0 <= channel id <= 255
|
||
|
|
||
|
inline int ViEId(const int vieId, const int channelId = -1)
|
||
|
{
|
||
|
if (channelId == -1)
|
||
|
{
|
||
|
return (int) ((vieId << 16) + kViEDummyChannelId);
|
||
|
}
|
||
|
return (int) ((vieId << 16) + channelId);
|
||
|
}
|
||
|
|
||
|
inline int ViEModuleId(const int vieId, const int channelId = -1)
|
||
|
{
|
||
|
if (channelId == -1)
|
||
|
{
|
||
|
return (int) ((vieId << 16) + kViEDummyChannelId);
|
||
|
}
|
||
|
return (int) ((vieId << 16) + channelId);
|
||
|
}
|
||
|
|
||
|
inline int ChannelId(const int moduleId)
|
||
|
{
|
||
|
return (int) (moduleId & 0xffff);
|
||
|
}
|
||
|
|
||
|
|
||
|
// ============================================================================
|
||
|
// Platform specifics
|
||
|
// ============================================================================
|
||
|
|
||
|
//-------------------------------------
|
||
|
// Windows
|
||
|
//-------------------------------------
|
||
|
|
||
|
#if defined(_WIN32)
|
||
|
// Build information macros
|
||
|
#if defined(_DEBUG)
|
||
|
#define BUILDMODE TEXT("d")
|
||
|
#elif defined(DEBUG)
|
||
|
#define BUILDMODE TEXT("d")
|
||
|
#elif defined(NDEBUG)
|
||
|
#define BUILDMODE TEXT("r")
|
||
|
#else
|
||
|
#define BUILDMODE TEXT("?")
|
||
|
#endif
|
||
|
|
||
|
#define BUILDTIME TEXT(__TIME__)
|
||
|
#define BUILDDATE TEXT(__DATE__)
|
||
|
|
||
|
// example: "Oct 10 2002 12:05:30 r"
|
||
|
#define BUILDINFO BUILDDATE TEXT(" ") BUILDTIME TEXT(" ") BUILDMODE
|
||
|
|
||
|
|
||
|
#define RENDER_MODULE_TYPE kRenderWindows
|
||
|
// Warning pragmas
|
||
|
#pragma warning(disable: 4351) // new behavior: elements of array 'XXX' will be default initialized
|
||
|
#pragma warning(disable: 4355) // 'this' : used in base member initializer list
|
||
|
#pragma warning(disable: 4731) // frame pointer register 'ebp' modified by inline assembly code
|
||
|
|
||
|
// Include libraries
|
||
|
#pragma comment( lib, "winmm.lib" )
|
||
|
#ifndef WEBRTC_EXTERNAL_TRANSPORT
|
||
|
#pragma comment( lib, "ws2_32.lib" )
|
||
|
#pragma comment( lib, "Iphlpapi.lib" ) // _GetAdaptersAddresses
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
|
||
|
//-------------------------------------
|
||
|
// Mac
|
||
|
//-------------------------------------
|
||
|
|
||
|
#ifdef WEBRTC_MAC_INTEL
|
||
|
#define SLEEP(x) usleep(x * 1000)
|
||
|
|
||
|
// Build information macros
|
||
|
#define TEXT(x) x
|
||
|
#if defined(_DEBUG)
|
||
|
#define BUILDM//#define webrtc::kFileFormatAviFile 3
|
||
|
//#define __LINUX__ // needed for InterObjects
|
||
|
ODE TEXT("d")
|
||
|
#elif defined(DEBUG)
|
||
|
#define BUILDMODE TEXT("d")
|
||
|
#elif defined(NDEBUG)
|
||
|
#define BUILDMODE TEXT("r")
|
||
|
#else
|
||
|
#define BUILDMODE TEXT("?")
|
||
|
#endif
|
||
|
|
||
|
#define BUILDTIME TEXT(__TIME__)
|
||
|
#define BUILDDATE TEXT(__DATE__)
|
||
|
|
||
|
// example: "Oct 10 2002 12:05:30 r"
|
||
|
#define BUILDINFO BUILDDATE TEXT(" ") BUILDTIME TEXT(" ") BUILDMODE
|
||
|
|
||
|
#define RENDER_MODULE_TYPE kRenderWindows
|
||
|
#endif
|
||
|
|
||
|
//#define webrtc::kFileFormatAviFile 3
|
||
|
//#define __LINUX__ // needed for InterObjects
|
||
|
|
||
|
//-------------------------------------
|
||
|
// Linux
|
||
|
//-------------------------------------
|
||
|
|
||
|
#ifndef ANDROID
|
||
|
#ifdef WEBRTC_LINUX
|
||
|
|
||
|
// Build information macros
|
||
|
#if defined(_DEBUG)
|
||
|
#define BUILDMODE "d"
|
||
|
#elif defined(DEBUG)
|
||
|
#define BUILDMODE "d"
|
||
|
#elif defined(NDEBUG)
|
||
|
#define BUILDMODE "r"
|
||
|
#else
|
||
|
#define BUILDMODE "?"
|
||
|
#endif
|
||
|
|
||
|
#define BUILDTIME __TIME__
|
||
|
#define BUILDDATE __DATE__
|
||
|
|
||
|
// example: "Oct 10 2002 12:05:30 r"
|
||
|
#define BUILDINFO BUILDDATE " " BUILDTIME " " BUILDMODE
|
||
|
|
||
|
#endif // ifdef WEBRTC_LINUX
|
||
|
#endif // ifndef ANDROID
|
||
|
|
||
|
#ifdef ANDROID
|
||
|
|
||
|
#define DWORD unsigned long int
|
||
|
#define FALSE 0
|
||
|
#define TRUE 1
|
||
|
#define LONG int
|
||
|
#define LONGLONG long long
|
||
|
#define FAR
|
||
|
#define __cdecl
|
||
|
|
||
|
#if defined(_DEBUG)
|
||
|
#define BUILDMODE "d"
|
||
|
#elif defined(DEBUG)
|
||
|
#define BUILDMODE "d"
|
||
|
#elif defined(NDEBUG)
|
||
|
#define BUILDMODE "r"
|
||
|
#else
|
||
|
#define BUILDMODE "?"
|
||
|
#endif
|
||
|
|
||
|
#define BUILDTIME __TIME__
|
||
|
#define BUILDDATE __DATE__
|
||
|
|
||
|
// example: "Oct 10 2002 12:05:30 r"
|
||
|
#define BUILDINFO BUILDDATE " " BUILDTIME " " BUILDMODE
|
||
|
|
||
|
namespace
|
||
|
{
|
||
|
void Sleep(unsigned long x)
|
||
|
{
|
||
|
timespec t;
|
||
|
t.tv_sec = x/1000;
|
||
|
t.tv_nsec = (x-(x/1000)*1000)*1000000;
|
||
|
nanosleep(&t,NULL);
|
||
|
}
|
||
|
|
||
|
DWORD timeGetTime()
|
||
|
{
|
||
|
struct timeval tv;
|
||
|
struct timezone tz;
|
||
|
unsigned long val;
|
||
|
|
||
|
gettimeofday(&tv, &tz);
|
||
|
val= tv.tv_sec*1000+ tv.tv_usec/1000;
|
||
|
return(val);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#define SLEEP(x) ::Sleep(x)
|
||
|
#define GET_TIME_IN_MS timeGetTime
|
||
|
|
||
|
#endif // #ifdef ANDROID
|
||
|
|
||
|
} //namespace webrtc
|
||
|
#endif // WEBRTC_VIDEO_ENGINE_MAIN_SOURCE_VIE_DEFINES_H_
|
||
|
|