aboutsummaryrefslogtreecommitdiff
path: root/Src/libvp6/include/Aud.hpp
blob: 1dd976876fb3c96dac9a51b70458fe7205f048ba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#ifndef AUD_HPP
#define AUD_HPP

#include <exception>
#include <string>
#include <io.h>

namespace Aud
{
    class FileError : public exception
    {
    public:
        explicit FileError(const char* message);
        const char* what() const;
    private:
        const std::string message;
    };


    enum { samplesPerSec = 48000 };

    enum { sampleSizeInBits = 16, sampleSizeInBytes = 2 };

    enum { numberOfChannels = 2 };

    enum { blockAlign = numberOfChannels * sampleSizeInBytes };


    class File
    {
    public:

        enum mode_t { in, out };

        File();
        File(const char* name, mode_t mode);

        ~File();

        void open(const char* name, mode_t mode);
        void close();

        bool isOpen() const;
        bool eof() const;

        mode_t mode() const;
        const char* name() const;

        int sampleCount() const;

        void seekSample(int sampleNum) const;

        size_t read(void* buffer, size_t size) const;

        void write(const void* buffer, size_t size);

        typedef __int64 offset_t;
        offset_t offset() const;

        void seekOffset(offset_t) const;

    private:

        File(const File&);
        File& operator=(const File&);

        void init();

        int handle_;

        char name_[_MAX_PATH];
        mode_t mode_;

        int m_sampleCount;
    };    

} //end namespace Aud

#endif