From 2f0cc8ec30e8c26fed7b2c9ac2614c9a7655fb65 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Sat, 26 Jul 2003 03:01:58 +0000 Subject: Moved from gst-plugins/ext/mplex/. See that directory for older changelogs. Original commit message from CVS: Moved from gst-plugins/ext/mplex/. See that directory for older changelogs. --- gst-libs/ext/mplex/videostrm.hh | 155 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 gst-libs/ext/mplex/videostrm.hh (limited to 'gst-libs/ext/mplex/videostrm.hh') diff --git a/gst-libs/ext/mplex/videostrm.hh b/gst-libs/ext/mplex/videostrm.hh new file mode 100644 index 00000000..6eeac476 --- /dev/null +++ b/gst-libs/ext/mplex/videostrm.hh @@ -0,0 +1,155 @@ + +/* + * videostrm.hh: Video stream elementary input stream + * + * Copyright (C) 2001 Andrew Stevens + * + * + * 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.hh" + +class VideoStream:public ElementaryStream +{ +public: + VideoStream (IBitStream & ibs, OutputStream & into); + void Init (const int stream_num); + static bool Probe (IBitStream & bs); + + void Close (); + + inline int AUType () + { + return au->type; + } + + inline bool EndSeq () + { + return au->end_seq; + } + + inline int NextAUType () + { + VAunit *p_au = Lookahead (); + + if (p_au != NULL) + return p_au->type; + else + return NOFRAME; + } + + inline bool SeqHdrNext () + { + VAunit *p_au = Lookahead (); + + return p_au != NULL && p_au->seq_header; + } + + virtual unsigned int NominalBitRate () + { + return bit_rate * 50; + } + + virtual void OutputGOPControlSector (); + bool RunOutComplete (); + virtual bool MuxPossible (clockticks currentSCR); + void SetMaxStdBufferDelay (unsigned int demux_rate); + void OutputSector (); + +protected: + void OutputSeqhdrInfo (); + virtual bool AUBufferNeedsRefill (); + virtual void FillAUbuffer (unsigned int frames_to_buffer); + virtual void InitAUbuffer (); + virtual void NextDTSPTS (clockticks & DTS, clockticks & PTS); + void ScanFirstSeqHeader (); + uint8_t NewAUTimestamps (int AUtype); + bool NewAUBuffers (int AUtype); + +public: + unsigned int num_sequence; + unsigned int num_seq_end; + unsigned int num_pictures; + unsigned int num_groups; + unsigned int num_frames[4]; + unsigned int 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 comp_bit_rate; + unsigned int peak_bit_rate; + unsigned int vbv_buffer_size; + unsigned int CSPF; + double secs_per_frame; + + + bool dtspts_for_all_au; + bool gop_control_packet; + +protected: + + /* State variables for scanning source bit-stream */ + VAunit access_unit; + unsigned int fields_presented; + unsigned int group_order; + unsigned int group_start_pic; + unsigned int group_start_field; + int temporal_reference; + unsigned int pict_rate; + unsigned int pict_struct; + int pulldown_32; + int repeat_first_field; + int prev_temp_ref; + double frame_rate; + unsigned int max_bits_persec; + int AU_pict_data; + int AU_hdr; + clockticks max_PTS; + clockticks max_STD_buffer_delay; + + int opt_mpeg; + int opt_multifile_segment; +}; + +// +// DVD's generate control sectors for each GOP... +// + +class DVDVideoStream:public VideoStream +{ +public: + DVDVideoStream (IBitStream & ibs, OutputStream & into):VideoStream (ibs, into) + { + gop_control_packet = true; + } + void OutputGOPControlSector (); +}; + +#endif // __INPUTSTRM_H__ + + +/* + * Local variables: + * c-file-style: "stroustrup" + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ -- cgit v1.2.1