aboutsummaryrefslogtreecommitdiffstats
path: root/src/compressed_io.h
blob: d8cfb11f8e705c58b50fb4e222c7432f413a80a3 (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
#pragma once
#include <vector>
#include <array>
#include <string>

class ICompressedIO {
public:
    class TFrame {
        uint64_t Sz;
        char* Data;
        TFrame(const TFrame& src) = delete;
        TFrame() = delete;
    public:
        TFrame(uint64_t sz)
            : Sz(sz)
        {
            Data = new char[Sz];
        }
        ~TFrame() {
            delete[] Data;
        }
        uint64_t Size() const { return Sz; }
        char* Get() { return Data; }
    };
    virtual void WriteFrame(std::vector<char> data) = 0;
    virtual std::unique_ptr<TFrame> ReadFrame() = 0;
    virtual std::string GetName() const = 0;
    virtual int GetChannelNum() const = 0;
    virtual long long GetLengthInSamples() const = 0;
    virtual ~ICompressedIO() {}
};