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

📄 text.cpp

📁 完整的RTP RTSP代码库
💻 CPP
字号:
#include "text.h"#include "text_plugin.h"#include "mpeg4ip_utils.h"#include "our_config_file.h"#include "text_href.h"CPlainTextRender::CPlainTextRender (void *n) : CTextRenderer() {  m_buffer_list = NULL;}void CPlainTextRender::load_frame (uint32_t fill_index, 				   uint32_t disp_type,				   void *disp_struct){  if (disp_type != TEXT_DISPLAY_TYPE_PLAIN) {    message(LOG_ERR, "text", "Expecting type %u got type %u in text render", 			 TEXT_DISPLAY_TYPE_PLAIN, disp_type);  }  plain_display_structure_t *pd = (plain_display_structure_t *)disp_struct;  m_buffer_list[fill_index] = (char *)strdup(pd->display_string);}void CPlainTextRender::render (uint32_t play_index){  message(LOG_INFO, "text", "%s", m_buffer_list[play_index]);  free(m_buffer_list[play_index]);  m_buffer_list[play_index] = NULL;}CTimedTextSync::CTimedTextSync (CPlayerSession *psptr) : CTimedSync("timed text", psptr){  m_render_device = NULL;}CTimedTextSync::~CTimedTextSync (void){  // remove any secondard functions  delete m_render_device;}int CTimedTextSync::initialize (const char *name){  if (m_initialized == false) {    if (m_config_set) {       // do initialization      m_initialized = true;    } else {      return 0;    }  }  return 1;}bool CTimedTextSync::is_ready (uint64_t &disptime){  disptime = m_play_this_at[m_play_index];  return m_buffer_filled[m_play_index];}void CTimedTextSync::configure (uint32_t display_type, 				void *display_config){  if (m_config_set == false) {    m_display_type = display_type;    switch (m_display_type) {    case TEXT_DISPLAY_TYPE_PLAIN:      m_render_device = new CPlainTextRender(display_config);      break;    case TEXT_DISPLAY_TYPE_HREF:      m_render_device = new CHrefTextRenderer(m_psptr, display_config);    }    initialize_indexes(m_render_device->initialize());    m_config_set = true;  }}void CTimedTextSync::render (uint32_t play_index){  m_render_device->render(play_index);}void CTimedTextSync::have_frame (uint64_t ts, uint32_t display_type, 				 void *disp_struct){  if (have_buffer_to_fill() == false) {    return;  }  m_render_device->load_frame(m_fill_index, display_type, disp_struct);  m_play_this_at[m_fill_index] = ts;  // call with fill index;  increment_fill_index();  save_last_filled_time(ts);  m_psptr->wake_sync_thread();}static void c_text_configure (void *ifptr, uint32_t display_type, 			      void *display_config){  CTimedTextSync *pText = (CTimedTextSync *)ifptr;  pText->configure(display_type, display_config);}static void c_text_have_frame (void *ifptr, 			       uint64_t display_time,			       uint32_t display_type,			       void *display_structure){  CTimedTextSync *pText = (CTimedTextSync *)ifptr;  pText->have_frame(display_time, display_type, display_structure);}static text_vft_t text_vft = {  message,  c_text_configure,   c_text_have_frame,   NULL,};text_vft_t *get_text_vft (void){  text_vft.pConfig = &config;  return &text_vft;}CTimedTextSync *create_text_sync (CPlayerSession *psptr){  return new CTimedTextSync(psptr);}

⌨️ 快捷键说明

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