OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
frame.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <cstdint>
5#include <cstddef>
6
7namespace Bink {
8
9class Video;
10
11class Frame final {
12 public:
13 Frame();
14 Frame(Frame&&) = default;
15 Frame& operator = (Frame&&) = default;
16
17 class Plane final {
18 public:
19 void getPixels8x8 (uint32_t rx, uint32_t ry, uint8_t* out) const;
20
21 void getBlock8x8 (uint32_t x, uint32_t y, uint8_t* out) const;
22 void putBlock8x8 (uint32_t x, uint32_t y, const uint8_t* in);
23 void putScaledBlock(uint32_t x, uint32_t y, const uint8_t* in);
24 void fill (uint8_t v);
25
26 uint8_t at(uint32_t x, uint32_t y) const;
27 uint32_t stride() const { return strd; }
28 const uint8_t* data() const { return dat.data(); }
29
30 private:
31 void setSize(uint32_t w, uint32_t h);
32
33 std::vector<uint8_t> dat;
34 uint32_t w = 0;
35 uint32_t h = 0;
36 uint32_t strd = 0;
37
38 friend class Frame;
39 };
40
41 class Audio final {
42 public:
43 std::vector<float> samples;
44 };
45
46 uint32_t width() const { return planes[0].w; }
47 uint32_t height() const { return planes[0].h; }
48
49 const Plane& plane(uint8_t id) const { return planes[id]; }
50 const Audio& audio(uint8_t id) const;
51 size_t audioCount() const { return aud.size(); }
52
53 private:
54 Plane planes[4];
55 std::vector<Audio> aud;
56
57 void setSize(uint32_t w, uint32_t h);
58 void setAudioChannels(uint8_t count);
59
60 friend class Video;
61 };
62
63}
64
std::vector< float > samples
Definition frame.h:43
void putScaledBlock(uint32_t x, uint32_t y, const uint8_t *in)
Definition frame.cpp:41
void getPixels8x8(uint32_t rx, uint32_t ry, uint8_t *out) const
Definition frame.cpp:17
uint32_t stride() const
Definition frame.h:27
void getBlock8x8(uint32_t x, uint32_t y, uint8_t *out) const
Definition frame.cpp:27
void putBlock8x8(uint32_t x, uint32_t y, const uint8_t *in)
Definition frame.cpp:31
uint8_t at(uint32_t x, uint32_t y) const
Definition frame.cpp:55
const uint8_t * data() const
Definition frame.h:28
void fill(uint8_t v)
Definition frame.cpp:51
const Plane & plane(uint8_t id) const
Definition frame.h:49
size_t audioCount() const
Definition frame.h:51
Frame(Frame &&)=default
uint32_t height() const
Definition frame.h:47
const Audio & audio(uint8_t id) const
Definition frame.cpp:64
Frame & operator=(Frame &&)=default
uint32_t width() const
Definition frame.h:46
Definition frame.h:7