1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 13:37:45 +00:00

LibGfx/JPEGWriter: Move header writing into new add_headers() function

No behavior change.
This commit is contained in:
Nico Weber 2024-01-31 20:34:38 -05:00 committed by Andreas Kling
parent 4e637fa1d2
commit e449dba85b

View file

@ -517,12 +517,8 @@ ErrorOr<void> add_scan_header(Stream& stream)
return {};
}
}
ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options const& options)
ErrorOr<void> add_headers(Stream& stream, JPEGEncodingContext& context, JPEGWriter::Options const& options, IntSize size)
{
JPEGEncodingContext context { JPEGBigEndianOutputBitStream { stream } };
context.set_luminance_quantization_table(s_default_luminance_quantization_table, options.quality);
context.set_chrominance_quantization_table(s_default_chrominance_quantization_table, options.quality);
@ -537,7 +533,7 @@ ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options c
if (options.icc_data.has_value())
TRY(add_icc_data(stream, options.icc_data.value()));
TRY(add_frame_header(stream, context, bitmap.size()));
TRY(add_frame_header(stream, context, size));
TRY(add_quantization_table(stream, context.luminance_quantization_table()));
TRY(add_quantization_table(stream, context.chrominance_quantization_table()));
@ -548,6 +544,15 @@ ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options c
TRY(add_huffman_table(stream, context.ac_chrominance_huffman_table));
TRY(add_scan_header(stream));
return {};
}
}
ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options const& options)
{
JPEGEncodingContext context { JPEGBigEndianOutputBitStream { stream } };
TRY(add_headers(stream, context, options, bitmap.size()));
TRY(context.initialize_mcu(bitmap));
context.fdct_and_quantization();