⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpegsystem.h

📁 This code is based on mpeg_play, available from: http://bmrc.berkeley.edu/frame/research/mpeg/
💻 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 + -