Grok  7.6.2
BitIO.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2020 Grok Image Compression Inc.
3  *
4  * This source code is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Affero General Public License, version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This source code is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Affero General Public License for more details.
12  *
13  * You should have received a copy of the GNU Affero General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 
16  *
17  * This source code incorporates work covered by the BSD 2-clause license.
18  * Please see the LICENSE file in the root directory for details.
19  *
20  */
21 
22 #pragma once
23 
24 #include "IBitIO.h"
25 #include "IBufferedStream.h"
26 
27 namespace grk {
28 
29 /*
30  Bit input/output
31  */
32 class BitIO: public IBitIO {
33 
34 public:
35 
36  BitIO(uint8_t *bp, uint64_t len, bool isCompressor);
37  BitIO(IBufferedStream *stream, bool isCompressor);
38 
39  /*
40  Number of bytes written.
41  @return the number of bytes written
42  */
43  size_t numbytes();
44 
45  /*
46  Write bits
47  @param v Value of bits
48  @param n Number of bits to write
49  */
50  bool write(uint32_t v, uint32_t n);
51  /*
52  Read bits
53  @param n Number of bits to read
54  */
55  void read(uint32_t *bits, uint32_t n);
56  /*
57  Flush bits
58  @return true if successful, returns false otherwise
59  */
60  bool flush();
61  /*
62  Passes the ending bits (coming from flushing)
63  */
64  void inalign();
65 
66  void simulateOutput(bool doSimulate) {
67  sim_out = doSimulate;
68  }
69 
70  void putcommacode(int32_t n);
71  void getcommacode(uint32_t *n);
72  void putnumpasses(uint32_t n);
73  void getnumpasses(uint32_t *numpasses);
74 
75 private:
76 
77  /* pointer to the start of the buffer */
78  uint8_t *start;
79 
80  size_t offset;
81  size_t buf_len;
82 
83  /* temporary place where each byte is read or written */
84  uint8_t buf;
85  /* coder : number of bits free to write. decoder : number of bits read */
86  uint8_t ct;
87 
88  bool sim_out;
89 
91 
92  bool read0xFF;
93 
94  /*
95  Write a bit
96  @param bio BIO handle
97  @param b Bit to write (0 or 1)
98  */
99  bool putbit(uint8_t b);
100  /*
101  Read a bit
102  @param bio BIO handle
103  */
104  void getbit(uint32_t *bits, uint8_t pos);
105  /*
106  Write a byte
107  @param bio BIO handle
108  @return true if successful, returns false otherwise
109  */
110  bool byteout();
111 
112  /*
113  Write a byte
114  @param bio BIO handle
115  @return true if successful, returns false otherwise
116  */
117  bool byteout_stream();
118  /*
119  Read a byte
120  @param bio BIO handle
121  */
122  void bytein();
123 
124 };
125 
126 }
127 
J2K_MS_EPH
#define J2K_MS_EPH
EPH marker value.
Definition: CodeStream.h:90
grk::BitIO::buf
uint8_t buf
Definition: BitIO.h:84
grk::BitIO::ct
uint8_t ct
Definition: BitIO.h:86
grk::TileComponent::resolutions
Resolution * resolutions
Definition: TileComponent.h:57
grk::grk_rectangle< uint32_t >
grk::grk_rectangle::height
T height() const
Definition: util.h:165
grk::WaveletReverse::decompress
bool decompress(TileProcessor *p_tcd, TileComponent *tilec, grk_rect_u32 window, uint32_t numres, uint8_t qmfbid)
Definition: WaveletReverse.cpp:2168
grk::WaveletFwdImpl::compress
bool compress(TileComponent *tile_comp, uint8_t qmfbid)
Definition: WaveletFwdImpl.cpp:159
_grk_image_comp::stride
uint32_t stride
data stride
Definition: grok.h:856
grk::TileProcessor
Tile compressor/decompressor.
Definition: TileProcessor.h:63
grk::usage
void usage(void)
Definition: bench_dwt.cpp:120
grk::InvalidMarkerException
Definition: grk_exceptions.h:28
grk::BitIO::write
bool write(uint32_t v, uint32_t n)
Write bits.
Definition: BitIO.cpp:110
_grk_image::comps
grk_image_comp * comps
image components
Definition: grok.h:895
grk::BitIO::read0xFF
bool read0xFF
Definition: BitIO.h:92
IBitIO.h
grk::grk_rectangle::x1
T x1
Definition: util.h:76
grk_version
const char *GRK_CALLCONV grk_version(void)
library version
Definition: grok.cpp:140
grk::BitIO::getcommacode
void getcommacode(uint32_t *n)
Definition: BitIO.cpp:154
grk::CodeStream::m_input_image
grk_image * m_input_image
internal/private encoded / decompressed image
Definition: CodeStream.h:303
_grk_image::numcomps
uint16_t numcomps
number of components in the image
Definition: grok.h:891
grk::BitIO::putcommacode
void putcommacode(int32_t n)
Definition: BitIO.cpp:148
grk::TileComponent::getBuffer
TileComponentWindowBuffer< int32_t > * getBuffer() const
Definition: TileComponent.cpp:321
grk::BitIO::stream
IBufferedStream * stream
Definition: BitIO.h:90
grk::BitIO::offset
size_t offset
Definition: BitIO.h:80
grk::WaveletReverse
Definition: WaveletReverse.h:53
_grk_image_comp::w
uint32_t w
data width
Definition: grok.h:854
grk::TileComponentWindowBuffer::unreduced_bounds
grk_rect_u32 unreduced_bounds() const
Definition: TileComponentWindowBuffer.h:446
grk::TileComponent::resolutions_to_decompress
uint8_t resolutions_to_decompress
Definition: TileComponent.h:59
grk::BitIO::flush
bool flush()
Flush bits.
Definition: BitIO.cpp:132
grk::BitIO::start
uint8_t * start
Definition: BitIO.h:78
grk_deinitialize
GRK_API void GRK_CALLCONV grk_deinitialize()
De-initialize library.
Definition: grok.cpp:66
grk::BitIO::buf_len
size_t buf_len
Definition: BitIO.h:81
grk::grk_tile::comps
TileComponent * comps
Definition: TileProcessor.h:35
grk::BitIO::putbit
bool putbit(uint8_t b)
Definition: BitIO.cpp:88
grk::CodeStream
Definition: CodeStream.h:164
_grk_image_comp
Image component.
Definition: grok.h:848
_grk_image_comp::dy
uint32_t dy
YRsiz: vertical separation of a sample of with component with respect to the reference grid.
Definition: grok.h:852
grk::grk_rectangle::width
T width() const
Definition: util.h:162
main
int main(int argc, char **argv)
Definition: bench_dwt.cpp:135
grk_initialize
bool GRK_CALLCONV grk_initialize(const char *plugin_path, uint32_t numthreads)
Initialize library.
Definition: grok.cpp:52
ojph::error
message_error error
Definition: ojph_message.cpp:126
grk::TruncatedPacketHeaderException
Definition: grk_exceptions.h:27
_grk_image::y0
uint32_t y0
YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
Definition: grok.h:885
grk
Copyright (C) 2016-2020 Grok Image Compression Inc.
Definition: BitIO.cpp:23
grk::BitIO::getnumpasses
void getnumpasses(uint32_t *numpasses)
Definition: BitIO.cpp:177
grk::TileComponent
Definition: TileComponent.h:31
grk::BitIO
Definition: BitIO.h:32
grk_includes.h
grk::grk_tile
Definition: TileProcessor.h:31
_grk_image_comp::h
uint32_t h
data height
Definition: grok.h:858
grk::grk_rectangle::area
uint64_t area(void) const
Definition: util.h:159
grk::BitIO::inalign
void inalign()
Passes the ending bits (coming from flushing)
Definition: BitIO.cpp:142
grk::BitIO::putnumpasses
void putnumpasses(uint32_t n)
Definition: BitIO.cpp:164
grk::grk_rect_u32
grk_rectangle< uint32_t > grk_rect_u32
Definition: util.h:48
ThreadPool::hardware_concurrency
static uint32_t hardware_concurrency()
Definition: ThreadPool.hpp:65
grk::BitIO::numbytes
size_t numbytes()
Number of bytes written.
Definition: BitIO.cpp:106
grk::BitIO::read
void read(uint32_t *bits, uint32_t n)
Read bits.
Definition: BitIO.cpp:119
IBufferedStream.h
grk::IBitIO
Bit input/output.
Definition: IBitIO.h:25
grk::TileComponent::create_buffer
bool create_buffer(grk_rect_u32 *unreduced_tile_comp_dims, grk_rect_u32 unreduced_tile_comp_window_dims)
Definition: TileComponent.cpp:281
grk::BitIO::byteout_stream
bool byteout_stream()
Definition: BitIO.cpp:62
grk::IBufferedStream::write_byte
virtual bool write_byte(uint8_t value)=0
grk::BitIO::simulateOutput
void simulateOutput(bool doSimulate)
Definition: BitIO.h:66
grk::IBufferedStream
Definition: IBufferedStream.h:21
grk::BitIO::bytein
void bytein()
Definition: BitIO.cpp:70
grk::GrokOutput
Definition: bench_dwt.cpp:126
grk::TileComponentWindowBuffer::alloc
bool alloc()
Definition: TileComponentWindowBuffer.h:428
grk::Resolution
Definition: T1Structs.h:231
grk::TileComponent::numresolutions
uint8_t numresolutions
Definition: TileComponent.h:58
grk::init_tilec
bool init_tilec(TileComponent *tilec, uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t numresolutions, grk_image *output_image)
Definition: bench_dwt.cpp:73
grk::grk_rectangle::set_rect
void set_rect(grk_rectangle< T > *rhs)
Definition: util.h:118
grk::grk_rectangle::x0
T x0
Definition: util.h:76
grk::BitIO::byteout
bool byteout()
Definition: BitIO.cpp:46
J2K_MS_SOP
#define J2K_MS_SOP
SOP marker value.
Definition: CodeStream.h:89
grk::grk_rectangle::y1
T y1
Definition: util.h:76
_grk_image_comp::dx
uint32_t dx
XRsiz: horizontal separation of a sample of with component with respect to the reference grid.
Definition: grok.h:850
_grk_image::x1
uint32_t x1
Xsiz: width of the reference grid.
Definition: grok.h:887
grk::BitIO::BitIO
BitIO(uint8_t *bp, uint64_t len, bool isCompressor)
Definition: BitIO.cpp:25
grk::BitIO::sim_out
bool sim_out
Definition: BitIO.h:88
grk::WaveletFwdImpl
Definition: WaveletFwdImpl.h:23
_grk_image
Image.
Definition: grok.h:879
grk::grk_rectangle::y0
T y0
Definition: util.h:76
_grk_image::y1
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:889
grk::getValue
int32_t getValue(uint32_t i)
Definition: bench_dwt.cpp:69
grk::GRK_ERROR
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:57
ojph::info
message_info info
Definition: ojph_message.cpp:50
grk::GrokOutput::usage
virtual void usage(CmdLineInterface &c)
Definition: bench_dwt.cpp:128
grk::grk_tile::numcomps
uint32_t numcomps
Definition: TileProcessor.h:34
grk::BitIO::getbit
void getbit(uint32_t *bits, uint8_t pos)
Definition: BitIO.cpp:98
_grk_image::x0
uint32_t x0
XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
Definition: grok.h:882