📄 directory.h
字号:
/* Copyright (C) 1995, Tektronix Inc. All Rights Reserved. * * Usage Restrictions * * License is granted to copy, to use, and to make and to use derivative * works for research and evaluation purposes only. * * Disclaimer of Warranty * * These software programs are available to the user without any license * fee or royalty on an "as is" basis. Tektronix Inc. disclaims any and * all warranties, whether express, implied, or statuary, including any * implied warranties or merchantability or of fitness for a particular * purpose. In no event shall the copyright-holder be liable for any * incidental, punitive, or consequential damages of any kind whatsoever * arising from the use of these programs. * * This disclaimer of warranty extends to the user of these programs and * user's customers, employees, agents, transferees, successors, and * assigns. * * The Tektronix Inc. does not represent or warrant that the programs * furnished hereunder are free of infringement of any third-party * patents.*//* Directory, etc. classes */#ifndef directory_h#define directory_henum StreamType {MPEGG1VIDEO = 1, MPEG2VIDEO, MPEG1AUDIO, MPEG2AUDIO, MPEGPRIVATE};enum ProgramState {ACTIVE, NOTACTIVE};const int UNASSIGNED = -1;class EStream;class EStreamRecord;class Program;class ProgramRecord;class Directory;class Directory{public: Directory (); void add_program (Program*); void remove_program (Program*); void remove_program (int); // remove by program_number Program* get_program (int); // find by program_number int get_num_programs (); ProgramRecord* head_prec; void print ();private:};class Program{public: Program (); Program (int); Program (int, int); int program_number; int pid; EStream* pcr_estream; int active; void activate (); void deactivate (); void set_pcr_estream (EStream*); void add_estream (EStream*); void remove_estream (EStream*); void remove_estream (int); EStream* get_estream (int); // find by pid int get_num_streams (); EStreamRecord* head_erec; void print ();private:};class ProgramRecord{public: ProgramRecord (Program*); Program* program; ProgramRecord* next_prec;};class EStream{public: EStream(StreamType, int, int); // type, pid, bandwidth StreamType stream_type; int bandwidth; int pid; void print ();};class EStreamRecord{public: EStreamRecord (EStream*); EStream* estream; EStreamRecord* next_erec;};/* DOCUMENTATION Directory, Program and EStream are used together to manage a list of Programs where each Program contains a list of elementary streams (EStreams). These classes are used by the Encoder and Decoder class as a database of program content information. Encoding applications build a Directory and install it in the Encoder. The Encoder then uses the directory to assemble the multiplex. Decoding applications build a Directory which the Decoder will manipulate to reflect the stream contents. The Directory can then be examined by the application. Directories manage a list of Programs and allow retrieval, insertion and deletion. Programs manage a list of EStreams and allow retrieval, insertion, and deletion. Programs also have program_numbers, pids (for the MapSection), and pcr_estreams. They can be active or inactive. The meaning of active or inactive depends on the user of the Directory. EStreams have a StreamType, a bandwidth and a pid.*/#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -