- Main Page
- Namespaces
- Classes
- Files

- File List

# SoundFileDefault.hpp

    00001
    00002 //
    00003 // SFML - Simple and Fast Multimedia Library
    00004 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
    00005 //
    00006 // This software is provided 'as-is', without any express or implied warranty.
    00007 // In no event will the authors be held liable for any damages arising from the use of this software.
    00008 //
    00009 // Permission is granted to anyone to use this software for any purpose,
    00010 // including commercial applications, and to alter it and redistribute it freely,
    00011 // subject to the following restrictions:
    00012 //
    00013 // 1. The origin of this software must not be misrepresented;
    00014 //    you must not claim that you wrote the original software.
    00015 //    If you use this software in a product, an acknowledgment
    00016 //    in the product documentation would be appreciated but is not required.
    00017 //
    00018 // 2. Altered source versions must be plainly marked as such,
    00019 //    and must not be misrepresented as being the original software.
    00020 //
    00021 // 3. This notice may not be removed or altered from any source distribution.
    00022 //
    00024
    00025 #ifndef SFML_SOUNDFILEDEFAULT_HPP
    00026 #define SFML_SOUNDFILEDEFAULT_HPP
    00027
    00029 // Headers
    00031 #include <SFML/Audio/SoundFile.hpp>
    00032 #include <sndfile.h>
    00033
    00034
    00035 namespace sf
    00036 {
    00037 namespace priv
    00038 {
    00043 class SoundFileDefault : public SoundFile
    00044 {
    00045 public :
    00046
    00051     SoundFileDefault();
    00052
    00057     ~SoundFileDefault();
    00058
    00068     static bool IsFileSupported(const std::string& Filename, bool Read);
    00069
    00079     static bool IsFileSupported(const char* Data, std::size_t SizeInBytes);
    00080
    00085     virtual std::size_t Read(Int16* Data, std::size_t NbSamples);
    00086
    00091     virtual void Write(const Int16* Data, std::size_t NbSamples);
    00092
    00093 private :
    00094
    00099     virtual bool OpenRead(const std::string& Filename, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
    00100
    00105     virtual bool OpenRead(const char* Data, std::size_t SizeInBytes, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
    00106
    00111     virtual bool OpenWrite(const std::string& Filename, unsigned int ChannelsCount, unsigned int SampleRate);
    00112
    00122     static int GetFormatFromFilename(const std::string& Filename);
    00123
    00128     static sf_count_t MemoryGetLength(void* UserData);
    00129     static sf_count_t MemoryRead(void* Ptr, sf_count_t Count, void* UserData);
    00130     static sf_count_t MemorySeek(sf_count_t Offset, int Whence, void* UserData);
    00131     static sf_count_t MemoryTell(void* UserData);
    00132     static sf_count_t MemoryWrite(const void* Ptr, sf_count_t Count, void* UserData);
    00133
    00137     struct MemoryInfos
    00138     {
    00139         const char* DataStart;
    00140         const char* DataPtr;
    00141         sf_count_t  TotalSize;
    00142     };
    00143
    00145     // Member data
    00147     SNDFILE*    myFile;
    00148     MemoryInfos myMemory;
    00149 };
    00150
    00151 } // namespace priv
    00152
    00153 } // namespace sf
    00154
    00155
    00156 #endif // SFML_SOUNDFILEDEFAULT_HPP

:: Copyright © 2007-2008 Laurent Gomila, all rights reserved :: Documentation generated by doxygen 1.5.2 ::