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

📄 mpegaction.h

📁 This code is based on mpeg_play, available from: http://bmrc.berkeley.edu/frame/research/mpeg/
💻 H
字号:
/*    SMPEG - SDL MPEG Player Library    Copyright (C) 1999  Loki Entertainment Software        - Modified by Michel Darricau from eProcess <mdarricau@eprocess.fr>  for popcorn -    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library 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    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*//* A virtual class to provide basic MPEG playback actions */#ifndef _MPEGACTION_H_#define _MPEGACTION_H_#include "SDL.h"#include "MPEGfilter.h"typedef enum {    MPEG_ERROR = -1,    MPEG_STOPPED,    MPEG_PLAYING} MPEGstatus;class MPEGaction {public:    MPEGaction() {        playing = false;        paused = false;        looping = false;	play_time = 0.0;    }    virtual void Loop(bool toggle) {        looping = toggle;    }    virtual double Time(void) {  /* Returns the time in seconds since start */        return play_time;    }    virtual void Play(void) = 0;    virtual void Stop(void) = 0;    virtual void Rewind(void) = 0;    virtual void ResetSynchro(double) = 0;    virtual void Skip(float seconds) = 0;    virtual void Pause(void) {  /* A toggle action */        if ( paused ) {            paused = false;            Play();        } else {            Stop();            paused = true;        }    }		/* Michel Darricau from eProcess <mdarricau@eprocess.fr>  conflict name in popcorn */    virtual MPEGstatus GetStatus(void) = 0;protected:    bool playing;    bool paused;    bool looping;    double play_time;    void ResetPause(void) {        paused = false;    }};/* For getting info about the audio portion of the stream */typedef struct MPEG_AudioInfo {    int mpegversion;    int mode;    int frequency;    int layer;    int bitrate;    int current_frame;} MPEG_AudioInfo;/* Audio action class */class MPEGaudioaction : public MPEGaction {public:    virtual bool GetAudioInfo(MPEG_AudioInfo *info) {        return(true);    }    virtual void Volume(int vol) = 0;};/* Matches the declaration of SDL_UpdateRect() */typedef void(*MPEG_DisplayCallback)(SDL_Surface* dst, int x, int y,                                     unsigned int w, unsigned int h);/* For getting info about the video portion of the stream */typedef struct MPEG_VideoInfo {    int width;    int height;    int current_frame;    double current_fps;} MPEG_VideoInfo;/* Video action class */class MPEGvideoaction : public MPEGaction {public:    virtual void SetTimeSource(MPEGaudioaction *source) {        time_source = source;    }    virtual bool GetVideoInfo(MPEG_VideoInfo *info) {        return(false);    }    virtual bool SetDisplay(SDL_Surface *dst, SDL_mutex *lock,                                MPEG_DisplayCallback callback) = 0;    virtual void MoveDisplay(int x, int y) = 0;    virtual void ScaleDisplayXY(int w, int h) = 0;    virtual void SetDisplayRegion(int x, int y, int w, int h) = 0;    virtual void RenderFrame(int frame) = 0;    virtual void RenderFinal(SDL_Surface *dst, int x, int y) = 0;    virtual SMPEG_Filter * Filter(SMPEG_Filter * filter) = 0;protected:    MPEGaudioaction *time_source;};/* For getting info about the system portion of the stream */typedef struct MPEG_SystemInfo {    int total_size;    int current_offset;    double total_time;    double current_time;} MPEG_SystemInfo;#endif /* _MPEGACTION_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -