Source code

Revision control

Copy as Markdown

Other Tools

// Copyright (c) the JPEG XL Project Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
#ifndef LIB_JXL_LOOP_FILTER_H_
#define LIB_JXL_LOOP_FILTER_H_
// Parameters for loop filter(s), stored in each frame.
#include <stddef.h>
#include <stdint.h>
#include "lib/jxl/base/compiler_specific.h"
#include "lib/jxl/base/status.h"
#include "lib/jxl/dec_bit_reader.h"
#include "lib/jxl/field_encodings.h"
namespace jxl {
struct LoopFilter : public Fields {
LoopFilter();
JXL_FIELDS_NAME(LoopFilter)
Status VisitFields(Visitor* JXL_RESTRICT visitor) override;
size_t Padding() const {
static const size_t padding_per_epf_iter[4] = {0, 2, 3, 6};
return padding_per_epf_iter[epf_iters] + (gab ? 1 : 0);
}
mutable bool all_default;
// --- Gaborish convolution
bool gab;
bool gab_custom;
float gab_x_weight1;
float gab_x_weight2;
float gab_y_weight1;
float gab_y_weight2;
float gab_b_weight1;
float gab_b_weight2;
// --- Edge-preserving filter
// Number of EPF stages to apply. 0 means EPF disabled. 1 applies only the
// first stage, 2 applies both stages and 3 applies the first stage twice and
// the second stage once.
uint32_t epf_iters;
bool epf_sharp_custom;
enum { kEpfSharpEntries = 8 };
float epf_sharp_lut[kEpfSharpEntries];
bool epf_weight_custom; // Custom weight params
float epf_channel_scale[3]; // Relative weight of each channel
float epf_pass1_zeroflush; // Minimum weight for first pass
float epf_pass2_zeroflush; // Minimum weight for second pass
bool epf_sigma_custom; // Custom sigma parameters
float epf_quant_mul; // Sigma is ~ this * quant
float epf_pass0_sigma_scale; // Multiplier for sigma in pass 0
float epf_pass2_sigma_scale; // Multiplier for sigma in the second pass
float epf_border_sad_mul; // (inverse) multiplier for sigma on borders
float epf_sigma_for_modular;
uint64_t extensions;
bool nonserialized_is_modular = false;
};
} // namespace jxl
#endif // LIB_JXL_LOOP_FILTER_H_