Skip to content

Conversation

@emilk
Copy link
Member

@emilk emilk commented Oct 8, 2024

What

This refactors the native decoder so that we can easily slot in a different native decoder (ffmpeg!).

The innermost trait is now SyncDecoder which gets pushed a chunk, and blocks while producing frames (or errors). Around that is an AsyncDecoder that runs the SyncDecoder on a background thread to produce a non-blocking interface.
Finally in re_renderer there is the NativeDecoder that wraps SyncDecoder and handles texture uploads.

There is a lot of code moved, but very little code actually changed. It's just another layer of abstraction introduced.

Checklist

  • I have read and agree to Contributor Guide and the Code of Conduct
  • I've included a screenshot or gif (if applicable)
  • I have tested the web demo (if applicable):
  • The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG
  • If applicable, add a new check to the release checklist!
  • If have noted any breaking changes to the log API in CHANGELOG.md and the migration guide

To run all checks from main, comment on the PR with @rerun-bot full-check.

@emilk emilk added 🚜 refactor Change the code, not the functionality exclude from changelog PRs with this won't show up in CHANGELOG.md feat-video anything video decoding, player, querying, data modelling of videos etc. labels Oct 8, 2024
@Wumpf Wumpf self-requested a review October 8, 2024 18:06
Copy link
Member

@Wumpf Wumpf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well threaded in 😁
We're starting to see a nice hierarchy of decoder wrangling logic. Let's hope we don't regret this and have to add holes through these nice abstractions, but so far I'm very optimistic on that!

impl NativeDecoder {
pub fn new(
debug_name: String,
sync_decoder: Box<dyn re_video::decode::SyncDecoder + Send>,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

found it odd at first that all NativeDecoders host a SyncDecoder internally. But from the looks of it this gonna hold up at least for a a few weeks 😁 this is what we're dealing with :)

@emilk emilk merged commit d90a697 into main Oct 8, 2024
@emilk emilk deleted the emilk/refactor-native-decoder branch October 8, 2024 19:00
emilk added a commit that referenced this pull request Nov 26, 2025
Changes in snapshot images should be pixel-alignment improvements thanks
to
* emilk/egui#7710


---

## egui changelog
### ⭐ Added
* Add `Plugin::on_widget_under_pointer` to support widget inspector
[#7652](emilk/egui#7652) by
[@juancampa](https://github.com/juancampa)
* Add `Response::total_drag_delta` and `PointerState::total_drag_delta`
[#7708](emilk/egui#7708) by
[@emilk](https://github.com/emilk)

### 🔧 Changed
* Improve accessibility and testability of `ComboBox`
[#7658](emilk/egui#7658) by
[@lucasmerlin](https://github.com/lucasmerlin)

### 🐛 Fixed
* Fix `profiling::scope` compile error when profiling using `tracing`
backend [#7646](emilk/egui#7646) by
[@PPakalns](https://github.com/PPakalns)
* Fix edge cases in "smart aiming" in sliders
[#7680](emilk/egui#7680) by
[@emilk](https://github.com/emilk)
* Hide scroll bars when dragging other things
[#7689](emilk/egui#7689) by
[@emilk](https://github.com/emilk)
* Prevent widgets sometimes appearing to move relative to each other
[#7710](emilk/egui#7710) by
[@emilk](https://github.com/emilk)
* Fix `ui.response().interact(Sense::click())` being flakey
[#7713](emilk/egui#7713) by
[@lucasmerlin](https://github.com/lucasmerlin)

## eframe changelog
* Fix jittering during window resize on MacOS for WGPU/Metal
[#7641](emilk/egui#7641) by
[@aspcartman](https://github.com/aspcartman)
* Make sure `native_pixels_per_point` is set during app creation
[#7683](emilk/egui#7683) by
[@emilk](https://github.com/emilk)

---------

Co-authored-by: Lucas Meurer <lucasmeurer96@gmail.com>
Co-authored-by: lucasmerlin <8009393+lucasmerlin@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

exclude from changelog PRs with this won't show up in CHANGELOG.md feat-video anything video decoding, player, querying, data modelling of videos etc. 🚜 refactor Change the code, not the functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants