Blender Git Commits

Blender Git "temp-vse-h264-proxy" branch commits.

March 16, 2021, 14:31 (GMT)
Merge fix from D10363
March 16, 2021, 14:01 (GMT)
Implement quality setting based on UI slider
March 16, 2021, 11:26 (GMT)
Improve proxy building performance

There are minimal changes to current code:
- Use h264 codec for output
- Specify number of threads for encoding to be same as system thread count
- Specify same nuber of threads for decoding. This may work only with some codecs(only h264 tested so far), but performance gain in encoding improves overall performance by big margin still. I have tested variety of codecs, and all were transcoded properly.

This is much simpler and straightforward patch than previous two, and this was in fact first thing I have tried to do in the beginning, but there was no improvement unless I have removed following lines:
```
rv->c->thread_count = BLI_system_thread_count();
rv->c->thread_type = FF_THREAD_SLICE;
```

I am not even sure how I found that these two lines were problematic.

Differential Revision: https://developer.blender.org/D10731
March 16, 2021, 11:25 (GMT)
VSE: Automatic proxy building

Add `Proxy Setup` enum to user preferences with 3 choices: Manual, For Added strips and Automatic.
With `For Added strips` Only build proxies when adding movie strips.
With `Automatic` setting, proxies are built when preview size changes as well.

TODO:
- Decide what to do when workspace has multiple previews with different preview sizes. See `seq_get_preview_size()`
- Solution may be to change current design to allow only one size or just build multiple sizes.

Additional possible improvements:
- Cancel running job if preview size is changed while building proxies
- Use proxy of different size while building proxies for new size. it would be best to do after some refactoring, so in separate patch.
ref T85469

Maniphest Tasks: T85469

Differential Revision: https://developer.blender.org/D10363
March 16, 2021, 11:22 (GMT)
VSE: Simplify proxy settings

- Remove Full Render size from VSE preview size. Use just 100% instead
- Add Use Proxies checkbox to control whether proxies are used globally
- Move preview size to top so it is most prominent
- Set default to 100% preview size and use proxies (could be separate patch as well)

Design task: T85469

{F9735445}

No change has been done to individual strip setting as users may need to turn proxies on/off individually.
I think it would be best if size selection will be managed when automatic proxy building is enabled. In that case proxy panel can be simplified a lot. This is probalby better to leave for separate patch

Reviewed By: sergey

Maniphest Tasks: T85469

Differential Revision: https://developer.blender.org/D10362
March 16, 2021, 11:21 (GMT)
Merge branch 'master' into temp-vse-h264-proxy
March 16, 2021, 11:20 (GMT)
Revert "[WIP] Use H264 codec for proxies"

This reverts commit 6813420d1eced11ed794fe992c205619ce3915d3.
March 16, 2021, 11:20 (GMT)
Revert "VSE: Simplify proxy settings"

This reverts commit e6acb20185092b4562e2cc1d9f2a1337c6a197a4.
March 16, 2021, 11:20 (GMT)
Revert "VSE: Automatic proxy building"

This reverts commit 74186a51d7a806780669b3c44093282e92bed285.
March 8, 2021, 12:08 (GMT)
VSE: Automatic proxy building

Add `Proxy Setup` enum to user preferences with 3 choices: Manual, For Added strips and Automatic.
With `For Added strips` Only build proxies when adding movie strips.
With `Automatic` setting, proxies are built when preview size changes as well.

TODO:
- Decide what to do when workspace has multiple previews with different preview sizes. See `seq_get_preview_size()`
- Solution may be to change current design to allow only one size or just build multiple sizes.

Additional possible improvements:
- Cancel running job if preview size is changed while building proxies
- Use proxy of different size while building proxies for new size. it would be best to do after some refactoring, so in separate patch.
ref T85469

Maniphest Tasks: T85469

Differential Revision: https://developer.blender.org/D10363
March 8, 2021, 11:47 (GMT)
VSE: Simplify proxy settings

- Remove Full Render size from VSE preview size. Use just 100% instead
- Add Use Proxies checkbox to control whether proxies are used globally
- Move preview size to top so it is most prominent
- Set default to 100% preview size and use proxies (could be separate patch as well)

Design task: T85469

{F9735445}

No change has been done to individual strip setting as users may need to turn proxies on/off individually.
I think it would be best if size selection will be managed when automatic proxy building is enabled. In that case proxy panel can be simplified a lot. This is probalby better to leave for separate patch

Maniphest Tasks: T85469

Differential Revision: https://developer.blender.org/D10362
March 8, 2021, 10:18 (GMT)
[WIP] Use H264 codec for proxies

Same patch as D10394, but using H264 codec with small GOP size (2 frames in this case).

Main reason to use H264 is smaller filesize, current patch produces about 3x smaller files.
Playback is also about 1.5x faster than MJPEG

Complexity of this patch is much higher though, because encoder must work in own threadpool and encode frames with own gop size.
This means that scaled frames from encoder must be allocated per packet, which leads to worse performance overall. Patch is still about 3x faster than original. Interesting thing is that there is no performance improvement when running transcoding in more than 4 threads.

Possible ways to improve performance are to reuse memory for packets and frames, which would require redesign, where threads would wait for data to be written.
Another possibly much cleaner method would be to decode portions of input into multiple streams and remux these into proxy file.
In both cases managing complexity would be fairly important as it can get out of hand quite quickly.

Maniphest Tasks: T85469

Differential Revision: https://developer.blender.org/D10630
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021