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

📄 mpegvideo.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 class based on the MPEG stream class, used to parse and play video */#ifndef _MPEGVIDEO_H_#define _MPEGVIDEO_H_#include "SDL.h"#include "SDL_thread.h"#include "MPEGerror.h"#include "MPEGaction.h"class MPEGstream;/* This is the MPEG video stream structure in the mpeg_play code */struct vid_stream;typedef struct vid_stream VidStream;/* Temporary definition of time stamp structure. */typedef double TimeStamp;class MPEGvideo : public MPEGerror, public MPEGvideoaction {    /* Thread to play the video asynchronously */    friend int Play_MPEGvideo(void *udata);    /* Various mpeg_play functions that need our data */    friend VidStream* mpegVidRsrc( TimeStamp time_stamp, VidStream* vid_stream, int first );    friend int get_more_data( VidStream* vid_stream );public:    MPEGvideo(MPEGstream *stream);    virtual ~MPEGvideo();    /* MPEG actions */    void Play(void);    void Stop(void);    void Rewind(void);    void ResetSynchro(double time);     void Skip(float seconds);		/* Michel Darricau from eProcess <mdarricau@eprocess.fr> conflict name in popcorn */    MPEGstatus GetStatus(void);    /* MPEG video actions */    bool GetVideoInfo(MPEG_VideoInfo *info);    bool SetDisplay(SDL_Surface *dst, SDL_mutex *lock,                                            MPEG_DisplayCallback callback);    void MoveDisplay(int x, int y);    void ScaleDisplayXY(int w, int h);    void SetDisplayRegion(int x, int y, int w, int h);    void RenderFrame(int frame);    void RenderFinal(SDL_Surface *dst, int x, int y);    SMPEG_Filter * Filter(SMPEG_Filter * filter);    /* Display and sync functions */    void DisplayFrame( VidStream* vid_stream );    void ExecuteDisplay( VidStream* vid_stream );    int timeSync( VidStream* vid_stream );    /* Yes, it's a hack.. */    MPEGaudioaction *TimeSource(void ) {        return time_source;    }protected:    MPEGstream *mpeg;    VidStream* _stream;    SDL_Surface* _dst;    SDL_mutex* _mutex;    SDL_Thread* _thread;    MPEG_DisplayCallback _callback;    int _ow;            // original width of the movie    int _oh;            // original height of the movie    int _w;             // mb aligned width of the movie    int _h;             // mb aligned height of the movie    SDL_Rect _srcrect;	// source area    SDL_Rect _dstrect;	// display area    SDL_Overlay *_image;// source image    float _fps;         // frames per second    SMPEG_Filter * _filter; // pointer to the current filter used    SDL_mutex* _filter_mutex; // make sure the filter is not changed while being used    void RewindStream(void);};#endif /* _MPEGVIDEO_H_ */

⌨️ 快捷键说明

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