示例#1
0
文件: AddDevice.cpp 项目: YTYOON/eNVR
void CAddDevice::AddDevice()
{
	ec_Camera camObj;
	CString strAddress, strPort;
	bool isCGIReady = false;
	
	GetKeyinAddress(strAddress, strPort);

	m_DeviceType = m_pbk->GetDeviceModelType(strAddress, strPort, m_strUserName, m_strPassword);
	if (m_isONVIF = isONVIF())
	{
		m_DeviceType = UN_KNOW;
	}
	isCGIReady = GetCGI();
	GetCameraObj(camObj);
	GetVideoStream(camObj);

	if (m_DeviceType != ERROR_TYPE && isCGIReady)
	{
		m_isAddSuccess = true;
	}
	if (m_isONVIF)
	{
		if (camObj.stream_url.IsEmpty())
		{
			m_isAddSuccess = false;
		}
	}
	InsertDevice2DB(camObj);
}
示例#2
0
double wxFfmpegMediaDecoder::GetPosition() {
	AVStream *st = GetVideoStream();
	if (st == NULL)
		return -1;
	int64_t timestamp = st->cur_dts;
	if (timestamp == (int64_t)AV_NOPTS_VALUE)
		return -1;
	timestamp = av_rescale(timestamp, AV_TIME_BASE * (int64_t)st->time_base.num, st->time_base.den);
	if (m_formatCtx->start_time != (int64_t)AV_NOPTS_VALUE)
		timestamp -= m_formatCtx->start_time;
	return ((double)timestamp)/AV_TIME_BASE;
}
示例#3
0
float wxFfmpegMediaDecoder::GetFps() {
	AVStream *st = GetVideoStream();
	if (st == NULL)
		return -1;
	float result = -1;
	if (st->avg_frame_rate.num && st->avg_frame_rate.den) {
		if (st->avg_frame_rate.num > st->avg_frame_rate.den)
			result = ((float) st->avg_frame_rate.num) / st->avg_frame_rate.den;
		else
			result = ((float) st->avg_frame_rate.den) / st->avg_frame_rate.num;
	}
	return result;
}
示例#4
0
float wxFfmpegMediaDecoder::GetFrameAspectRatio() {
	AVStream *st = GetVideoStream();
	if (st == NULL)
		return -1;
	float frame_aspect_ratio = 1;
	AVCodecContext *enc = st->codec;
	if (st->sample_aspect_ratio.num)
		frame_aspect_ratio = av_q2d(st->sample_aspect_ratio);
	else if (enc->sample_aspect_ratio.num)
		frame_aspect_ratio = av_q2d(enc->sample_aspect_ratio);
	frame_aspect_ratio *= (float) enc->width / enc->height;
	return frame_aspect_ratio;
}