commit 443f2bf30f37fe3702ef8084bb7dcfc640c4199d Author: Toshaan Bharvani Date: Wed Jun 7 18:02:22 2023 +0200 initial package creation Signed-off-by: Toshaan Bharvani diff --git a/SOURCES/0001-remove-unused-hawktracer-usage.patch b/SOURCES/0001-remove-unused-hawktracer-usage.patch new file mode 100644 index 0000000..fc92b16 --- /dev/null +++ b/SOURCES/0001-remove-unused-hawktracer-usage.patch @@ -0,0 +1,435 @@ +From 0dc6dc69be65915666c3d70455d181d4d1b5b78c Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Mon, 8 Aug 2022 20:48:47 +0200 +Subject: [PATCH 1/3] remove unused hawktracer usage + +--- + src/activity.rs | 3 --- + src/api/internal.rs | 9 --------- + src/api/lookahead.rs | 5 ----- + src/bin/muxer/ivf.rs | 2 -- + src/bin/rav1e-ch.rs | 10 ---------- + src/bin/rav1e.rs | 10 ---------- + src/bin/stats.rs | 3 --- + src/cdef.rs | 2 -- + src/deblock.rs | 4 ---- + src/encoder.rs | 3 --- + src/lrf.rs | 2 -- + src/me.rs | 3 --- + src/scenechange/mod.rs | 5 ----- + 13 files changed, 61 deletions(-) + +diff --git a/src/activity.rs b/src/activity.rs +index 99d9137..7ebcd0e 100644 +--- a/src/activity.rs ++++ b/src/activity.rs +@@ -12,7 +12,6 @@ use crate::rdo::{ssim_boost, DistortionScale}; + use crate::tiling::*; + use crate::util::*; + use itertools::izip; +-use rust_hawktracer::*; + + #[derive(Debug, Default, Clone)] + pub struct ActivityMask { +@@ -20,7 +19,6 @@ pub struct ActivityMask { + } + + impl ActivityMask { +- #[hawktracer(activity_mask_from_plane)] + pub fn from_plane(luma_plane: &Plane) -> ActivityMask { + let PlaneConfig { width, height, .. } = luma_plane.cfg; + +@@ -55,7 +53,6 @@ impl ActivityMask { + ActivityMask { variances: variances.into_boxed_slice() } + } + +- #[hawktracer(activity_mask_fill_scales)] + pub fn fill_scales( + &self, bit_depth: usize, activity_scales: &mut Box<[DistortionScale]>, + ) { +diff --git a/src/api/internal.rs b/src/api/internal.rs +index c1613c8..5bfa3ab 100644 +--- a/src/api/internal.rs ++++ b/src/api/internal.rs +@@ -27,7 +27,6 @@ use crate::stats::EncoderStats; + use crate::tiling::Area; + use crate::util::Pixel; + use arrayvec::ArrayVec; +-use rust_hawktracer::*; + use std::cmp; + use std::collections::{BTreeMap, BTreeSet}; + use std::env; +@@ -312,7 +311,6 @@ impl ContextInner { + } + } + +- #[hawktracer(send_frame)] + pub fn send_frame( + &mut self, mut frame: Option>>, + params: Option, +@@ -591,7 +589,6 @@ impl ContextInner { + /// `rec_buffer` and `lookahead_rec_buffer` on the `FrameInvariants`. This + /// function must be called after every new `FrameInvariants` is initially + /// computed. +- #[hawktracer(compute_lookahead_motion_vectors)] + fn compute_lookahead_motion_vectors(&mut self, output_frameno: u64) { + let qps = { + let frame_data = self.frame_data.get(&output_frameno).unwrap(); +@@ -752,7 +749,6 @@ impl ContextInner { + + /// Computes lookahead intra cost approximations and fills in + /// `lookahead_intra_costs` on the `FrameInvariants`. +- #[hawktracer(compute_lookahead_intra_costs)] + fn compute_lookahead_intra_costs(&mut self, output_frameno: u64) { + let frame_data = self.frame_data.get(&output_frameno).unwrap(); + let fi = &frame_data.fi; +@@ -774,7 +770,6 @@ impl ContextInner { + ); + } + +- #[hawktracer(compute_keyframe_placement)] + pub fn compute_keyframe_placement( + &mut self, lookahead_frames: &[Arc>], + ) { +@@ -791,7 +786,6 @@ impl ContextInner { + self.next_lookahead_frame += 1; + } + +- #[hawktracer(compute_frame_invariants)] + pub fn compute_frame_invariants(&mut self) { + while self.set_frame_properties(self.next_lookahead_output_frameno).is_ok() + { +@@ -804,7 +798,6 @@ impl ContextInner { + } + } + +- #[hawktracer(update_block_importances)] + fn update_block_importances( + fi: &FrameInvariants, me_stats: &crate::me::FrameMEStats, + frame: &Frame, reference_frame: &Frame, bit_depth: usize, +@@ -963,7 +956,6 @@ impl ContextInner { + } + + /// Computes the block importances for the current output frame. +- #[hawktracer(compute_block_importances)] + fn compute_block_importances(&mut self) { + // SEF don't need block importances. + if self.frame_data[&self.output_frameno].fi.show_existing_frame { +@@ -1296,7 +1288,6 @@ impl ContextInner { + } + } + +- #[hawktracer(receive_packet)] + pub fn receive_packet(&mut self) -> Result, EncoderStatus> { + if self.done_processing() { + return Err(EncoderStatus::LimitReached); +diff --git a/src/api/lookahead.rs b/src/api/lookahead.rs +index 690acd2..30297d3 100644 +--- a/src/api/lookahead.rs ++++ b/src/api/lookahead.rs +@@ -14,7 +14,6 @@ use crate::rayon::iter::*; + use crate::tiling::{Area, TileRect}; + use crate::transform::TxSize; + use crate::{Frame, Pixel}; +-use rust_hawktracer::*; + use std::sync::Arc; + use v_frame::pixel::CastFromPrimitive; + +@@ -24,7 +23,6 @@ pub(crate) const IMP_BLOCK_SIZE_IN_MV_UNITS: i64 = + pub(crate) const IMP_BLOCK_AREA_IN_MV_UNITS: i64 = + IMP_BLOCK_SIZE_IN_MV_UNITS * IMP_BLOCK_SIZE_IN_MV_UNITS; + +-#[hawktracer(estimate_intra_costs)] + pub(crate) fn estimate_intra_costs( + frame: &Frame, bit_depth: usize, cpu_feature_level: CpuFeatureLevel, + ) -> Box<[u32]> { +@@ -116,7 +114,6 @@ pub(crate) fn estimate_intra_costs( + intra_costs.into_boxed_slice() + } + +-#[hawktracer(estimate_importance_block_difference)] + pub(crate) fn estimate_importance_block_difference( + frame: Arc>, ref_frame: Arc>, + ) -> Box<[u32]> { +@@ -174,7 +171,6 @@ pub(crate) fn estimate_importance_block_difference( + inter_costs.into_boxed_slice() + } + +-#[hawktracer(estimate_inter_costs)] + pub(crate) fn estimate_inter_costs( + frame: Arc>, ref_frame: Arc>, bit_depth: usize, + mut config: EncoderConfig, sequence: Arc, +@@ -236,7 +232,6 @@ pub(crate) fn estimate_inter_costs( + inter_costs.into_boxed_slice() + } + +-#[hawktracer(compute_motion_vectors)] + pub(crate) fn compute_motion_vectors( + fi: &mut FrameInvariants, fs: &mut FrameState, inter_cfg: &InterConfig, + ) { +diff --git a/src/bin/muxer/ivf.rs b/src/bin/muxer/ivf.rs +index d89e541..2157a58 100644 +--- a/src/bin/muxer/ivf.rs ++++ b/src/bin/muxer/ivf.rs +@@ -12,7 +12,6 @@ use super::Muxer; + use crate::error::*; + use ivf::*; + use rav1e::prelude::*; +-use rust_hawktracer::*; + use std::fs; + use std::fs::File; + use std::io; +@@ -37,7 +36,6 @@ impl Muxer for IvfMuxer { + ); + } + +- #[hawktracer(write_frame)] + fn write_frame(&mut self, pts: u64, data: &[u8], _frame_type: FrameType) { + write_ivf_frame(&mut self.output, pts, data); + } +diff --git a/src/bin/rav1e-ch.rs b/src/bin/rav1e-ch.rs +index d9081dd..80b6f9a 100644 +--- a/src/bin/rav1e-ch.rs ++++ b/src/bin/rav1e-ch.rs +@@ -303,18 +303,8 @@ fn do_encode( + } + + fn main() -> Result<(), Box> { +- #[cfg(feature = "tracing")] +- use rust_hawktracer::*; + init_logger(); + +- #[cfg(feature = "tracing")] +- let instance = HawktracerInstance::new(); +- #[cfg(feature = "tracing")] +- let _listener = instance.create_listener(HawktracerListenerType::ToFile { +- file_path: "trace.bin".into(), +- buffer_size: 4096, +- }); +- + run().map_err(|e| { + error::print_error(&e); + Box::new(e) as Box +diff --git a/src/bin/rav1e.rs b/src/bin/rav1e.rs +index da6d664..2d9eac3 100644 +--- a/src/bin/rav1e.rs ++++ b/src/bin/rav1e.rs +@@ -295,18 +295,8 @@ fn do_encode( + } + + fn main() { +- #[cfg(feature = "tracing")] +- use rust_hawktracer::*; + init_logger(); + +- #[cfg(feature = "tracing")] +- let instance = HawktracerInstance::new(); +- #[cfg(feature = "tracing")] +- let _listener = instance.create_listener(HawktracerListenerType::ToFile { +- file_path: "trace.bin".into(), +- buffer_size: 4096, +- }); +- + run().unwrap_or_else(|e| { + error::print_error(&e); + exit(1); +diff --git a/src/bin/stats.rs b/src/bin/stats.rs +index d363d0c..09e3b77 100644 +--- a/src/bin/stats.rs ++++ b/src/bin/stats.rs +@@ -12,7 +12,6 @@ use rav1e::data::EncoderStats; + use rav1e::prelude::Rational; + use rav1e::prelude::*; + use rav1e::{Packet, Pixel}; +-use rust_hawktracer::*; + use std::fmt; + use std::time::Instant; + +@@ -30,7 +29,6 @@ pub struct FrameSummary { + pub enc_stats: EncoderStats, + } + +-#[hawktracer(build_frame_summary)] + pub fn build_frame_summary( + packets: Packet, bit_depth: usize, chroma_sampling: ChromaSampling, + metrics_cli: MetricsEnabled, +@@ -742,7 +740,6 @@ pub enum MetricsEnabled { + All, + } + +-#[hawktracer(calculate_frame_metrics)] + pub fn calculate_frame_metrics( + frame1: &Frame, frame2: &Frame, bit_depth: usize, cs: ChromaSampling, + metrics: MetricsEnabled, +diff --git a/src/cdef.rs b/src/cdef.rs +index 6eeddb0..26e8ae1 100644 +--- a/src/cdef.rs ++++ b/src/cdef.rs +@@ -13,7 +13,6 @@ use crate::encoder::FrameInvariants; + use crate::frame::*; + use crate::tiling::*; + use crate::util::{clamp, msb, CastFromPrimitive, Pixel}; +-use rust_hawktracer::*; + + use crate::cpu_features::CpuFeatureLevel; + use std::cmp; +@@ -586,7 +585,6 @@ pub fn cdef_filter_superblock( + // tile boundary), the filtering process ignores input pixels that + // don't exist. + +-#[hawktracer(cdef_filter_tile)] + pub fn cdef_filter_tile( + fi: &FrameInvariants, input: &Frame, tb: &TileBlocks, + output: &mut TileMut<'_, T>, +diff --git a/src/deblock.rs b/src/deblock.rs +index ff70368..61b7cd4 100644 +--- a/src/deblock.rs ++++ b/src/deblock.rs +@@ -17,7 +17,6 @@ use crate::quantize::*; + use crate::tiling::*; + use crate::util::{clamp, ILog, Pixel}; + use crate::DeblockState; +-use rust_hawktracer::*; + use std::cmp; + + use crate::rayon::iter::*; +@@ -1313,7 +1312,6 @@ fn sse_h_edge( + } + + // Deblocks all edges, vertical and horizontal, in a single plane +-#[hawktracer(deblock_plane)] + pub fn deblock_plane( + deblock: &DeblockState, p: &mut PlaneRegionMut, pli: usize, + blocks: &TileBlocks, crop_w: usize, crop_h: usize, bd: usize, +@@ -1563,7 +1561,6 @@ fn sse_plane( + } + + // Deblocks all edges in all planes of a frame +-#[hawktracer(deblock_filter_frame)] + pub fn deblock_filter_frame( + deblock: &DeblockState, tile: &mut TileMut, blocks: &TileBlocks, + crop_w: usize, crop_h: usize, bd: usize, planes: usize, +@@ -1641,7 +1638,6 @@ fn sse_optimize( + level + } + +-#[hawktracer(deblock_filter_optimize)] + pub fn deblock_filter_optimize( + fi: &FrameInvariants, rec: &Tile, input: &Tile, + blocks: &TileBlocks, crop_w: usize, crop_h: usize, +diff --git a/src/encoder.rs b/src/encoder.rs +index c0b31fa..5fc753f 100644 +--- a/src/encoder.rs ++++ b/src/encoder.rs +@@ -48,7 +48,6 @@ use std::sync::Arc; + use std::{fmt, io, mem}; + + use crate::rayon::iter::*; +-use rust_hawktracer::*; + + #[allow(dead_code)] + #[derive(Debug, Clone, PartialEq)] +@@ -2949,7 +2948,6 @@ fn get_initial_cdfcontext(fi: &FrameInvariants) -> CDFContext { + cdf.unwrap_or_else(|| CDFContext::new(fi.base_q_idx)) + } + +-#[hawktracer(encode_tile_group)] + fn encode_tile_group( + fi: &FrameInvariants, fs: &mut FrameState, inter_cfg: &InterConfig, + ) -> Vec { +@@ -3181,7 +3179,6 @@ fn check_lf_queue( + } + } + +-#[hawktracer(encode_tile)] + fn encode_tile<'a, T: Pixel>( + fi: &FrameInvariants, ts: &mut TileStateMut<'_, T>, + fc: &'a mut CDFContext, blocks: &'a mut TileBlocksMut<'a>, +diff --git a/src/lrf.rs b/src/lrf.rs +index 2fc3b33..4399c4c 100644 +--- a/src/lrf.rs ++++ b/src/lrf.rs +@@ -23,7 +23,6 @@ use crate::frame::{ + }; + use crate::tiling::{Area, PlaneRegion, PlaneRegionMut, Rect}; + use crate::util::{clamp, CastFromPrimitive, ILog, Pixel}; +-use rust_hawktracer::*; + + use crate::api::SGRComplexityLevel; + use std::cmp; +@@ -1461,7 +1460,6 @@ impl RestorationState { + } + } + +- #[hawktracer(lrf_filter_frame)] + pub fn lrf_filter_frame( + &mut self, out: &mut Frame, pre_cdef: &Frame, + fi: &FrameInvariants, +diff --git a/src/me.rs b/src/me.rs +index 6f849a4..7ed64e4 100644 +--- a/src/me.rs ++++ b/src/me.rs +@@ -29,8 +29,6 @@ use crate::util::ILog; + use std::ops::{Index, IndexMut}; + use std::sync::Arc; + +-use rust_hawktracer::*; +- + #[derive(Debug, Copy, Clone, Default)] + pub struct MEStats { + pub mv: MotionVector, +@@ -98,7 +96,6 @@ enum MVSamplingMode { + CORNER { right: bool, bottom: bool }, + } + +-#[hawktracer(estimate_tile_motion)] + pub fn estimate_tile_motion( + fi: &FrameInvariants, ts: &mut TileStateMut<'_, T>, + inter_cfg: &InterConfig, +diff --git a/src/scenechange/mod.rs b/src/scenechange/mod.rs +index 20479f0..126329d 100644 +--- a/src/scenechange/mod.rs ++++ b/src/scenechange/mod.rs +@@ -14,7 +14,6 @@ use crate::encoder::Sequence; + use crate::frame::*; + use crate::sad_row; + use crate::util::Pixel; +-use rust_hawktracer::*; + use std::sync::Arc; + use std::{cmp, u64}; + +@@ -123,7 +122,6 @@ impl SceneChangeDetector { + /// to the second frame in `frame_set`. + /// + /// This will gracefully handle the first frame in the video as well. +- #[hawktracer(analyze_next_frame)] + pub fn analyze_next_frame( + &mut self, frame_set: &[Arc>], input_frameno: u64, + previous_keyframe: u64, +@@ -345,7 +343,6 @@ impl SceneChangeDetector { + + /// The fast algorithm detects fast cuts using a raw difference + /// in pixel values between the scaled frames. +- #[hawktracer(fast_scenecut)] + fn fast_scenecut( + &mut self, frame1: Arc>, frame2: Arc>, + ) -> ScenecutResult { +@@ -424,7 +421,6 @@ impl SceneChangeDetector { + /// We gather both intra and inter costs for the frames, + /// as well as an importance-block-based difference, + /// and use all three metrics. +- #[hawktracer(cost_scenecut)] + fn cost_scenecut( + &self, frame1: Arc>, frame2: Arc>, + ) -> ScenecutResult { +@@ -487,7 +483,6 @@ impl SceneChangeDetector { + } + + /// Calculates the average sum of absolute difference (SAD) per pixel between 2 planes +- #[hawktracer(delta_in_planes)] + fn delta_in_planes(&self, plane1: &Plane, plane2: &Plane) -> f64 { + let mut delta = 0; + +-- +2.39.2 + diff --git a/SOURCES/0002-Fix-UB-in-pred_max-test.patch b/SOURCES/0002-Fix-UB-in-pred_max-test.patch new file mode 100644 index 0000000..3f8f29c --- /dev/null +++ b/SOURCES/0002-Fix-UB-in-pred_max-test.patch @@ -0,0 +1,27 @@ +From c867cd96956a2c5034496362c4a530b97fefe4b8 Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Fri, 13 Jan 2023 17:35:44 +0100 +Subject: [PATCH 2/3] Fix UB in pred_max test + +Backport of upstream commit: +https://github.com/xiph/rav1e/commit/d56fe642bbbd8fe3d20c851b950db3fcaea53c7a +--- + src/predict.rs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/predict.rs b/src/predict.rs +index 8e0108a..6058ccb 100644 +--- a/src/predict.rs ++++ b/src/predict.rs +@@ -1542,7 +1542,7 @@ mod test { + } + } + +- let above_left = unsafe { *above.as_ptr().offset(-1) }; ++ let above_left = max12bit; + + pred_paeth( + &mut o.as_region_mut(), +-- +2.39.2 + diff --git a/SOURCES/0003-Disambiguate-ILog-ilog-calls-from-integer-ilog-from-.patch b/SOURCES/0003-Disambiguate-ILog-ilog-calls-from-integer-ilog-from-.patch new file mode 100644 index 0000000..44758cd --- /dev/null +++ b/SOURCES/0003-Disambiguate-ILog-ilog-calls-from-integer-ilog-from-.patch @@ -0,0 +1,164 @@ +From 81ec02d29afbfa503997a56d3fb7c3f039030d8d Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Fri, 17 Feb 2023 00:54:53 +0100 +Subject: [PATCH 3/3] Disambiguate ILog::ilog calls from {integer}::ilog from + Rust 1.67+ + +--- + src/deblock.rs | 4 ++-- + src/ec.rs | 8 ++++---- + src/encoder.rs | 2 +- + src/lrf.rs | 4 ++-- + src/me.rs | 2 +- + src/rate.rs | 2 +- + src/transform/inverse.rs | 4 ++-- + src/transform/mod.rs | 2 +- + 8 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/src/deblock.rs b/src/deblock.rs +index 61b7cd4..03048a5 100644 +--- a/src/deblock.rs ++++ b/src/deblock.rs +@@ -1578,8 +1578,8 @@ fn sse_optimize( + ) -> [u8; 4] { + // i64 allows us to accumulate a total of ~ 35 bits worth of pixels + assert!( +- input.planes[0].plane_cfg.width.ilog() +- + input.planes[0].plane_cfg.height.ilog() ++ ILog::ilog(input.planes[0].plane_cfg.width) ++ + ILog::ilog(input.planes[0].plane_cfg.height) + < 35 + ); + let mut level = [0; 4]; +diff --git a/src/ec.rs b/src/ec.rs +index 5d02ffd..c8abc62 100644 +--- a/src/ec.rs ++++ b/src/ec.rs +@@ -192,7 +192,7 @@ impl StorageBackend for WriterBase { + #[inline] + fn store(&mut self, fl: u16, fh: u16, nms: u16) { + let (_l, r) = self.lr_compute(fl, fh, nms); +- let d = 16 - r.ilog(); ++ let d = 16 - ILog::ilog(r); + let mut s = self.cnt + (d as i16); + + self.s.bytes += (s >= 0) as usize + (s >= 8) as usize; +@@ -230,7 +230,7 @@ impl StorageBackend for WriterBase { + #[inline] + fn store(&mut self, fl: u16, fh: u16, nms: u16) { + let (_l, r) = self.lr_compute(fl, fh, nms); +- let d = 16 - r.ilog(); ++ let d = 16 - ILog::ilog(r); + let mut s = self.cnt + (d as i16); + + self.s.bytes += (s >= 0) as usize + (s >= 8) as usize; +@@ -271,7 +271,7 @@ impl StorageBackend for WriterBase { + let (l, r) = self.lr_compute(fl, fh, nms); + let mut low = l + self.s.low; + let mut c = self.cnt; +- let d = 16 - r.ilog(); ++ let d = 16 - ILog::ilog(r); + let mut s = c + (d as i16); + + if s >= 0 { +@@ -584,7 +584,7 @@ where + + // The 9 here counteracts the offset of -9 baked into cnt. Don't include a termination bit. + let pre = Self::frac_compute((self.cnt + 9) as u32, self.rng as u32); +- let d = 16 - r.ilog(); ++ let d = 16 - ILog::ilog(r); + let mut c = self.cnt; + let mut sh = c + (d as i16); + if sh >= 0 { +diff --git a/src/encoder.rs b/src/encoder.rs +index 5fc753f..b5995ed 100644 +--- a/src/encoder.rs ++++ b/src/encoder.rs +@@ -3051,7 +3051,7 @@ fn encode_tile_group( + fs.cdfs.reset_counts(); + } + +- let max_tile_size_bytes = ((max_len.ilog() + 7) / 8) as u32; ++ let max_tile_size_bytes = ((ILog::ilog(max_len) + 7) / 8) as u32; + debug_assert!(max_tile_size_bytes > 0 && max_tile_size_bytes <= 4); + fs.max_tile_size_bytes = max_tile_size_bytes; + +diff --git a/src/lrf.rs b/src/lrf.rs +index 4399c4c..bf59647 100644 +--- a/src/lrf.rs ++++ b/src/lrf.rs +@@ -1408,8 +1408,8 @@ impl RestorationState { + } + + // derive the rest +- let y_unit_log2 = y_unit_size.ilog() - 1; +- let uv_unit_log2 = uv_unit_size.ilog() - 1; ++ let y_unit_log2 = ILog::ilog(y_unit_size) - 1; ++ let uv_unit_log2 = ILog::ilog(uv_unit_size) - 1; + let y_cols = ((fi.width + (y_unit_size >> 1)) / y_unit_size).max(1); + let y_rows = ((fi.height + (y_unit_size >> 1)) / y_unit_size).max(1); + let uv_cols = ((((fi.width + (1 << xdec >> 1)) >> xdec) +diff --git a/src/me.rs b/src/me.rs +index 7ed64e4..3acdb07 100644 +--- a/src/me.rs ++++ b/src/me.rs +@@ -1065,7 +1065,7 @@ fn get_mv_rate( + #[inline(always)] + fn diff_to_rate(diff: i16, allow_high_precision_mv: bool) -> u32 { + let d = if allow_high_precision_mv { diff } else { diff >> 1 }; +- 2 * d.abs().ilog() as u32 ++ 2 * ILog::ilog(d.abs()) as u32 + } + + diff_to_rate(a.row - b.row, allow_high_precision_mv) +diff --git a/src/rate.rs b/src/rate.rs +index 6bc23f3..1a94f08 100644 +--- a/src/rate.rs ++++ b/src/rate.rs +@@ -234,7 +234,7 @@ fn blog64(w: i64) -> i64 { + if w <= 0 { + return -1; + } +- let ipart = w.ilog() as i32 - 1; ++ let ipart = ILog::ilog(w) as i32 - 1; + if ipart > 61 { + w >>= ipart - 61; + } else { +diff --git a/src/transform/inverse.rs b/src/transform/inverse.rs +index 3bf3286..813c784 100644 +--- a/src/transform/inverse.rs ++++ b/src/transform/inverse.rs +@@ -1608,7 +1608,7 @@ pub(crate) mod rust { + + // perform inv txfm on every row + let range = bd + 8; +- let txfm_fn = INV_TXFM_FNS[tx_types_1d.1 as usize][width.ilog() - 3]; ++ let txfm_fn = INV_TXFM_FNS[tx_types_1d.1 as usize][ILog::ilog(width) - 3]; + // 64 point transforms only signal 32 coeffs. We only take chunks of 32 + // and skip over the last 32 transforms here. + for (r, buffer_slice) in (0..height.min(32)).zip(buffer.chunks_mut(width)) +@@ -1634,7 +1634,7 @@ pub(crate) mod rust { + + // perform inv txfm on every col + let range = cmp::max(bd + 6, 16); +- let txfm_fn = INV_TXFM_FNS[tx_types_1d.0 as usize][height.ilog() - 3]; ++ let txfm_fn = INV_TXFM_FNS[tx_types_1d.0 as usize][ILog::ilog(height) - 3]; + for c in 0..width { + let mut temp_in: [i32; 64] = [0; 64]; + let mut temp_out: [i32; 64] = [0; 64]; +diff --git a/src/transform/mod.rs b/src/transform/mod.rs +index 304df73..96e9457 100644 +--- a/src/transform/mod.rs ++++ b/src/transform/mod.rs +@@ -288,7 +288,7 @@ pub enum TxSet { + #[inline] + pub fn get_rect_tx_log_ratio(col: usize, row: usize) -> i8 { + debug_assert!(col > 0 && row > 0); +- col.ilog() as i8 - row.ilog() as i8 ++ ILog::ilog(col) as i8 - ILog::ilog(row) as i8 + } + + // performs half a butterfly +-- +2.39.2 + diff --git a/SOURCES/rav1e-0.5.1.crate b/SOURCES/rav1e-0.5.1.crate new file mode 100644 index 0000000..2c72e98 Binary files /dev/null and b/SOURCES/rav1e-0.5.1.crate differ diff --git a/SOURCES/rav1e-fix-metadata-auto.diff b/SOURCES/rav1e-fix-metadata-auto.diff new file mode 100644 index 0000000..807eb5e --- /dev/null +++ b/SOURCES/rav1e-fix-metadata-auto.diff @@ -0,0 +1,25 @@ +--- rav1e-0.5.1/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ rav1e-0.5.1/Cargo.toml 1970-01-01T00:00:01+00:00 +@@ -232,22 +232,6 @@ + tracing = ["rust_hawktracer/profiling_enabled"] + unstable = [] + wasm = ["wasm-bindgen"] +-[target."cfg(any(decode_test, decode_test_dav1d))".dependencies.system-deps] +-version = "~3.1.2" +-[target."cfg(fuzzing)".dependencies.arbitrary] +-version = "0.4" +- +-[target."cfg(fuzzing)".dependencies.interpolate_name] +-version = "0.2.2" +- +-[target."cfg(fuzzing)".dependencies.libfuzzer-sys] +-version = "0.3" +- +-[target."cfg(fuzzing)".dependencies.rand] +-version = "0.8" +- +-[target."cfg(fuzzing)".dependencies.rand_chacha] +-version = "0.3" + [target."cfg(unix)".dependencies.signal-hook] + version = "0.3" + optional = true diff --git a/SOURCES/rav1e-fix-metadata.diff b/SOURCES/rav1e-fix-metadata.diff new file mode 100644 index 0000000..b3db2e2 --- /dev/null +++ b/SOURCES/rav1e-fix-metadata.diff @@ -0,0 +1,68 @@ +--- rav1e-0.5.1/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ rav1e-0.5.1/Cargo.toml 2022-08-08T18:36:33.822505+00:00 +@@ -22,7 +22,7 @@ + default-run = "rav1e" + description = "The fastest and safest AV1 encoder" + readme = "README.md" +-license = "BSD-2-Clause" ++license = "BSD-2-Clause AND ISC" + repository = "https://github.com/xiph/rav1e/" + [package.metadata.docs.rs] + no-default-features = true +@@ -90,7 +90,7 @@ + default-features = false + + [dependencies.console] +-version = "0.14" ++version = "0.15" + optional = true + + [dependencies.crossbeam] +@@ -98,7 +98,7 @@ + optional = true + + [dependencies.dav1d-sys] +-version = "0.3.4" ++version = "0.5" + optional = true + + [dependencies.fern] +@@ -139,9 +139,6 @@ + [dependencies.rayon] + version = "1.0" + +-[dependencies.rust_hawktracer] +-version = "0.7.0" +- + [dependencies.scan_fmt] + version = "0.2.3" + optional = true +@@ -165,18 +162,11 @@ + [dependencies.v_frame] + version = "0.2.5" + +-[dependencies.wasm-bindgen] +-version = "0.2.63" +-optional = true +- + [dependencies.y4m] + version = "0.7" + optional = true + [dev-dependencies.assert_cmd] + version = "2.0" +- +-[dev-dependencies.criterion] +-version = "0.3" + + [dev-dependencies.interpolate_name] + version = "0.2.2" +@@ -229,9 +219,7 @@ + scenechange = [] + serialize = ["serde", "toml", "v_frame/serialize", "arrayvec/serde"] + signal_support = ["signal-hook"] +-tracing = ["rust_hawktracer/profiling_enabled"] + unstable = [] +-wasm = ["wasm-bindgen"] + [target."cfg(unix)".dependencies.signal-hook] + version = "0.3" + optional = true diff --git a/SPECS/rust-rav1e.spec b/SPECS/rust-rav1e.spec new file mode 100644 index 0000000..43f2d09 --- /dev/null +++ b/SPECS/rust-rav1e.spec @@ -0,0 +1,676 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.3.1) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 8; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +# Generated by rust2rpm 22 +%bcond_without check + +# Apache-2.0 OR MIT +# BSD-2-Clause +# BSD-2-Clause AND ISC +# MIT +# MIT OR Apache-2.0 +%global binary_license BSD-2-Clause AND ISC AND MIT + +%global crate rav1e + +Name: rust-rav1e +Version: 0.5.1 +Release: %autorelease +Summary: Fastest and safest AV1 encoder + +# Upstream license specification: BSD-2-Clause +# src/ext/x86/x86inc.asm is under ISC, https://github.com/xiph/rav1e/issues/2181 +License: BSD-2-Clause AND ISC +URL: https://crates.io/crates/rav1e +Source: %{crates_source} +# Automatically generated patch to strip foreign dependencies +Patch: rav1e-fix-metadata-auto.diff +# Manually created patch for downstream crate metadata changes +# * Fix license in Cargo.toml +# * Bump console from 0.14 to 0.15 +# * Bump dav1d-sys from 0.3.4 to 0.5 +# * Remove useless rust_hawktracer dependency +# * Remove unused wasm-bindgen dependency +# * Remove unused criterion dev-dependency +# * Drop unused tracing feature +# * Drop unused wasm feature +Patch: rav1e-fix-metadata.diff +# * Remove useless / no-op hawktracer macros +Patch: 0001-remove-unused-hawktracer-usage.patch +# * Backported patch to fix UB / crash in test code +# https://github.com/xiph/rav1e/commit/d56fe64: +Patch: 0002-Fix-UB-in-pred_max-test.patch +# * Disambiguate code which is ambiguous with Rust 1.67+ due to the +# stabilization of {integer}::ilog +Patch: 0003-Disambiguate-ILog-ilog-calls-from-integer-ilog-from-.patch + +ExclusiveArch: %{rust_arches} + +BuildRequires: rust-packaging >= 21 + +%global _description %{expand: +Fastest and safest AV1 encoder.} + +%description %{_description} + +%package -n %{crate} +Summary: %{summary} +License: %{binary_license} + +%description -n %{crate} %{_description} + +%files -n %{crate} +%license LICENSE +%license PATENTS +%doc README.md +%{_bindir}/rav1e + +%package -n %{crate}-libs +Summary: Library files for rav1e +License: %{binary_license} + +%description -n %{crate}-libs +Library files for rav1e, the fastest and safest AV1 encoder. + +%files -n %{crate}-libs +%license LICENSE +%license PATENTS +%doc README.md +%{_libdir}/librav1e.so.0* + +%package -n %{crate}-devel +Summary: %{summary} +License: %{binary_license} +Requires: %{crate}-libs%{?_isa} = %{version}-%{release} + +%description -n %{crate}-devel %{_description} + +%files -n %{crate}-devel +%{_includedir}/rav1e/ +%{_libdir}/librav1e.so +%{_libdir}/pkgconfig/rav1e.pc + +%package devel +Summary: %{summary} +BuildArch: noarch + +%description devel %{_description} + +This package contains library source intended for building other packages which +use the "%{crate}" crate. + +%files devel +%license %{crate_instdir}/LICENSE +%license %{crate_instdir}/PATENTS +%doc %{crate_instdir}/README.md +%{crate_instdir}/ + +%package -n %{name}+default-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+default-devel %{_description} + +This package contains library source intended for building other packages which +use the "default" feature of the "%{crate}" crate. + +%files -n %{name}+default-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+aom-sys-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+aom-sys-devel %{_description} + +This package contains library source intended for building other packages which +use the "aom-sys" feature of the "%{crate}" crate. + +%files -n %{name}+aom-sys-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+asm-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+asm-devel %{_description} + +This package contains library source intended for building other packages which +use the "asm" feature of the "%{crate}" crate. + +%files -n %{name}+asm-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+av-metrics-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+av-metrics-devel %{_description} + +This package contains library source intended for building other packages which +use the "av-metrics" feature of the "%{crate}" crate. + +%files -n %{name}+av-metrics-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+backtrace-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+backtrace-devel %{_description} + +This package contains library source intended for building other packages which +use the "backtrace" feature of the "%{crate}" crate. + +%files -n %{name}+backtrace-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+bench-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+bench-devel %{_description} + +This package contains library source intended for building other packages which +use the "bench" feature of the "%{crate}" crate. + +%files -n %{name}+bench-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+binaries-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+binaries-devel %{_description} + +This package contains library source intended for building other packages which +use the "binaries" feature of the "%{crate}" crate. + +%files -n %{name}+binaries-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+byteorder-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+byteorder-devel %{_description} + +This package contains library source intended for building other packages which +use the "byteorder" feature of the "%{crate}" crate. + +%files -n %{name}+byteorder-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+capi-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+capi-devel %{_description} + +This package contains library source intended for building other packages which +use the "capi" feature of the "%{crate}" crate. + +%files -n %{name}+capi-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+cc-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+cc-devel %{_description} + +This package contains library source intended for building other packages which +use the "cc" feature of the "%{crate}" crate. + +%files -n %{name}+cc-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+channel-api-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+channel-api-devel %{_description} + +This package contains library source intended for building other packages which +use the "channel-api" feature of the "%{crate}" crate. + +%files -n %{name}+channel-api-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+check_asm-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+check_asm-devel %{_description} + +This package contains library source intended for building other packages which +use the "check_asm" feature of the "%{crate}" crate. + +%files -n %{name}+check_asm-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+clap-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+clap-devel %{_description} + +This package contains library source intended for building other packages which +use the "clap" feature of the "%{crate}" crate. + +%files -n %{name}+clap-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+console-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+console-devel %{_description} + +This package contains library source intended for building other packages which +use the "console" feature of the "%{crate}" crate. + +%files -n %{name}+console-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+crossbeam-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+crossbeam-devel %{_description} + +This package contains library source intended for building other packages which +use the "crossbeam" feature of the "%{crate}" crate. + +%files -n %{name}+crossbeam-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+dav1d-sys-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+dav1d-sys-devel %{_description} + +This package contains library source intended for building other packages which +use the "dav1d-sys" feature of the "%{crate}" crate. + +%files -n %{name}+dav1d-sys-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+decode_test-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+decode_test-devel %{_description} + +This package contains library source intended for building other packages which +use the "decode_test" feature of the "%{crate}" crate. + +%files -n %{name}+decode_test-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+decode_test_dav1d-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+decode_test_dav1d-devel %{_description} + +This package contains library source intended for building other packages which +use the "decode_test_dav1d" feature of the "%{crate}" crate. + +%files -n %{name}+decode_test_dav1d-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+desync_finder-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+desync_finder-devel %{_description} + +This package contains library source intended for building other packages which +use the "desync_finder" feature of the "%{crate}" crate. + +%files -n %{name}+desync_finder-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+dump_ivf-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+dump_ivf-devel %{_description} + +This package contains library source intended for building other packages which +use the "dump_ivf" feature of the "%{crate}" crate. + +%files -n %{name}+dump_ivf-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+dump_lookahead_data-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+dump_lookahead_data-devel %{_description} + +This package contains library source intended for building other packages which +use the "dump_lookahead_data" feature of the "%{crate}" crate. + +%files -n %{name}+dump_lookahead_data-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+fern-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+fern-devel %{_description} + +This package contains library source intended for building other packages which +use the "fern" feature of the "%{crate}" crate. + +%files -n %{name}+fern-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+image-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+image-devel %{_description} + +This package contains library source intended for building other packages which +use the "image" feature of the "%{crate}" crate. + +%files -n %{name}+image-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+ivf-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+ivf-devel %{_description} + +This package contains library source intended for building other packages which +use the "ivf" feature of the "%{crate}" crate. + +%files -n %{name}+ivf-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+nasm-rs-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+nasm-rs-devel %{_description} + +This package contains library source intended for building other packages which +use the "nasm-rs" feature of the "%{crate}" crate. + +%files -n %{name}+nasm-rs-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+quick_test-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+quick_test-devel %{_description} + +This package contains library source intended for building other packages which +use the "quick_test" feature of the "%{crate}" crate. + +%files -n %{name}+quick_test-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+regex-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+regex-devel %{_description} + +This package contains library source intended for building other packages which +use the "regex" feature of the "%{crate}" crate. + +%files -n %{name}+regex-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+scan_fmt-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+scan_fmt-devel %{_description} + +This package contains library source intended for building other packages which +use the "scan_fmt" feature of the "%{crate}" crate. + +%files -n %{name}+scan_fmt-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+scenechange-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+scenechange-devel %{_description} + +This package contains library source intended for building other packages which +use the "scenechange" feature of the "%{crate}" crate. + +%files -n %{name}+scenechange-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+serde-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+serde-devel %{_description} + +This package contains library source intended for building other packages which +use the "serde" feature of the "%{crate}" crate. + +%files -n %{name}+serde-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+serialize-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+serialize-devel %{_description} + +This package contains library source intended for building other packages which +use the "serialize" feature of the "%{crate}" crate. + +%files -n %{name}+serialize-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+signal-hook-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+signal-hook-devel %{_description} + +This package contains library source intended for building other packages which +use the "signal-hook" feature of the "%{crate}" crate. + +%files -n %{name}+signal-hook-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+signal_support-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+signal_support-devel %{_description} + +This package contains library source intended for building other packages which +use the "signal_support" feature of the "%{crate}" crate. + +%files -n %{name}+signal_support-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+toml-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+toml-devel %{_description} + +This package contains library source intended for building other packages which +use the "toml" feature of the "%{crate}" crate. + +%files -n %{name}+toml-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+unstable-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+unstable-devel %{_description} + +This package contains library source intended for building other packages which +use the "unstable" feature of the "%{crate}" crate. + +%files -n %{name}+unstable-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+y4m-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+y4m-devel %{_description} + +This package contains library source intended for building other packages which +use the "y4m" feature of the "%{crate}" crate. + +%files -n %{name}+y4m-devel +%ghost %{crate_instdir}/Cargo.toml + +%prep +%autosetup -n %{crate}-%{version_no_tilde} -p1 +%cargo_prep + +%generate_buildrequires +# We need optional dependencies for cargo-c to build +%cargo_generate_buildrequires -a +echo "cargo-c" + +%build +%cargo_build +%__cargo cbuild --release \ + --destdir=%{buildroot} \ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --includedir=%{_includedir} \ + --pkgconfigdir=%{_libdir}/pkgconfig + +%install +%cargo_install +%__cargo cinstall --release \ + --destdir=%{buildroot} \ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --includedir=%{_includedir} \ + --pkgconfigdir=%{_libdir}/pkgconfig +rm -v %{buildroot}%{_libdir}/librav1e.a + +%if %{with check} +%check +%cargo_test +%endif + +%changelog +* Sun Feb 19 2023 Fabio Valentini - 0.5.1-8 +- Ensure default Rust compiler flags apply to the shared library build + +* Sun Feb 19 2023 Fabio Valentini - 0.5.1-7 +- Disambiguate code which is ambiguous with Rust 1.67+ + +* Sun Feb 19 2023 Fabio Valentini - 0.5.1-6 +- Backport upstream patch to fix UB / crash in test code + +* Mon Aug 08 2022 Fabio Valentini - 0.5.1-5 +- Remove unused dependencies; split off source-only Rust devel package + +* Sat Jul 23 2022 Fedora Release Engineering - 0.5.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jun 25 2022 Robert-André Mauchin - 0.5.1-3 +- Fix devel package name + +* Thu Jun 23 2022 Robert-André Mauchin - 0.5.1-2 +- Bump dav1d-sys dep + +* Sun Jun 19 2022 Robert-André Mauchin - 0.5.1-1 +- Update to 0.5.1 Close: rhbz#2032033 + +* Tue Feb 22 2022 Fabio Valentini - 0.5.0-6 +- Hack the workaround of the workaround + +* Tue Feb 22 2022 Fabio Valentini - 0.5.0-5 +- Work around codegen issues when compiling doctests with LLVM 13 + +* Mon Feb 21 2022 Fabio Valentini - 0.5.0-4 +- Bump system-deps from 3.1.2 to 6 + +* Tue Feb 15 2022 Zbigniew Jędrzejewski-Szmek - 0.5.0-3 +- Rebuild with package notes + +* Fri Jan 21 2022 Fedora Release Engineering - 0.5.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sun Nov 21 2021 Robert-André Mauchin - 0.5.0-1 +- Update to 0.5.0 Close: rhbz#1991588 + +* Sat Aug 07 2021 Fabio Valentini - 0.4.1-4 +- Rebuild with crossbeam-deque 0.8.1 / 0.7.4 for CVE-2021-32810 + +* Fri Jul 23 2021 Fedora Release Engineering - 0.4.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jul 10 12:15:47 CEST 2021 Robert-André Mauchin - 0.4.1-2 +- Add patch to fix https://github.com/xiph/rav1e/issues/2662 + +* Wed Apr 7 17:07:05 CEST 2021 Robert-André Mauchin - 0.4.1-1 +- Update to 0.4.1 +- Close: rhbz#1915864 + +* Mon Mar 29 16:18:27 CEST 2021 Robert-André Mauchin - 0.4.0-1 +- Update to 0.4.0 +- Close: rhbz#1915864 + +* Wed Jan 27 2021 Fedora Release Engineering - 0.4.0~alpha-0.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Dec 28 13:32:03 CET 2020 Igor Raits - 0.4.0~alpha-0.2 +- Rebuild + +* Wed Dec 09 15:17:53 CET 2020 Robert-André Mauchin - 0.4.0~alpha-0.1 +- Update to 0.4.0~alpha + +* Sun Dec 06 04:37:40 CET 2020 Robert-André Mauchin - 0.3.4-3 +- Rebuild with new cargo-c to fix pkgconfig includedir +- Fix: rhbz#1902211 + +* Tue Oct 20 2020 Fabio Valentini - 0.3.4-2 +- Temporarily skip some broken tests on aarch64. + +* Tue Oct 20 2020 Fabio Valentini - 0.3.4-1 +- Update to version 0.3.4. + +* Wed Aug 26 2020 Josh Stone - 0.3.3-3 +- Bump paste to 1.0 + +* Wed Jul 29 2020 Fedora Release Engineering - 0.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jun 11 2020 Josh Stone - 0.3.3-1 +- Update to 0.3.3 + +* Mon Mar 09 17:45:25 CET 2020 Robert-André Mauchin - 0.3.1-2 +- Fix pkgconfig prefix path + +* Thu Feb 20 21:15:47 CET 2020 Igor Raits - 0.3.1-1 +- Update to 0.3.1 + +* Tue Feb 11 01:28:07 CET 2020 Robert-André Mauchin - 0.3.0-1 +- Initial package +