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); }
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; }
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; }
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; }