/*! * @file media_container.h * Manages the media files */ #ifndef _MEDIA_CONTAINER #define _MEDIA_CONTAINER #include "sdlincl.h" #ifdef HAVE_AVFORMAT_H #include #else #include #endif /* include base_object.h since all classes are derived from this one */ #include "base_object.h" #include "texture_sequence.h" #include "glincl.h" class MediaContainer : public TextureSequence { ObjectListDeclaration(MediaContainer); private: AVFormatContext* format_context; AVCodecContext* codec_context; AVCodec* codec; AVFrame* frame; AVPacket packet; AVFrame* RGB_frame; GLuint texture; uint8_t* data; uint8_t* buffer; int num_bytes; int video_stream; double fps; bool mediaLoaded; public: MediaContainer(const std::string& filename = ""); virtual ~MediaContainer(); bool loadMedia(const std::string& filename); void loadFrames(); double getFPS(); private: GLuint getNextFrame(); void unloadMedia(); }; #endif /* _MEDIA_CONTAINER */