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

📄 fulldvddump.h

📁 Linux下比较早的基于命令行的DVD播放器
💻 H
字号:
//// Copyright (c) 2004 by Istv醤 V醨adi//// This file is part of dxr3Player, a DVD player written specifically // for the DXR3 (aka Hollywood+) decoder card.// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program 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 General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA#ifndef DXR3PLAYER_DVD_FULLDVDDUMP_H#define DXR3PLAYER_DVD_FULLDVDDUMP_H//------------------------------------------------------------------------------#include "Device.h"#include "FileHandler.h"#include "DVD.h"//------------------------------------------------------------------------------namespace ifodump {class IFOReader;}//------------------------------------------------------------------------------namespace dvd {//------------------------------------------------------------------------------/** * DVD device which works from a full DVD dump. */class FullDVDDump : public Device{private:    /**     * Our own file handler.     */    class FileHandler : public dvd::FileHandler     {    private:        /**         * The template for the file name to open.         */        char* fileNameTemplate;        /**         * The current chunk.         */        size_t chunkNumber;        /**         * The file descriptor of the chunk currently opened. If >=0,         * chunkNumber gives its number.         */        int fd;    public:        /**         * Construct the file handler with the given map.         */        FileHandler(const char* dumpDirectory, size_t vtsNumber, bool isMenu);        /**         * Destroy the file handler.         */        ~FileHandler();        /**         * @see dvd::FileHandler::getLength         */        virtual size_t getLength();        /**         * @see dvd::FileHandler::readSectors         */        virtual void readSectors(void* dest, size_t offset, size_t numSectors);    private:        /**         * Open the given chunk, if not already opened.         */        void openChunk(size_t chunkNo);    };    /**     * The name of the IFO dump file.     *     * FIXME: use a common constant with dumpdvd     */    static const char* ifoDumpName;public:    /**     * The size of a chunk in sectors.     */    static const size_t chunkSize = 512 * 1024;            /**     * Check if the given file is a full dump directory.     */    static bool isDumpDirectory(const char* path);private:    /**     * The directory this object represents.     */    char* dumpDirectory;    /**     * The open indicator.     */    bool opened;    /**     * The IFO information     */    ifo_handle_t ifoHandles[DVD::maxNumberOfVTSs+1];    public:    /**     * Construct the DVD dump device from the given dump directory.     */    FullDVDDump(const char* dumpDirectory);    /**     * Destroy the DVD dump device.     */    ~FullDVDDump();    /**     * @see Device::hasDisk     */    virtual bool hasDisk();    /**     * @see Device::isOpen     */    virtual bool isOpen() const;        /**     * @see Device::open     */    virtual bool open();    /**     * @see Device::getID     */    virtual void getID(unsigned char* dest) const;    /**     * @see Device::getIFOHandle     */    virtual const ifo_handle_t* getIFOHandle(unsigned titleNo) const;        /**     * @see Device::openFile     */    virtual dvd::FileHandler* openFile(unsigned titleNo, bool isMenu) const;    /**     * @see Device::close     */    virtual void close();    /**     * @see Device::eject     */    virtual void eject();private:    /**     * Read the IFO data for the IFO with the given index.     */    void readIFO(ifodump::IFOReader& reader, size_t ifoIndex);}; //------------------------------------------------------------------------------} /* namespace dvd *///------------------------------------------------------------------------------#endif // DXR3PLAYER_DVD_FULLDVDDUMP_H// Local variables:// mode: c++// End:

⌨️ 快捷键说明

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