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

📄 mpeg2ps_private.h

📁 完整的RTP RTSP代码库
💻 H
字号:
/* * 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. 2004.  All Rights Reserved. *  * Contributor(s):  *		Bill May wmay@cisco.com */#ifndef __MPEG2PS_PRIVATE_H__#define __MPEG2PS_PRIVATE_H__ 1#include "mpeg4ip.h"static __inline uint16_t convert16 (uint8_t *p){#ifdef WORDS_BIGENDIAN  return *(uint16_t *)p;#else  return ntohs(*(uint16_t *)p);#endif}static __inline uint32_t convert32 (uint8_t *p){#ifdef WORDS_BIGENDIAN  return *(uint32_t *)p;#else  return ntohl(*(uint32_t *)p);#endif}// these are defined in case I want to change to FILE * later.#define FDTYPE int#define FDNULL 0/* * structure for passing timestamps around */typedef struct mpeg2ps_ts_t{  bool have_pts;  bool have_dts;  uint64_t pts;  uint64_t dts;} mpeg2ps_ts_t;typedef struct mpeg2ps_record_pes_t{  struct mpeg2ps_record_pes_t *next_rec;  uint64_t dts;  off_t location;} mpeg2ps_record_pes_t;/* * information about reading a stream */typedef struct mpeg2ps_stream_t {  mpeg2ps_record_pes_t *record_first, *record_last;  FDTYPE m_fd;  bool is_video;  uint8_t m_stream_id;    // program stream id  uint8_t m_substream_id; // substream, for program stream id == 0xbd  mpeg2ps_ts_t next_pes_ts, frame_ts, next_next_pes_ts;  uint frames_since_last_ts;  uint64_t last_ts;  bool have_frame_loaded;  /*   * pes_buffer processing.  this contains the raw elementary stream data   */  uint8_t *pes_buffer;  uint32_t pes_buffer_size;  uint32_t pes_buffer_size_max;  uint32_t pes_buffer_on;  uint32_t frame_len;  uint32_t pict_header_offset; // for mpeg video  // timing information and locations.  off_t first_pes_loc;  uint64_t start_dts;  bool first_pes_has_dts;  off_t    end_dts_loc;  uint64_t end_dts;  // audio stuff  uint32_t freq;  uint32_t channels;  uint32_t bitrate;  uint32_t samples_per_frame;  uint8_t layer;  uint8_t version;  // video stuff  uint32_t h, w;  double frame_rate;  bool determined_type;  bool have_h264;  int have_mpeg2;  double bit_rate;  uint64_t ticks_per_frame;  uint8_t video_profile;  uint8_t video_level;  uint8_t audio_private_stream_info[6];  bool lpcm_read_offset;} mpeg2ps_stream_t;#define LPCM_FRAME_COUNT 0#define LPCM_PES_OFFSET_MSB 1#define LPCM_PES_OFFSET_LSB 2#define LPCM_INFO 4/* * main interface structure - contains stream pointers and other * information */struct mpeg2ps_ {  mpeg2ps_stream_t *video_streams[16];  mpeg2ps_stream_t *audio_streams[32];  const char *filename;  FDTYPE fd;  uint64_t first_dts;  uint audio_cnt, video_cnt;  off_t end_loc;  uint64_t max_dts;  uint64_t max_time;  // time is in msec.};void mpeg2ps_message(int loglevel, const char *fmt, ...);void mpeg2ps_record_pts(mpeg2ps_stream_t *sptr, off_t location,			mpeg2ps_ts_t *pTs);mpeg2ps_record_pes_t *search_for_ts(mpeg2ps_stream_t *sptr, 				    uint64_t dts);#endif

⌨️ 快捷键说明

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