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

📄 mp3_rtp_bytestream.cpp

📁 网络MPEG4IP流媒体开发源代码
💻 CPP
字号:
/* * 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. 2001.  All Rights Reserved. *  * Contributor(s):  *              Bill May        wmay@cisco.com *//* * mp3_rtp_bytestream.h - provides an RTP bytestream for the codecs * to access */#include "mp3_rtp_bytestream.h"#include <rtp/memory.h>//#define DEBUG_RTP_PAKS 1#ifdef _WIN32DEFINE_MESSAGE_MACRO(mp3_rtp_message, "mp3rtpbyst")#else#define mp3_rtp_message(loglevel, fmt...) message(loglevel, "mp3rtpbyst", fmt)#endifCMP3RtpByteStream::CMP3RtpByteStream (unsigned int rtp_pt,				      format_list_t *fmt,				      int ondemand,				      uint64_t tps,				      rtp_packet **head, 				      rtp_packet **tail,				      int rtp_seq_set, 				      uint16_t rtp_seq,				      int rtp_ts_set,				      uint32_t rtp_base_ts,				      int rtcp_received,				      uint32_t ntp_frac,				      uint32_t ntp_sec,				      uint32_t rtp_ts) :  CRtpByteStream("mp3", 		 fmt,		 rtp_pt,		 ondemand,		 tps,		 head, 		 tail,		 rtp_seq_set,		 rtp_seq,		 rtp_ts_set,		 rtp_base_ts,		 rtcp_received,		 ntp_frac,		 ntp_sec,		 rtp_ts){  m_pak_on = NULL;  set_skip_on_advance(4);  init();}CMP3RtpByteStream::~CMP3RtpByteStream(void){}int CMP3RtpByteStream::have_no_data (void){  if (m_head == NULL) return TRUE;  return FALSE;}int CMP3RtpByteStream::check_rtp_frame_complete_for_payload_type (void){  return m_head != NULL;}void CMP3RtpByteStream::reset(void){  m_buffer_len = m_bytes_used = 0;  CRtpByteStream::reset();}uint64_t CMP3RtpByteStream::start_next_frame (uint8_t **buffer, 					      uint32_t *buflen,					      void **userdata){  uint64_t timetick;  int32_t diff;  diff = m_buffer_len - m_bytes_used;  if (diff > 2) {    // Still bytes in the buffer...    *buffer = m_mp3_frame + m_bytes_used;    *buflen = diff;#ifdef DEBUG_RTP_PAKS    mp3_rtp_message(LOG_DEBUG, "%s Still left - %d bytes", m_name, *buflen);#endif    return (m_last_realtime);  } else {    m_buffer_len = 0;    if (m_pak_on != NULL) {      xfree(m_pak_on);    }    m_pak_on = m_head;    remove_packet_rtp_queue(m_pak_on, 0);          m_mp3_frame = (uint8_t *)m_pak_on->rtp_data;    m_buffer_len = m_pak_on->rtp_data_len;    m_ts = m_pak_on->rtp_pak_ts;    m_bytes_used = m_skip_on_advance_bytes;    *buffer = m_mp3_frame + m_bytes_used;    *buflen = m_buffer_len - m_bytes_used;#ifdef DEBUG_RTP_PAKS    mp3_rtp_message(LOG_DEBUG, "%s buffer len %d", m_name, m_buffer_len);#endif  }  timetick = rtp_ts_to_msec(m_ts, m_pak_on->pd.rtp_pd_timestamp, m_wrap_offset);    return (timetick);}

⌨️ 快捷键说明

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