Skip to content

Commit

Permalink
Merge pull request #131 from AOMediaCodec/u/lbarnes/multilayer_examples
Browse files Browse the repository at this point in the history
Added progressive refinement example files
  • Loading branch information
leo-barnes authored May 17, 2021
2 parents 5382f57 + c0fac33 commit 4be01ec
Show file tree
Hide file tree
Showing 18 changed files with 282 additions and 0 deletions.
3 changes: 3 additions & 0 deletions testFiles/Apple/ReadMe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This folder contains files contributed by Apple. The associated license is contained in license.txt.

Each file has a corresponding .txt file explaining how it was created.
2 changes: 2 additions & 0 deletions testFiles/Apple/license.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Content is subject to CC-BY-SA-4.0 license, subject to Copyright © 2021 Apple Inc. All rights reserved.
https://creativecommons.org/licenses/by/4.0/legalcode
Binary file not shown.
35 changes: 35 additions & 0 deletions testFiles/Apple/multilayer_examples/animals_00_multilayer.avif.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

AV1 is encoded using libaom and the following settings:

rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0
aom_codec_control(codec, AOME_SET_NUMBER_SPATIAL_LAYERS, 2)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Layer 0:
flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 62)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_ONETWO, AOME_ONETWO })

Layer 1:
flags = AOM_EFLAG_NO_REF_LAST2 | AOM_EFLAG_NO_REF_LAST3 |
AOM_EFLAG_NO_REF_GF | AOM_EFLAG_NO_REF_ARF |
AOM_EFLAG_NO_REF_BWD | AOM_EFLAG_NO_REF_ARF2 |
AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
AOM_EFLAG_NO_UPD_ENTROPY;
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 3)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_NORMAL, AOME_NORMAL })

AV1 stream contains two operating points. Operating point 0 contains both layers, operating point 1 contains the base layer (layer 0).

Stream is embedded in a HEIF container as two items.
Item 1:
ispe = 1024x768
iloc points to layer 0 only

Item 2:
ispe = 2048x1535
iloc points to layer 0 and layer 1, separated in two extents
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

AV1 is encoded using libaom and the following settings:

rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0
aom_codec_control(codec, AOME_SET_NUMBER_SPATIAL_LAYERS, 2)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Layer 0:
flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 62)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_ONETWO, AOME_ONETWO })

Layer 1:
flags = AOM_EFLAG_NO_REF_LAST2 | AOM_EFLAG_NO_REF_LAST3 |
AOM_EFLAG_NO_REF_GF | AOM_EFLAG_NO_REF_ARF |
AOM_EFLAG_NO_REF_BWD | AOM_EFLAG_NO_REF_ARF2 |
AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
AOM_EFLAG_NO_UPD_ENTROPY;
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 3)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_NORMAL, AOME_NORMAL })

AV1 stream contains two operating points. Operating point 0 contains both layers, operating point 1 contains the base layer (layer 0).

Stream is embedded in a HEIF container as a single item, with no lsel or a1op used.
ispe = 2048x1536
iloc points to layer 0 and layer 1, separated in two extents
a1lx property is used to explicitly mark the sizes of the two layers.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

AV1 is encoded using libaom and the following settings:

rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0
aom_codec_control(codec, AOME_SET_NUMBER_SPATIAL_LAYERS, 2)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Layer 0:
flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 62)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_ONETWO, AOME_ONETWO })

Layer 1:
flags = AOM_EFLAG_NO_REF_LAST2 | AOM_EFLAG_NO_REF_LAST3 |
AOM_EFLAG_NO_REF_GF | AOM_EFLAG_NO_REF_ARF |
AOM_EFLAG_NO_REF_BWD | AOM_EFLAG_NO_REF_ARF2 |
AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
AOM_EFLAG_NO_UPD_ENTROPY;
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 3)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_NORMAL, AOME_NORMAL })

AV1 stream contains two operating points. Operating point 0 contains both layers, operating point 1 contains the base layer (layer 0).

Stream is embedded in a HEIF container as two items.
Item 1:
ispe = 2048x1536
a1op property selects operating point 0 (with layer defaulting to layer 1)
iloc points to layer 0 and layer 1, separated in two extents

Item 2:
ispe = 1024x768
a1op property selects operating point 1 (layer 0)
iloc points to layer 0 and layer 1, separated in two extents
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

AV1 is encoded using libaom and the following settings:

rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0
aom_codec_control(codec, AOME_SET_NUMBER_SPATIAL_LAYERS, 2)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Layer 0:
flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 62)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_ONETWO, AOME_ONETWO })

Layer 1:
flags = AOM_EFLAG_NO_REF_LAST2 | AOM_EFLAG_NO_REF_LAST3 |
AOM_EFLAG_NO_REF_GF | AOM_EFLAG_NO_REF_ARF |
AOM_EFLAG_NO_REF_BWD | AOM_EFLAG_NO_REF_ARF2 |
AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
AOM_EFLAG_NO_UPD_ENTROPY;
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 3)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_NORMAL, AOME_NORMAL })

AV1 stream contains two operating points. Operating point 0 contains both layers, operating point 1 contains the base layer (layer 0).

Stream is embedded in a HEIF container as three items.
Item 1:
ispe = 2048x1536
a1op property selects operating point 0, lsel selects layer 1
iloc points to layer 0 and layer 1, separated in two extents

Item 2:
ispe = 1024x768
a1op property selects operating point 0, lsel selects layer 0
iloc points to layer 0 and layer 1, separated in two extents

Item 3:
ispe = 1024x768
a1op property selects operating point 1, lsel selects layer 0
iloc points to layer 0 and layer 1, separated in two extents
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

Image is split into 4 tiles of size 1024x768, where each tile is encoded as follows:

AV1 is encoded using libaom and the following settings:
rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0
aom_codec_control(codec, AOME_SET_NUMBER_SPATIAL_LAYERS, 2)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Layer 0:
flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 62)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_ONETWO, AOME_ONETWO })

Layer 1:
flags = AOM_EFLAG_NO_REF_LAST2 | AOM_EFLAG_NO_REF_LAST3 |
AOM_EFLAG_NO_REF_GF | AOM_EFLAG_NO_REF_ARF |
AOM_EFLAG_NO_REF_BWD | AOM_EFLAG_NO_REF_ARF2 |
AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
AOM_EFLAG_NO_UPD_ENTROPY;
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 3)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_NORMAL, AOME_NORMAL })

AV1 streams contains two operating points. Operating point 0 contains both layers, operating point 1 contains the base layer (layer 0).

Stream is embedded in a HEIF container as follows:
item 1:
grid
ispe = 2048x1536
references to items 2-5
items 2-5:
ispe = 1024x1536
iloc points to layer 0 and layer 1, separated in two extents
a1lx property is used to explicitly mark the sizes of the two layers.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

Image is split into 4 tiles of size 1024x768, where each tile is encoded as follows:

AV1 is encoded using libaom and the following settings:
rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0
aom_codec_control(codec, AOME_SET_NUMBER_SPATIAL_LAYERS, 2)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Layer 0:
flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 62)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_ONETWO, AOME_ONETWO })

Layer 1:
flags = AOM_EFLAG_NO_REF_LAST2 | AOM_EFLAG_NO_REF_LAST3 |
AOM_EFLAG_NO_REF_GF | AOM_EFLAG_NO_REF_ARF |
AOM_EFLAG_NO_REF_BWD | AOM_EFLAG_NO_REF_ARF2 |
AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
AOM_EFLAG_NO_UPD_ENTROPY;
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 3)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_NORMAL, AOME_NORMAL })

AV1 streams contains two operating points. Operating point 0 contains both layers, operating point 1 contains the base layer (layer 0).

Stream is embedded in a HEIF container as follows:
item 1:
grid
ispe = 2048x1536
references to items 3-6
item 2:
grid
ispe = 1024x738
references to items 7-10
items 3-6:
ispe = 1024x1536
iloc points to layer 0 and layer 1, separated in two extents
lsel property selects layer 1
items 7-10:
ispe = 1024x1536
iloc points to layer 0 and layer 1, separated in two extents
lsel property selects layer 0
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

AV1 is encoded using libaom and the following settings:

rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0
aom_codec_control(codec, AOME_SET_NUMBER_SPATIAL_LAYERS, 2)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Layer 0:
flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 62)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_ONETWO, AOME_ONETWO })

Layer 1:
flags = AOM_EFLAG_NO_REF_LAST2 | AOM_EFLAG_NO_REF_LAST3 |
AOM_EFLAG_NO_REF_GF | AOM_EFLAG_NO_REF_ARF |
AOM_EFLAG_NO_REF_BWD | AOM_EFLAG_NO_REF_ARF2 |
AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
AOM_EFLAG_NO_UPD_ENTROPY;
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 3)
aom_codec_control(codec, AOME_SET_SCALEMODE, &{ AOME_NORMAL, AOME_NORMAL })

AV1 stream contains two operating points. Operating point 0 contains both layers, operating point 1 contains the base layer (layer 0).

Stream is embedded in a HEIF container as two items.
Item 1:
ispe = 2048x1536
lsel property selects layer 1
iloc points to layer 0 and layer 1, separated in two extents

Item 2:
ispe = 1024x768
lsel property selects layer 0
iloc points to layer 0 and layer 1, separated in two extents
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Input image is animals_00 from the Apple test set, rotated to upright (i.e. 180 degrees) and downscaled to 2048x1536 so encoding is faster.

AV1 is encoded using libaom and the following settings:
rc_end_usage = AOM_Q
g_error_resilient = 0
g_lag_in_frames = 0
save_as_annexb = 0

flags = AOM_EFLAG_FORCE_KF
aom_codec_control(codec, AOME_SET_CQ_LEVEL, 12)
aom_codec_control(codec, AV1E_SET_COLOR_RANGE, 1)

Stream is embedded in a HEIF container as a single item.

0 comments on commit 4be01ec

Please sign in to comment.