Giter VIP home page Giter VIP logo

tlrender's People

Contributors

darbyjohnston avatar ggarra13 avatar jhodges10 avatar jminor avatar luzpaz avatar nporcino-pixar avatar philstopford avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tlrender's Issues

Add a color picker

With similar features to DJV:

  • Customizable radius
  • Convert to different pixel types
  • Sample both "scene" and "display" colors

Add a high quality image scaling mode

We currently use OpenGL "GL_LINEAR" mode for image scaling which suffers from artifacts when making thumbnail images. It would be nice to have a high quality image scaling mode for thumbnails, maybe similar to the one in DJV 1.3.

Add support for versioning (replacing) of clips

A feature of mrViewer is that it allows changing versions of a clip (movie or sequence). This would be an addition to the FilesModel to allow replacing a file with another one (and the likely recreation of the underlying timeline).

The versioning (using a regex or other convention to match versions) can be done by the viewing application.

drawMesh and others should not modify glBlendFunc().

I was trying to erase the drawn shapes in an FBO and found out I could not as drawMesh() would reset my setting of:

    glBlendFunc( GL_ZERO, GL_ONE_MINUS_SRC_ALPHA );

to:

  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Add a grid overlay

Similar to DJV, with the ability to use the grid to identify individual pixels.

Add optional support for .webm movies ( libvpx library )

To do so, FFmpeg needs to be compiled with the --enable-libvpx option. This optonal BSD codec/format is very important as it is specifically designed to work at 8K. Most 8K movies use it.
Currently, albeit I added code to turn on the codec (trivial code change), tlRender reads the movies partially and then shows the frames black. Just like what happened with the TopGun clip I showed you once.

Add a histogram view

It would be nice to have a histogram tool similar to DJV. Are there other tools that would be helpful for inspection and QA?

Also related:
#29
#31
#34

Compiling libtiff with deflate support leads to undefined references

When libdeflate.a (or libdeflate.so) is found in one of the library dirs, compilation of the example programs fails with errors like:

tif_zip.c:(.text+0xfe): undefined reference to `libdeflate_free_decompressor'

The quick fix is to add:

-Dlibdeflate=OFF to the CMAKE_ARGS of BuildTIFF.cmake.

A better fix would be to include the deflate library in the linking phase, albeit I was unable to find where:

find_package(Deflate)

is found to see what library variable it sets.

expat dependency in OCIO

There's an expat dependency in OCIO. I think the super-build should be responsible for fetching that bit... Building on macOS yields this (after I hack in TLR_PLATFORM_MACOS):

ld: library not found for -lOCIO_expat-NOTFOUND

I think the issue is perhaps with OCIO? expat in theory is packaged as a system library...

set up load_paths for Mac build

The Mac build puts the dylibs in the install folder, and references them there. The Otio libs expect to be copied as siblings to the executable.

Most likely, all the install/lib/ dylibs including otio's should be referenced as @loader_path/.../lib/libfoo.dylib

This likely involves install_name_tool shenanigans at the end of the build. Currently, I'm working around it by manually copying the otio dylibs into the bin dir (the example then runs properly)

otool -L ./tlrplay-glfw | grep dylib
	/usr/lib/libexpat.1.dylib (compatibility version 7.0.0, current version 8.0.0)
	@loader_path/libopentimelineio.dylib (compatibility version 0.0.0, current version 0.0.0)
	@loader_path/libopentime.dylib (compatibility version 0.0.0, current version 0.0.0)
	/Users/nporcino/dev/tlRender/build/install/lib/libavdevice.58.dylib (compatibility version 58.0.0, current version 58.13.100)
	/Users/nporcino/dev/tlRender/build/install/lib/libavfilter.7.dylib (compatibility version 7.0.0, current version 7.110.100)
	/Users/nporcino/dev/tlRender/build/install/lib/libavformat.58.dylib (compatibility version 58.0.0, current version 58.76.100)
	/Users/nporcino/dev/tlRender/build/install/lib/libavcodec.58.dylib (compatibility version 58.0.0, current version 58.134.100)
	/Users/nporcino/dev/tlRender/build/install/lib/libswresample.3.dylib (compatibility version 3.0.0, current version 3.9.100)
	/Users/nporcino/dev/tlRender/build/install/lib/libswscale.5.dylib (compatibility version 5.0.0, current version 5.9.100)
	/Users/nporcino/dev/tlRender/build/install/lib/libavutil.56.dylib (compatibility version 56.0.0, current version 56.70.100)

Investigate using libsamplerate for audio conversion

Currently we rely on using FFmpeg for converting the audio in files to a format supported by the audio device. This seems to work fairly well, but since FFmpeg is a large dependency it might be nice to investigate alternative approaches like libsamplerate.

use prebaked OCIO LUTS as an option

ociobake allows offline creation of look up tables. https://opencolorio.readthedocs.io/en/latest/tutorials/baking_luts.html If tlRender allowed as an option that a precomputed LUT were passed in, the runtime dependency on OCIO could be removed, or made optional while still supporting OCIO color profiles. Another option would be to take tlRender's existing texture generating function and wrap it in a simple command line tool. The issue at hand is that the OCIO routines used by tlRender use glsl shaders from OCIO to do then work, which is a can of worms when the run time is not an OpenGL runtime.

Latest "main" regression with .otio files that don't start at the beginning and movies that have timecode in them.

The latest "main" branch has a regression in that .otio files don't show movie files properly, when the movie file has a timecode in it and the .otio file has a source_range that does not begin at the beginning of the movie file.

The latest "main" branch will show the movie file from the beginning of the movie, not from the source_range.

For reference, mrv2 v0.6.4 would display these type of files properly. mrv2 v0.7.1 no longer does.

Find a .zip file with a sample .otio and .mov file here:

https://mega.nz/file/zD4UkAgB#jauJY7hfP9bAqwR4IFIKlquutyMyTWs4WPbQsdj3wfE

Alllow for an option to turn off GL_BLEND.

When checking renders with alpha, it is often useful to switch from seeing them without compositing (with a black background) and with compositing (some other background like a gray one as I have in mrv2).

I thought that:
timeline::AlphaBlend::None

would do it, but it doesn't.

Change or add simpler cache settings

While the Read Behind / Read Ahead cache settings are easy to understand and work fine for movies. When dealing with image sequences, you want to maximize the memory (ie. set a specific value in GB and forget about it).

Linux playback with a cache of several seconds does not update sometimes

I am seeing an issue on Linux (Windows on the same machine is fine) where the cache has data, yet there's a stutter during playbacks. Looking into the code, the FLTK timeouts are being called properly, but the currentVideoObserver in TimelinePlayer.cpp is not getting called sometimes, skipping several frames even. The cache line shows the buffer is full, so that's not it. Maybe the thread reading code is blocking?
This is with a merged scene branch and with the SolLevante movie (other movies are fine).

4K movies take too long to start

Using play-glfw on a 4K mp4 movie takes tlRender about 4 seconds to start. With tlplay creating the thumbnails it is much worse and playback is not smooth at least until the thumbnails are created.

In comparison, mrViewer opens the 4K movie in 1 second or less.

Audio starts late

A commit made the audio start late. When the audio was added with the -a flag, all was still good.
I didn't do a bisect, but audio was fine at least up to:

b476f32

Is a time comparison sufficient here?

       _timelinePlayer->tick();
        const auto& frame = _timelinePlayer->observeFrame()->get();
        if (frame != _frame)
        {
            _frame = frame;
            _renderDirty = true;
        }

Efficiency question... It's sufficient just to compare frame.time, isn't it? the frame comparison also compares layers. Even if layers changed mid frame, we've already rendered for the time, in other words if time didn't change and layers did, I don't think it's necessary to trap it.

Sound issues on first clip of a new .otio file (with the new schema).

I created an .otio file from mrv2's Playlist and albeit it loads and reports no errors, the first clip plays without audio. Jumping to the second clip makes audio play. This happens on mrv2 (all platforms) and tlplay (tested Linux only), and only with some movie files (one's with timecode different than 0?).

You can download the two movies and the .otio file from here:

https://mega.nz/file/SSIg3KBI#vQwCgpggxriqbqx7UvXWMHRJygEoUB_bV2FjnWW_FGg

It seems either something is broken on the new otio scheme or in tlRender's handling of it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.