/usr/include/mjpegtools/mplex/videostrm.hpp is in libmjpegtools-dev 1:2.1.0+debian-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | /*
* 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();
inline double FrameRate() const { return frame_rate; }
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:
*/
|