⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fposrec.cpp

📁 完整的RTP RTSP代码库
💻 CPP
字号:
#include "mpeg4ip.h"#include "fposrec.h"CFilePosRecorder::CFilePosRecorder (void){  m_first = m_last = NULL;}CFilePosRecorder::~CFilePosRecorder (void){  frame_file_pos_t *ptr;  while (m_first != NULL) {    ptr = m_first;    m_first = m_first->next;    free(ptr);  }  m_last = NULL;}void CFilePosRecorder::record_point (uint64_t file_position,				     uint64_t ts, 				     uint64_t frame){  frame_file_pos_t *ptr;  if (m_first == NULL) {    m_first = m_last = (frame_file_pos_t *)malloc(sizeof(frame_file_pos_t));    ptr = m_first;    ptr->next = NULL;  } else {    if (ts == m_last->timestamp) {      return;    } else if (ts > m_last->timestamp) {      m_last->next = (frame_file_pos_t *)malloc(sizeof(frame_file_pos_t));      m_last = m_last->next;      ptr = m_last;      ptr->next = NULL;    } else if (ts == m_first->timestamp) {      return;    } else if (ts < m_first->timestamp) {      ptr = (frame_file_pos_t *)malloc(sizeof(frame_file_pos_t));      ptr->next = m_first;      m_first = ptr;    } else {      frame_file_pos_t *p, *q;      ptr = NULL;      q = m_first;      p = m_first->next;      while (ptr == NULL) {	if (ts == p->timestamp)	  return;	if (ts < p->timestamp) {	  ptr = (frame_file_pos_t *)malloc(sizeof(frame_file_pos_t));	  q->next = ptr;	  ptr->next = p;	} else {	  q = p;	  p = p->next;	}      }    }  }  ptr->timestamp = ts;  ptr->file_position = file_position;  ptr->frames = frame;}const frame_file_pos_t *CFilePosRecorder::find_closest_point (uint64_t ts){  frame_file_pos_t *p, *q;  if (m_first == NULL) {    return NULL;  }  if (m_last->timestamp <= ts) {    return m_last;  }  if (m_first->timestamp >= ts) return m_first;  q = m_first;  p = m_first->next;  while (p != NULL) {    if (ts < p->timestamp) {      return q;    }    q = p;    p = p->next;  }  return NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -