LibGfx/ISOBMFF: Introduce JPEG2000ResolutionSubboxBase

No behavior change.
This commit is contained in:
Nico Weber 2024-03-25 21:28:38 -04:00 committed by Tim Flynn
commit a9ef2fac01
Notes: sideshowbarker 2024-07-17 07:25:39 +09:00
2 changed files with 20 additions and 5 deletions

View file

@ -144,7 +144,7 @@ void JPEG2000ResolutionBox::dump(String const& prepend) const
SuperBox::dump(prepend); SuperBox::dump(prepend);
} }
ErrorOr<void> JPEG2000CaptureResolutionBox::read_from_stream(BoxStream& stream) ErrorOr<void> JPEG2000ResolutionSubboxBase::read_from_stream(BoxStream& stream)
{ {
vertical_capture_grid_resolution_numerator = TRY(stream.read_value<BigEndian<u16>>()); vertical_capture_grid_resolution_numerator = TRY(stream.read_value<BigEndian<u16>>());
vertical_capture_grid_resolution_denominator = TRY(stream.read_value<BigEndian<u16>>()); vertical_capture_grid_resolution_denominator = TRY(stream.read_value<BigEndian<u16>>());
@ -155,13 +155,23 @@ ErrorOr<void> JPEG2000CaptureResolutionBox::read_from_stream(BoxStream& stream)
return {}; return {};
} }
void JPEG2000CaptureResolutionBox::dump(String const& prepend) const void JPEG2000ResolutionSubboxBase::dump(String const& prepend) const
{ {
Box::dump(prepend); Box::dump(prepend);
outln("{}- vertical_capture_grid_resolution = {}/{} * 10^{}", prepend, vertical_capture_grid_resolution_numerator, vertical_capture_grid_resolution_denominator, vertical_capture_grid_resolution_exponent); outln("{}- vertical_capture_grid_resolution = {}/{} * 10^{}", prepend, vertical_capture_grid_resolution_numerator, vertical_capture_grid_resolution_denominator, vertical_capture_grid_resolution_exponent);
outln("{}- horizontal_capture_grid_resolution = {}/{} * 10^{}", prepend, horizontal_capture_grid_resolution_numerator, horizontal_capture_grid_resolution_denominator, horizontal_capture_grid_resolution_exponent); outln("{}- horizontal_capture_grid_resolution = {}/{} * 10^{}", prepend, horizontal_capture_grid_resolution_numerator, horizontal_capture_grid_resolution_denominator, horizontal_capture_grid_resolution_exponent);
} }
ErrorOr<void> JPEG2000CaptureResolutionBox::read_from_stream(BoxStream& stream)
{
return JPEG2000ResolutionSubboxBase::read_from_stream(stream);
}
void JPEG2000CaptureResolutionBox::dump(String const& prepend) const
{
JPEG2000ResolutionSubboxBase::dump(prepend);
}
ErrorOr<void> JPEG2000ContiguousCodestreamBox::read_from_stream(BoxStream& stream) ErrorOr<void> JPEG2000ContiguousCodestreamBox::read_from_stream(BoxStream& stream)
{ {
// FIXME: It's wasteful to make a copy of all the image data here. Having just a ReadonlyBytes // FIXME: It's wasteful to make a copy of all the image data here. Having just a ReadonlyBytes

View file

@ -55,9 +55,9 @@ struct JPEG2000ResolutionBox final : public SuperBox {
BOX_SUBTYPE(JPEG2000ResolutionBox); BOX_SUBTYPE(JPEG2000ResolutionBox);
}; };
// I.5.3.7.1 Capture Resolution box struct JPEG2000ResolutionSubboxBase : public Box {
struct JPEG2000CaptureResolutionBox final : public Box { ErrorOr<void> read_from_stream(BoxStream&);
BOX_SUBTYPE(JPEG2000CaptureResolutionBox); virtual void dump(String const& prepend) const override;
u16 vertical_capture_grid_resolution_numerator { 0 }; u16 vertical_capture_grid_resolution_numerator { 0 };
u16 vertical_capture_grid_resolution_denominator { 0 }; u16 vertical_capture_grid_resolution_denominator { 0 };
@ -67,6 +67,11 @@ struct JPEG2000CaptureResolutionBox final : public Box {
i8 horizontal_capture_grid_resolution_exponent { 0 }; i8 horizontal_capture_grid_resolution_exponent { 0 };
}; };
// I.5.3.7.1 Capture Resolution box
struct JPEG2000CaptureResolutionBox final : public JPEG2000ResolutionSubboxBase {
BOX_SUBTYPE(JPEG2000CaptureResolutionBox);
};
// I.5.4 Contiguous Codestream box // I.5.4 Contiguous Codestream box
struct JPEG2000ContiguousCodestreamBox final : public Box { struct JPEG2000ContiguousCodestreamBox final : public Box {
BOX_SUBTYPE(JPEG2000ContiguousCodestreamBox); BOX_SUBTYPE(JPEG2000ContiguousCodestreamBox);