📄 mpegsystem.h
字号:
/* A class based on the MPEG stream class, used to parse the system stream */ /* - Modified by Michel Darricau from eProcess <mdarricau@eprocess.fr> for popcorn - */#ifndef _MPEGSYSTEM_H_#define _MPEGSYSTEM_H_#define USE_SYSTEM_TIMESTAMP#include "SDL.h"#include "SDL_thread.h"#include "MPEGerror.h"class MPEGstream;/* MPEG System library by Vivien Chappelier *//* The system class is necessary for splitting the MPEG stream into *//* peaces of data that will be sent to the audio or video decoder. */class MPEGsystem : public MPEGerror{public: /* Michel Darricau from eProcess <mdarricau@eprocess.fr> need for override in popcorn */ MPEGsystem() {} MPEGsystem(SDL_RWops *mpeg_source); virtual ~MPEGsystem(); /* Buffered I/O functions */ void RequestBuffer(); bool Wait(); Uint32 Tell(); void Rewind(); void Loop(bool toggle); /* Michel Darricau from eProcess <mdarricau@eprocess.fr> need for override in popcorn */ virtual void Start(); void Stop(); bool Eof() const; /* Michel Darricau from eProcess <mdarricau@eprocess.fr> need for override in popcorn */ virtual bool Seek(int length); virtual Uint32 TotalSize(); virtual double TotalTime(); virtual double TimeElapsedAudio(int atByte); /* Skip "seconds" seconds */ void Skip(double seconds); /* Create all the streams present in the MPEG */ MPEGstream ** GetStreamList(); /* Insert a stream in the list */ void add_stream(MPEGstream * stream); /* Search for a stream in the list */ MPEGstream * get_stream(Uint8 stream_id); /* Test if a stream is in the list */ Uint8 exist_stream(Uint8 stream_id, Uint8 mask); /* Reset all the system streams */ void reset_all_streams(); /* Set eof for all streams */ void end_all_streams(); /* Set looping for all streams */ void loop_all_streams(bool toggle); /* Michel Darricau from eProcess <mdarricau@eprocess.fr> need for override in popcorn */ /* Seek the first header */ virtual bool seek_first_header(); /* Michel Darricau from eProcess <mdarricau@eprocess.fr> need for override in popcorn */ /* Seek the next header */ virtual bool seek_next_header();protected: /* Run the loop to fill the stream buffers */ static bool SystemLoop(MPEGsystem *system); /* Michel Darricau from eProcess <mdarricau@eprocess.fr> need for override in popcorn */ /* Fill a buffer */ virtual Uint8 FillBuffer(); /* Read a new packet */ virtual void Read(); /* The system thread which fills the FIFO */ static int SystemThread(void * udata); SDL_RWops *source; SDL_Thread * system_thread; bool system_thread_running; MPEGstream ** stream_list; Uint8 * read_buffer; Uint8 * pointer; int read_size; Uint32 read_total; Uint32 packet_total; int request; SDL_semaphore * request_wait; SDL_mutex * system_mutex; bool endofstream; bool errorstream; bool looping; double frametime; double stream_timestamp;#ifdef USE_SYSTEM_TIMESTAMP /* Current timestamp for this stream */ double timestamp; double timedrift; double skip_timestamp;#endif};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -