1 //////////////////////////////////////////////////////////////////////////////////////// 2 // 3 // Nestopia - NES/Famicom emulator written in C++ 4 // 5 // Copyright (C) 2003-2008 Martin Freij 6 // 7 // This file is part of Nestopia. 8 // 9 // Nestopia is free software; you can redistribute it and/or modify 10 // it under the terms of the GNU General Public License as published by 11 // the Free Software Foundation; either version 2 of the License, or 12 // (at your option) any later version. 13 // 14 // Nestopia is distributed in the hope that it will be useful, 15 // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 // GNU General Public License for more details. 18 // 19 // You should have received a copy of the GNU General Public License 20 // along with Nestopia; if not, write to the Free Software 21 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 // 23 //////////////////////////////////////////////////////////////////////////////////////// 24 25 #ifndef NST_MANAGER_AVICONVERTER_H 26 #define NST_MANAGER_AVICONVERTER_H 27 28 #pragma once 29 30 #include "../core/api/NstApiMovie.hpp" 31 32 namespace Nestopia 33 { 34 namespace Managers 35 { 36 class AviConverter 37 { 38 public: 39 40 explicit AviConverter(Emulator&); 41 ~AviConverter(); 42 43 uint Record(const Path&,const Path&) const; 44 45 private: 46 47 enum 48 { 49 MAX_FILE_SIZE = 0x40000000, 50 VIDEO_BPP = 16, 51 VIDEO_R_MASK = 0x1FU << 10, 52 VIDEO_G_MASK = 0x1FU << 5, 53 VIDEO_B_MASK = 0x1FU << 0 54 }; 55 56 Emulator& emulator; 57 const bool on; 58 59 Nes::Video::RenderState renderState; 60 Nes::Video::Output::LockCallback nesVideoLockFunc; 61 void* nesVideoLockData; 62 Nes::Video::Output::UnlockCallback nesVideoUnlockFunc; 63 void* nesVideoUnlockData; 64 Nes::Sound::Output::LockCallback nesSoundLockFunc; 65 void* nesSoundLockData; 66 Nes::Sound::Output::UnlockCallback nesSoundUnlockFunc; 67 void* nesSoundUnlockData; 68 Nes::Movie::EventCallback nesMovieEventFunc; 69 void* nesMovieEventData; 70 71 Collection::Buffer saveState; 72 }; 73 } 74 } 75 76 #endif 77