1.3.20
by Christian Marillat
Import upstream version 6.0.0 |
1 |
/*
|
2 |
mkvmerge -- utility for splicing together matroska files
|
|
3 |
from component media subtypes
|
|
4 |
||
1.3.35
by Christian Marillat
Import upstream version 7.8.0 |
5 |
Distributed under the GPL v2
|
1.3.20
by Christian Marillat
Import upstream version 6.0.0 |
6 |
see the file COPYING for details
|
7 |
or visit http://www.gnu.org/copyleft/gpl.html
|
|
8 |
||
9 |
definitions and helper functions for FourCC handling
|
|
10 |
||
11 |
Written by Moritz Bunkus <moritz@bunkus.org>.
|
|
12 |
*/
|
|
13 |
||
14 |
#ifndef MTX_COMMON_FOURCC_H
|
|
15 |
#define MTX_COMMON_FOURCC_H
|
|
16 |
||
17 |
#include "common/common_pch.h" |
|
18 |
||
19 |
#include <ostream> |
|
20 |
||
21 |
#include "common/mm_io.h" |
|
22 |
||
23 |
class fourcc_c { |
|
24 |
public: |
|
1.3.35
by Christian Marillat
Import upstream version 7.8.0 |
25 |
enum byte_order_t { big_endian, little_endian }; |
1.3.20
by Christian Marillat
Import upstream version 6.0.0 |
26 |
|
27 |
private: |
|
28 |
uint32_t m_value; |
|
29 |
||
30 |
public: |
|
31 |
fourcc_c(); |
|
32 |
||
33 |
// From an integer value:
|
|
34 |
fourcc_c(uint32_t value, byte_order_t byte_order = big_endian); |
|
35 |
||
36 |
// From strings:
|
|
37 |
fourcc_c(std::string const &value); |
|
38 |
fourcc_c(char const *value); |
|
39 |
||
40 |
// From memory:
|
|
41 |
fourcc_c(memory_cptr const &mem, byte_order_t byte_order = big_endian); |
|
42 |
fourcc_c(unsigned char const *mem, byte_order_t byte_order = big_endian); |
|
43 |
fourcc_c(uint32_t const *mem, byte_order_t byte_order = big_endian); |
|
44 |
||
45 |
// From mm_io_c instances:
|
|
46 |
fourcc_c(mm_io_cptr const &io, byte_order_t byte_order = big_endian); |
|
47 |
fourcc_c(mm_io_c &io, byte_order_t byte_order = big_endian); |
|
48 |
fourcc_c(mm_io_c *io, byte_order_t byte_order = big_endian); |
|
49 |
||
1.3.21
by Christian Marillat
Import upstream version 6.1.0 |
50 |
fourcc_c &shift_read(mm_io_cptr const &io, byte_order_t byte_order = big_endian); |
51 |
fourcc_c &shift_read(mm_io_c &io, byte_order_t byte_order = big_endian); |
|
52 |
fourcc_c &shift_read(mm_io_c *io, byte_order_t byte_order = big_endian); |
|
53 |
||
1.3.20
by Christian Marillat
Import upstream version 6.0.0 |
54 |
size_t write(memory_cptr const &mem, byte_order_t byte_order = big_endian); |
55 |
size_t write(unsigned char *mem, byte_order_t byte_order = big_endian); |
|
56 |
size_t write(mm_io_cptr const &io, byte_order_t byte_order = big_endian); |
|
57 |
size_t write(mm_io_c &io, byte_order_t byte_order = big_endian); |
|
58 |
size_t write(mm_io_c *io, byte_order_t byte_order = big_endian); |
|
59 |
||
60 |
fourcc_c &reset(); |
|
61 |
||
62 |
uint32_t value(byte_order_t byte_order = big_endian) const; |
|
63 |
std::string str() const; |
|
1.3.35
by Christian Marillat
Import upstream version 7.8.0 |
64 |
std::string description() const; |
1.3.20
by Christian Marillat
Import upstream version 6.0.0 |
65 |
|
66 |
bool equiv(char const *cmp) const; |
|
1.3.21
by Christian Marillat
Import upstream version 6.1.0 |
67 |
bool equiv(std::vector<std::string> const &cmp) const; |
68 |
bool human_readable(size_t min_num = 3) const; |
|
1.3.20
by Christian Marillat
Import upstream version 6.0.0 |
69 |
|
70 |
explicit operator bool() const; |
|
71 |
bool operator ==(fourcc_c const &cmp) const; |
|
72 |
bool operator !=(fourcc_c const &cmp) const; |
|
73 |
||
74 |
protected: |
|
75 |
// From memory & strings:
|
|
76 |
static uint32_t read(void const *mem, byte_order_t byte_order); |
|
77 |
// From mm_io_c instances:
|
|
78 |
static uint32_t read(mm_io_c &io, byte_order_t byte_order); |
|
79 |
};
|
|
80 |
||
81 |
inline std::ostream & |
|
82 |
operator <<(std::ostream &out, |
|
83 |
fourcc_c const &fourcc) { |
|
84 |
out << fourcc.str(); |
|
85 |
return out; |
|
86 |
}
|
|
87 |
||
88 |
#endif // MTX_COMMON_FOURCC_H |