Skip to content

Commit

Permalink
Merge pull request #1640 from fintelia/optimize-bmp-rgba
Browse files Browse the repository at this point in the history
Optimize decoding of certain RGBA BMP files
  • Loading branch information
fintelia committed Dec 20, 2021
2 parents 5893be0 + 32cdd72 commit 6301dc6
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/codecs/bmp/decoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ const R8_G8_B8_COLOR_MASK: Bitfields = Bitfields {
b: Bitfield { len: 8, shift: 8 },
a: Bitfield { len: 0, shift: 0 },
};
const R8_G8_B8_A8_COLOR_MASK: Bitfields = Bitfields {
r: Bitfield { len: 8, shift: 16 },
g: Bitfield { len: 8, shift: 8 },
b: Bitfield { len: 8, shift: 0 },
a: Bitfield { len: 8, shift: 24 },
};

const RLE_ESCAPE: u8 = 0;
const RLE_ESCAPE_EOL: u8 = 0;
Expand Down Expand Up @@ -1460,6 +1466,9 @@ impl<R: Read + Seek> BmpDecoder<R> {
Some(R8_G8_B8_COLOR_MASK) => {
self.read_full_byte_pixel_data(&FormatFullBytes::Format888)
}
Some(R8_G8_B8_A8_COLOR_MASK) => {
self.read_full_byte_pixel_data(&FormatFullBytes::RGBA32)
}
Some(_) => self.read_32_bit_pixel_data(),
None => Err(DecoderError::BitfieldMasksMissing(32).into()),
},
Expand Down

0 comments on commit 6301dc6

Please sign in to comment.