📄 mp4live_config.h
字号:
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is MPEG4IP. * * The Initial Developer of the Original Code is Cisco Systems Inc. * Portions created by Cisco Systems Inc. are * Copyright (C) Cisco Systems Inc. 2000, 2001. All Rights Reserved. * * Contributor(s): * Dave Mackie dmackie@cisco.com * Bill May wmay@cisco.com */#ifndef __LIVE_CONFIG_H__#define __LIVE_CONFIG_H__#include <sys/types.h>#include <linux/videodev.h>#define CONFIG_SAFETY 0 // go fast, live dangerously#include "config_set.h"#include "media_time.h"#include "video_util_tv.h"#define NUM_FILE_HISTORY 8#define FILE_SOURCE "FILE"#define URL_SOURCE "URL"#define AUDIO_SOURCE_OSS "OSS"#define AUDIO_ENCODER_FAAC "faac"#define AUDIO_ENCODER_LAME "lame"#define AUDIO_ENCODING_NONE "None"#define AUDIO_ENCODING_PCM16 "PCM16"#define AUDIO_ENCODING_MP3 "MP3"#define AUDIO_ENCODING_AAC "AAC"#define AUDIO_ENCODING_AC3 "AC3"#define AUDIO_ENCODING_VORBIS "VORBIS"#define VIDEO_SOURCE_V4L "V4L"#define VIDEO_ENCODER_FFMPEG "ffmpeg"#define VIDEO_ENCODER_DIVX "divx"#define VIDEO_ENCODER_H26L "h26l"#define VIDEO_ENCODER_XVID "xvid"#define VIDEO_ENCODING_NONE "None"#define VIDEO_ENCODING_YUV12 "YUV12"#define VIDEO_ENCODING_MPEG2 "MPEG2"#define VIDEO_ENCODING_MPEG4 "MPEG4"#define VIDEO_ENCODING_H26L "H26L"#define VIDEO_NTSC_FRAME_RATE ((float)29.97)#define VIDEO_PAL_FRAME_RATE ((float)25.00)#define VIDEO_STD_ASPECT_RATIO ((float)1.33) // standard 4:3#define VIDEO_LB1_ASPECT_RATIO ((float)2.35) // typical "widescreen" format#define VIDEO_LB2_ASPECT_RATIO ((float)1.85) // alternate widescreen format#define VIDEO_LB3_ASPECT_RATIO ((float)1.78) // hdtv 16:9#define MP3_MPEG1_SAMPLES_PER_FRAME 1152 // for MPEG-1 bitrates#define MP3_MPEG2_SAMPLES_PER_FRAME 576 // for MPEG-2 bitrates// forward declarationsclass CVideoCapabilities;class CAudioCapabilities;class CLiveConfig;// some configuration utility routinesvoid GenerateMpeg4VideoConfig(CLiveConfig* pConfig);bool GenerateSdpFile(CLiveConfig* pConfig);struct session_desc_t;session_desc_t *createSdpDescription(CLiveConfig *pConfig, char *sAudioDestAddr, char *sVideoDestAddr, int ttl, bool allow_rtcp, int video_port, int audio_port);DECLARE_CONFIG(CONFIG_APP_REAL_TIME);DECLARE_CONFIG(CONFIG_APP_REAL_TIME_SCHEDULER);DECLARE_CONFIG(CONFIG_APP_DURATION);DECLARE_CONFIG(CONFIG_APP_DURATION_UNITS);DECLARE_CONFIG(CONFIG_APP_FILE_0);DECLARE_CONFIG(CONFIG_APP_FILE_1);DECLARE_CONFIG(CONFIG_APP_FILE_2);DECLARE_CONFIG(CONFIG_APP_FILE_3);DECLARE_CONFIG(CONFIG_APP_FILE_4);DECLARE_CONFIG(CONFIG_APP_FILE_5);DECLARE_CONFIG(CONFIG_APP_FILE_6);DECLARE_CONFIG(CONFIG_APP_FILE_7);DECLARE_CONFIG(CONFIG_APP_DEBUG);DECLARE_CONFIG(CONFIG_APP_LOGLEVEL);DECLARE_CONFIG(CONFIG_APP_SIGNAL_HALT);DECLARE_CONFIG(CONFIG_AUDIO_ENABLE);DECLARE_CONFIG(CONFIG_AUDIO_SOURCE_TYPE);DECLARE_CONFIG(CONFIG_AUDIO_SOURCE_NAME);DECLARE_CONFIG(CONFIG_AUDIO_MIXER_NAME);DECLARE_CONFIG(CONFIG_AUDIO_INPUT_NAME);DECLARE_CONFIG(CONFIG_AUDIO_SOURCE_TRACK);DECLARE_CONFIG(CONFIG_AUDIO_CHANNELS);DECLARE_CONFIG(CONFIG_AUDIO_SAMPLE_RATE);DECLARE_CONFIG(CONFIG_AUDIO_BIT_RATE_KBPS);DECLARE_CONFIG(CONFIG_AUDIO_BIT_RATE);DECLARE_CONFIG(CONFIG_AUDIO_ENCODING);DECLARE_CONFIG(CONFIG_AUDIO_ENCODER);DECLARE_CONFIG(CONFIG_VIDEO_ENABLE);DECLARE_CONFIG(CONFIG_VIDEO_SOURCE_TYPE);DECLARE_CONFIG(CONFIG_VIDEO_SOURCE_NAME);DECLARE_CONFIG(CONFIG_VIDEO_INPUT);DECLARE_CONFIG(CONFIG_VIDEO_SIGNAL);DECLARE_CONFIG(CONFIG_VIDEO_TUNER);DECLARE_CONFIG(CONFIG_VIDEO_CHANNEL_LIST_INDEX);DECLARE_CONFIG(CONFIG_VIDEO_CHANNEL_INDEX);DECLARE_CONFIG(CONFIG_VIDEO_SOURCE_TRACK);DECLARE_CONFIG(CONFIG_VIDEO_PREVIEW);DECLARE_CONFIG(CONFIG_VIDEO_RAW_PREVIEW);DECLARE_CONFIG(CONFIG_VIDEO_ENCODED_PREVIEW);DECLARE_CONFIG(CONFIG_VIDEO_ENCODER);DECLARE_CONFIG(CONFIG_VIDEO_ENCODING);DECLARE_CONFIG(CONFIG_VIDEO_RAW_WIDTH);DECLARE_CONFIG(CONFIG_VIDEO_RAW_HEIGHT);DECLARE_CONFIG(CONFIG_VIDEO_ASPECT_RATIO);DECLARE_CONFIG(CONFIG_VIDEO_FRAME_RATE);DECLARE_CONFIG(CONFIG_VIDEO_KEY_FRAME_INTERVAL);DECLARE_CONFIG(CONFIG_VIDEO_BIT_RATE);DECLARE_CONFIG(CONFIG_VIDEO_PROFILE_ID);DECLARE_CONFIG(CONFIG_VIDEO_PROFILE_LEVEL_ID);DECLARE_CONFIG(CONFIG_VIDEO_BRIGHTNESS);DECLARE_CONFIG(CONFIG_VIDEO_HUE);DECLARE_CONFIG(CONFIG_VIDEO_COLOR);DECLARE_CONFIG(CONFIG_VIDEO_CONTRAST);DECLARE_CONFIG(CONFIG_VIDEO_TIMEBITS);DECLARE_CONFIG(CONFIG_V4L_CACHE_TIMESTAMP);DECLARE_CONFIG(CONFIG_RECORD_ENABLE);DECLARE_CONFIG(CONFIG_RECORD_RAW_AUDIO);DECLARE_CONFIG(CONFIG_RECORD_RAW_VIDEO);DECLARE_CONFIG(CONFIG_RECORD_ENCODED_AUDIO);DECLARE_CONFIG(CONFIG_RECORD_ENCODED_VIDEO);DECLARE_CONFIG(CONFIG_RECORD_MP4_FILE_NAME);DECLARE_CONFIG(CONFIG_RECORD_MP4_HINT_TRACKS);DECLARE_CONFIG(CONFIG_RECORD_MP4_OVERWRITE);DECLARE_CONFIG(CONFIG_RECORD_MP4_OPTIMIZE);DECLARE_CONFIG(CONFIG_RTP_ENABLE);DECLARE_CONFIG(CONFIG_RTP_DEST_ADDRESS); // for videoDECLARE_CONFIG(CONFIG_RTP_AUDIO_DEST_PORT);DECLARE_CONFIG(CONFIG_RTP_VIDEO_DEST_PORT);DECLARE_CONFIG(CONFIG_RTP_OVER_RTSP);DECLARE_CONFIG(CONFIG_RTP_RECV_BUFFER_TIME);DECLARE_CONFIG(CONFIG_RTP_PAYLOAD_SIZE);DECLARE_CONFIG(CONFIG_RTP_MCAST_TTL);DECLARE_CONFIG(CONFIG_RTP_DISABLE_TS_OFFSET);DECLARE_CONFIG(CONFIG_RTP_USE_SSM);DECLARE_CONFIG(CONFIG_SDP_FILE_NAME);DECLARE_CONFIG(CONFIG_RTP_AUDIO_DEST_ADDRESS);DECLARE_CONFIG(CONFIG_RTP_USE_MP3_PAYLOAD_14);DECLARE_CONFIG(CONFIG_RAW_ENABLE);DECLARE_CONFIG(CONFIG_RAW_PCM_FILE_NAME);DECLARE_CONFIG(CONFIG_RAW_PCM_FIFO);DECLARE_CONFIG(CONFIG_RAW_YUV_FILE_NAME);DECLARE_CONFIG(CONFIG_RAW_YUV_FIFO);// normally this would be in a .cpp file// but we have it here to make it easier to keep// the enumerator list and the variables in sync#ifdef DECLARE_CONFIG_VARIABLESstatic SConfigVariable MyConfigVariables[] = { // APP CONFIG_BOOL(CONFIG_APP_REAL_TIME, "isRealTime", true), CONFIG_BOOL(CONFIG_APP_REAL_TIME_SCHEDULER, "useRealTimeScheduler", true), CONFIG_INT(CONFIG_APP_DURATION, "duration", 1), CONFIG_INT(CONFIG_APP_DURATION_UNITS, "durationUnits", 60), CONFIG_STRING(CONFIG_APP_FILE_0, "file0", ""), CONFIG_STRING(CONFIG_APP_FILE_1, "file1", ""), CONFIG_STRING(CONFIG_APP_FILE_2, "file2", ""), CONFIG_STRING(CONFIG_APP_FILE_3, "file3", ""), CONFIG_STRING(CONFIG_APP_FILE_4, "file4", ""), CONFIG_STRING(CONFIG_APP_FILE_5, "file5", ""), CONFIG_STRING(CONFIG_APP_FILE_6, "file6", ""), CONFIG_STRING(CONFIG_APP_FILE_7, "file7", ""), CONFIG_BOOL(CONFIG_APP_DEBUG, "debug", false), CONFIG_INT(CONFIG_APP_LOGLEVEL, "logLevel", 0), CONFIG_STRING(CONFIG_APP_SIGNAL_HALT, "signalHalt", "sighup"), // AUDIO CONFIG_BOOL(CONFIG_AUDIO_ENABLE, "audioEnable", true), CONFIG_STRING(CONFIG_AUDIO_SOURCE_TYPE, "audioSourceType", AUDIO_SOURCE_OSS), CONFIG_STRING(CONFIG_AUDIO_SOURCE_NAME, "audioDevice", "/dev/dsp"), CONFIG_STRING(CONFIG_AUDIO_MIXER_NAME, "audioMixer", "/dev/mixer"), CONFIG_STRING(CONFIG_AUDIO_INPUT_NAME, "audioInput", "mix"), CONFIG_INT(CONFIG_AUDIO_SOURCE_TRACK, "audioSourceTrack", 0), CONFIG_INT(CONFIG_AUDIO_CHANNELS, "audioChannels", 2), CONFIG_INT(CONFIG_AUDIO_SAMPLE_RATE, "audioSampleRate", 44100), CONFIG_INT(CONFIG_AUDIO_BIT_RATE_KBPS, "audioBitRate", 128), CONFIG_INT(CONFIG_AUDIO_BIT_RATE, "audioBitRateBps",128000), CONFIG_STRING(CONFIG_AUDIO_ENCODING, "audioEncoding", AUDIO_ENCODING_MP3), CONFIG_STRING(CONFIG_AUDIO_ENCODER, "audioEncoder", AUDIO_ENCODER_LAME), // VIDEO CONFIG_BOOL(CONFIG_VIDEO_ENABLE, "videoEnable", true), CONFIG_STRING(CONFIG_VIDEO_SOURCE_TYPE, "videoSourceType", VIDEO_SOURCE_V4L), CONFIG_STRING(CONFIG_VIDEO_SOURCE_NAME, "videoDevice", "/dev/video0"), CONFIG_INT(CONFIG_VIDEO_INPUT, "videoInput", 1), CONFIG_INT(CONFIG_VIDEO_SIGNAL, "videoSignal", VIDEO_MODE_NTSC), CONFIG_INT(CONFIG_VIDEO_TUNER, "videoTuner", -1), CONFIG_INT(CONFIG_VIDEO_CHANNEL_LIST_INDEX, "videoChannelListIndex", 0), CONFIG_INT(CONFIG_VIDEO_CHANNEL_INDEX, "videoChannelIndex", 1), CONFIG_INT(CONFIG_VIDEO_SOURCE_TRACK, "videoSourceTrack", 0), CONFIG_BOOL(CONFIG_VIDEO_PREVIEW, "videoPreview", true), CONFIG_BOOL(CONFIG_VIDEO_RAW_PREVIEW, "videoRawPreview", false), CONFIG_BOOL(CONFIG_VIDEO_ENCODED_PREVIEW, "videoEncodedPreview", true), CONFIG_STRING(CONFIG_VIDEO_ENCODER, "videoEncoder", VIDEO_ENCODER_XVID), CONFIG_STRING(CONFIG_VIDEO_ENCODING, "videoEncoding", VIDEO_ENCODING_MPEG4), CONFIG_INT(CONFIG_VIDEO_RAW_WIDTH, "videoRawWidth", 320), CONFIG_INT(CONFIG_VIDEO_RAW_HEIGHT, "videoRawHeight", 240), CONFIG_FLOAT(CONFIG_VIDEO_ASPECT_RATIO, "videoAspectRatio", VIDEO_STD_ASPECT_RATIO), CONFIG_FLOAT(CONFIG_VIDEO_FRAME_RATE, "videoFrameRate", VIDEO_NTSC_FRAME_RATE), CONFIG_FLOAT(CONFIG_VIDEO_KEY_FRAME_INTERVAL, "videoKeyFrameInterval", 2.0), CONFIG_INT(CONFIG_VIDEO_BIT_RATE, "videoBitRate",500), CONFIG_INT(CONFIG_VIDEO_PROFILE_ID, "videoProfileId",1), CONFIG_INT(CONFIG_VIDEO_PROFILE_LEVEL_ID, "videoProfileLevelId", 3), CONFIG_INT(CONFIG_VIDEO_BRIGHTNESS, "videoBrightness", 50), CONFIG_INT(CONFIG_VIDEO_HUE, "videoHue", 50), CONFIG_INT(CONFIG_VIDEO_COLOR, "videoColor", 50), CONFIG_INT(CONFIG_VIDEO_CONTRAST, "videoContrast", 50), CONFIG_INT(CONFIG_VIDEO_TIMEBITS, "videoTimebits", 0), CONFIG_BOOL(CONFIG_V4L_CACHE_TIMESTAMP, "videoTimestampCache", true), // RECORD CONFIG_BOOL(CONFIG_RECORD_ENABLE, "recordEnable", true), CONFIG_BOOL(CONFIG_RECORD_RAW_AUDIO, "recordRawAudio", false), CONFIG_BOOL(CONFIG_RECORD_RAW_VIDEO, "recordRawVideo", false), CONFIG_BOOL(CONFIG_RECORD_ENCODED_AUDIO, "recordEncodedAudio", true), CONFIG_BOOL(CONFIG_RECORD_ENCODED_VIDEO, "recordEncodedVideo", true), CONFIG_STRING(CONFIG_RECORD_MP4_FILE_NAME, "recordMp4File", "capture.mp4"), CONFIG_BOOL(CONFIG_RECORD_MP4_HINT_TRACKS, "recordMp4HintTracks", true), CONFIG_BOOL(CONFIG_RECORD_MP4_OVERWRITE, "recordMp4Overwrite", true), CONFIG_BOOL(CONFIG_RECORD_MP4_OPTIMIZE, "recordMp4Optimize", false), // RTP CONFIG_BOOL(CONFIG_RTP_ENABLE, "rtpEnable", false), CONFIG_STRING(CONFIG_RTP_DEST_ADDRESS, "rtpDestAddress", "224.1.2.3"), CONFIG_STRING(CONFIG_RTP_AUDIO_DEST_ADDRESS, "audioRtpDestAddress", "224.1.2.3"), CONFIG_INT(CONFIG_RTP_AUDIO_DEST_PORT, "rtpAudioDestPort", 20002), CONFIG_INT(CONFIG_RTP_VIDEO_DEST_PORT, "rtpVideoDestPort", 20000), CONFIG_INT(CONFIG_RTP_PAYLOAD_SIZE, "rtpPayloadSize", 1460), CONFIG_INT(CONFIG_RTP_MCAST_TTL, "rtpMulticastTtl", 15), CONFIG_BOOL(CONFIG_RTP_DISABLE_TS_OFFSET, "rtpDisableTimestampOffset", false), CONFIG_BOOL(CONFIG_RTP_USE_SSM, "rtpUseSingleSourceMulticast", false), CONFIG_STRING(CONFIG_SDP_FILE_NAME, "sdpFile", "capture.sdp"), CONFIG_BOOL(CONFIG_RTP_USE_MP3_PAYLOAD_14, "rtpUseMp4RtpPayload14", false), // RAW sink CONFIG_BOOL(CONFIG_RAW_ENABLE, "rawEnable", false), CONFIG_STRING(CONFIG_RAW_PCM_FILE_NAME, "rawAudioFile", "capture.pcm"), CONFIG_BOOL(CONFIG_RAW_PCM_FIFO, "rawAudioUseFifo", false), CONFIG_STRING(CONFIG_RAW_YUV_FILE_NAME, "rawVideoFile", "capture.yuv"), CONFIG_BOOL(CONFIG_RAW_YUV_FIFO, "rawVideoUseFifo", false),};#endif /* DECLARE_CONFIG_VARIABLES */class CLiveConfig : public CConfigSet {public: CLiveConfig(SConfigVariable* variables, config_index_t numVariables, const char* defaultFileName); ~CLiveConfig(); // recalculate derived values void Update(); void UpdateFileHistory(const char* fileName); void UpdateVideo(); void CalculateVideoFrameSize(); void UpdateAudio(); void UpdateRecord(); bool IsOneSource(); bool IsCaptureVideoSource(); bool IsCaptureAudioSource(); bool IsFileVideoSource(); bool IsFileAudioSource(); bool SourceRawVideo() { return (GetBoolValue(CONFIG_VIDEO_RAW_PREVIEW) || (GetBoolValue(CONFIG_RECORD_ENABLE) && GetBoolValue(CONFIG_RECORD_RAW_VIDEO)) || GetBoolValue(CONFIG_RAW_ENABLE)); } bool SourceRawAudio() { return (GetBoolValue(CONFIG_RECORD_ENABLE) && GetBoolValue(CONFIG_RECORD_RAW_AUDIO)) || GetBoolValue(CONFIG_RAW_ENABLE); }public: // command line configuration bool m_appAutomatic; // derived, shared video configuration CVideoCapabilities* m_videoCapabilities; bool m_videoEncode; u_int32_t m_videoPreviewWindowId; u_int16_t m_videoWidth; u_int16_t m_videoHeight; u_int16_t m_videoMaxWidth; u_int16_t m_videoMaxHeight; u_int32_t m_ySize; u_int32_t m_uvSize; u_int32_t m_yuvSize; bool m_videoNeedRgbToYuv; u_int16_t m_videoMpeg4ConfigLength; u_int8_t* m_videoMpeg4Config; u_int32_t m_videoMaxVopSize; u_int8_t m_videoTimeIncrBits; // derived, shared audio configuration CAudioCapabilities* m_audioCapabilities; bool m_audioEncode; // derived, shared file configuration u_int64_t m_recordEstFileSize;};#endif /* __LIVE_CONFIG_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -