You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adding some ffmpeg OCIO docs, along with Conan build instructions. (#116)
* Adding ffmpeg-8.1 build, including OCIO.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Fixing the tests, so that they pass, to make it easier to identify when things change.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Formatting updates
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Minor bug-fixes and cleanup.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* First version of conan build, especially for windows.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Conan WIP.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Conan update, got a build on windows, still not with ocio.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Got the windows and osx build working for conan.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Fixed table.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Conan updated docs.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Adding container using aswf container.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* osx and windows build.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Patch 8.1 to include the fix for ocio, that didnt actually make it in there.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Adding the linux bunlding code, and adding the ocio patch.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Documentation update.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Revising the linux bundling.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Updated conan build for rhel9.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Fixes to build ffmpeg-8.1 docker container.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Here are some commands for a docker image made using conan.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Enabling aom libx265 and zscale, along with making static builds.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Enabling x265 and aom and zimg everywhere.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Make sure that libvmaf can be built statically.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Fix to get it to find the libvmaf static lib.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Need C++ too.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Currently disabling x265, AOM and zimg
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Replacing -vframes with -frames:v since -vframes is being retired.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Updating the build ffmpeg docs.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Bump to ffmpeg-8.1
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Bump example to 10-bit.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Making FFmpeg and MacOS labeling more consistent.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Lots of minor corrections.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* More fixes.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Use names not number.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* nav_order.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Docs update.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Static build.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Image cleanup.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Refined the conan build instructions.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Adding an extreme example.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
* Adding notes on quantization.
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
---------
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
Copy file name to clipboardExpand all lines: ColorPreservation.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,16 @@
1
1
---
2
2
layout: default
3
-
title: RGB to YCrCb Conversion
3
+
title: RGB to YCbCr Conversion
4
4
nav_order: 3
5
5
parent: Encoding Overview
6
6
7
7
---
8
8
9
9
10
10
11
-
# RGB to YCrCb Conversion <aname="yuv"></a>
11
+
# RGB to YCbCr Conversion <aname="yuv"></a>
12
12
13
-
We would like ffmpeg to do as little as possible in terms of color space conversion. i.e. what comes in, goes out. The problem is that most of the codecs prefer to convert from RGB to YUV conversion (technically YCrCb). Do be aware that a number of codecs do support native RGB encoding (including h264, hevc, vp9, av1), but they are not typically supported in web browsers.
13
+
We would like ffmpeg to do as little as possible in terms of color space conversion. i.e. what comes in, goes out. The problem is that most of the codecs prefer to convert from RGB to YUV conversion (technically YCbCr). Do be aware that a number of codecs do support native RGB encoding (including h264, hevc, vp9, av1), but they are not typically supported in web browsers.
14
14
15
15
The main problem is that ffmpeg by default assumes that any unknown still image format has a color space of [rec601](https://en.wikipedia.org/wiki/Rec._601) which is very unlikely to be the color space your source media was generate in. So unless you tell it otherwise it will attempt to convert from that colorspace producing a color shift.
[zscale](https://github.com/sekrit-twc/zimg) is an alternative to libswscale, which does produce pretty good results for image resizing, but purely for RGB to YCrCb conversion libswscale appears very slightly better. It is required to be explicitly compiled into ffmpeg.
101
+
[zscale](https://github.com/sekrit-twc/zimg) is an alternative to libswscale, which does produce pretty good results for image resizing, but purely for RGB to YCbCr conversion libswscale appears very slightly better. It is required to be explicitly compiled into ffmpeg.
102
102
103
103
More detailed docs are: [here](http://underpop.online.fr/f/ffmpeg/help/zscale.htm.gz)
Note, there are a lot of other flags often used with the swscale filter (such as -sws_flags spline+full_chroma_int+accurate_rnd ) which really have minimal impact in the RGB to YCrCb conversion, if you are not resizing the image. For more details on this see [SWS Flags](EncodeSwsScale.html) section.
160
+
Note, there are a lot of other flags often used with the swscale filter (such as -sws_flags spline+full_chroma_int+accurate_rnd ) which really have minimal impact in the RGB to YCbCr conversion, if you are not resizing the image. For more details on this see [SWS Flags](EncodeSwsScale.html) section.
Copy file name to clipboardExpand all lines: EditorialWorkflow.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
2
layout: default
3
3
title: Adding Timecode and Editorial Workflow
4
-
nav_order: 5
4
+
nav_order: 5.1
5
5
parent: Encoding Overview
6
6
---
7
7
@@ -169,7 +169,7 @@ Part of the decision is whether you want a single file to also contain the audio
169
169
If an AVID imports a media file with no timecode, it will default to 01:00:00:00.
170
170
For this reason it can be desirable to do one of the above approaches, but do work with editorial to confirm what they would like.
171
171
172
-
[OpAtom](EncodeDNXHD.html#op-atom-mxf) files do not get directly imported into the AVID, instead you copy them directly into the /Users/Shared/AvidMediaComposer/Avid MediaFiles/MXF/{NUMBER} folder (e.g. /Users/Shared/AvidMediaComposer/Avid MediaFiles/MXF/2) on OSX or C:\Avid MediaFiles\MXF\{NUMBER} on windows. You can make a higher number, but Media Composer will also scan existing folders. Media composer will scan for new files and create (or update) a msmMMOB.mdb file, which is a database of the MOB ID's of the files. This can then be dragged into a Avid Bin to import the new files.
172
+
[OpAtom](EncodeDNXHD.html#op-atom-mxf) files do not get directly imported into the AVID, instead you copy them directly into the /Users/Shared/AvidMediaComposer/Avid MediaFiles/MXF/{NUMBER} folder (e.g. /Users/Shared/AvidMediaComposer/Avid MediaFiles/MXF/2) on MacOS or C:\Avid MediaFiles\MXF\{NUMBER} on windows. You can make a higher number, but Media Composer will also scan existing folders. Media composer will scan for new files and create (or update) a msmMMOB.mdb file, which is a database of the MOB ID's of the files. This can then be dragged into a Avid Bin to import the new files.
173
173
174
174
NOTE, there is also an associated folder called UME - /Users/Shared/AvidMediaComposer/Avid MediaFiles/UME/{NUMBER} that can take [Op1a](EncodeDNXHD.html#op1a-mxf) files. However, with recent testing (version 2023.8.2.58057.0), the metadata does not reliably get imported.
|**-crf 18**| This is the constant rate factor, controlling the default quality in the range 0-63. By default this is set to 50, which is a little on the low side, using values closer to 18 is recommended, but this does come at the expense of file-size. For more on this see the [CRF comparison](#crf-comparison-for-libsvtav1) below. |
66
+
|**-crf 18**| This is the constant rate factor, controlling the default quality in the range 0-63. By default this is set to 50, which is a little on the low quality side, using values closer to 18 is recommended, but this does come at the expense of file-size. For more on this see the [CRF comparison](#crf-comparison-for-libsvtav1) below. |
67
67
|**-preset 5**| Help with a trade-off between encoding speed and compression efficiency. Supported preset range in the 0-13. See below for comparisons |
68
68
69
69
See also:
@@ -124,7 +124,7 @@ Libaom has an aggressive denoiser, which can be pretty good for animated media,
124
124
125
125
### cpu-speed Comparison for libaom-av1
126
126
127
-
To help pick appropriate values with the cpu-speed flag, we have run the [Test Framework](enctests/README.html) through one of the test media. You can see that values are
127
+
To help pick appropriate values with the cpu-speed flag, we have run the [Test Framework](enctests/README.html) through one of the test media. You can see those values below.
| This is showing cpu-speed values against encoding time. You can see that values of 1 and 2 are more than 15 minutes, where most other encoders are closer to the 30 second range. | Same graph of cpu-speed value against encoding time a 0-500 scale. This is showing cpu-used 5 is now just twice as slow, as Libsvtav1, but at 422 vs. 420 |
@@ -146,4 +146,4 @@ See Also - note these are all guides for AOMENC (the AOM encoder that is part of
There is no CRF flag, so you use the -gp flag, the recommended starting point is about 100. However, we have been unable to get an substantial speed improvement over AOM.
149
+
There is no CRF flag, so you use the -qp flag, the recommended starting point is about 100. However, we have been unable to get an substantial speed improvement over AOM.
Without the jph:qstep flag, lossless mode is used, which is typically quite a bit smaller than many other compression schemes, but not typically small enough for reviews.
@@ -94,7 +94,7 @@ Without the jph:qstep flag, lossless mode is used, which is typically quite a bi
94
94
|*–attrib jph:block_size 64,64*| The older JPEG2000 standard used to default to 32,32 but this does seem to result in a smaller file, this is the default for OIIO. |
95
95
|*–attrib jph:prog_order RPCL*| (see [below](#progression-order)). |
96
96
97
-
While JPEG2000 can support YCrCb this openimageio implementation assumes that we are only generating RGB results.
97
+
While JPEG2000 can support YCbCr this openimageio implementation assumes that we are only generating RGB results.
98
98
99
99
### HTJ2K Wrapping J2C files in container
100
100
@@ -144,14 +144,14 @@ The progression order (typically a prog_order flag in openjph, or jph:prog_order
144
144
| Flag | Meaning | When to use it |
145
145
| :---- | :---- | :---- |
146
146
| LRCP | Layer -\> Resolution -\> Component -\> Position | Good for progressive quality over full image, particularly useful if you have multiple layers (not currently supported by OIIO). |
147
-
| RLCP | Resolution -\> Layer -\> Component -\> Position | Prioritizes lower resolutions first, allows you to load all of the layers at a lower resolution and then |
147
+
| RLCP | Resolution -\> Layer -\> Component -\> Position | Prioritizes lower resolutions first, allows you to load all of the layers at a lower resolution and then load in the higher resolutions|
148
148
| RPCL | Resolution -\> Position -\> Component -\> Layer | Optimized for random access and tiling. |
149
149
| PCRL | Position -\> Component -\> Resolution -\> Layer | Less common, spatial prioritisation, good for large images where you are viewing zoomed in sections of it. |
150
150
| CPRL | Component -\> Position -\> Resolution -\> Layer | Used when components are needed separately, e.g. YUV where you might just want Y first, rarely used in VFX. |
151
151
152
152
Of these settings picking either RPCL or LRCP are the two most common progression orders. OIIO does not currently support layers, so really LRCP and RLCP are very similar.
153
153
154
-
For many cases position can be ignored, unless you start generating particularly large images where you are only interested in part of that large picture. For example having a 360-video where you are only viewing part of the overall picture. This may be where you would also want to tweak the precincts parameters of the codec. This is definately an area that JPEG2000 comes into its own, since
154
+
For many cases position can be ignored, unless you start generating particularly large images where you are only interested in part of that large picture. For example having a 360-video where you are only viewing part of the overall picture. This may be where you would also want to tweak the precincts parameters of the codec. This is definitely an area where JPEG 2000 shines, as its wavelet-based architecture allows for efficient resolution scalability and partial decoding, which is ideal for massive image datasets.
Copy file name to clipboardExpand all lines: EncodeHevc.md
+16-7Lines changed: 16 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,21 @@
1
1
---
2
2
layout: default
3
-
nav_order: 4.5
3
+
nav_order: 4.2
4
4
title: HEVC/H.265 Encoding
5
5
parent: Codec Comparisons
6
6
---
7
7
8
8
# HEVC/H.265 Encoding
9
9
10
+
<detailsopenmarkdown="block">
11
+
<summary>
12
+
Table of contents
13
+
</summary>
14
+
{: .text-delta }
15
+
1. TOC
16
+
{:toc}
17
+
</details>
18
+
10
19
H.265 (High Efficiency Video Compression - HEVC) is one of the replacements for H.264. It allows for a reduction of file size compared to H.264 of 25-50% and supports frame formats up to 8K (UHDTV). It also has support for HDR, which we go into more [here](enctests/HDR_Encoding.html).
11
20
12
21
There is Browser support for H265 on Microsoft Edge, Google Chrome and Safari, but not Firefox.
@@ -16,7 +25,7 @@ See [ffmpeg h265 docs](https://trac.ffmpeg.org/wiki/Encode/H.265)
16
25
There are four HEVC encoders available to ffmpeg:
17
26
18
27
*[libx265](#libx265)
19
-
*[hevc_videotoolbox](#hevc_videotoolbox) - Available on OSX via the videotoolbox library.
28
+
*[hevc_videotoolbox](#hevc_videotoolbox) - Available on MacOS via the videotoolbox library.
0 commit comments