videostrm.hpp
来自「Motion JPEG编解码器源代码」· HPP 代码 · 共 154 行
HPP
154 行
/* * videostrm.hpp: Video stream elementary input stream * * Copyright (C) 2001 Andrew Stevens <andrew.stevens@philips.com> * * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#ifndef __VIDEOSTRM_H__#define __VIDEOSTRM_H__#include "inputstrm.hpp"#include "interact.hpp"#include "stream_params.hpp"class VideoStream : public ElementaryStream{public: VideoStream(IBitStream &ibs, VideoParams *parms, Multiplexor &into); void Init( const int stream_num ); static bool Probe(IBitStream &bs ); void Close(); inline int DecoderOrder() { return au->dorder; } inline int AUType() { return au->type; } bool SeqEndRunOut(); const AUnit *NextIFrame(); inline int NextAUType() { AUnit *p_au = Lookahead(); if( p_au != 0 ) return p_au->type; else return NOFRAME; } virtual unsigned int NominalBitRate() { return bit_rate * 400; } virtual void OutputGOPControlSector(); bool RunOutComplete(); virtual bool MuxPossible(clockticks currentSCR); virtual void AUMuxed( bool first_in_sector ) ; void SetMaxStdBufferDelay( unsigned int demux_rate ); void OutputSector();protected: static const unsigned int MAX_GOP_LENGTH = 128; void OutputSeqhdrInfo(); virtual void FillAUbuffer(unsigned int frames_to_buffer); virtual void NextDTSPTS( ); void ScanFirstSeqHeader(); uint8_t NewAUTimestamps( int AUtype ); bool NewAUBuffers( int AUtype ); unsigned int ExcludeNextIFramePayload();public: unsigned int num_sequence ; unsigned int num_seq_end ; unsigned int num_pictures ; unsigned int num_groups ; unsigned int num_frames[4] ; int64_t avg_frames[4] ; unsigned int horizontal_size; unsigned int vertical_size ; unsigned int aspect_ratio ; unsigned int picture_rate ; unsigned int bit_rate ; unsigned int vbv_buffer_size; unsigned int CSPF ; double secs_per_frame; bool dtspts_for_all_au; // Ensure every AU has a timestamp // (no two AU can start in one sector) bool gop_control_packet;protected: /* State variables for scanning source bit-stream */ AUnit access_unit; int fields_presented; int group_start_pic; int group_start_field; int group_start_SCR; int temporal_reference; unsigned int pict_struct; int pulldown_32; int repeat_first_field; int prev_temp_ref; int ref_present; int prev_ref_present; double frame_rate; double max_bits_persec; int AU_pict_data; int AU_hdr; clockticks max_STD_buffer_delay; VideoParams *parms;}; //// DVD's generate control sectors for each GOP...//class DVDVideoStream : public VideoStream{public: DVDVideoStream(IBitStream &ibs,VideoParams *parms,Multiplexor &into) : VideoStream( ibs, parms, into ) { gop_control_packet = true; } void OutputGOPControlSector(); };#endif // __INPUTSTRM_H__/* * Local variables: * c-file-style: "stroustrup" * tab-width: 4 * indent-tabs-mode: nil * End: */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?