Skip to content

Commit cdc1987

Browse files
author
Evgeniy Sidenko
committed
Version 25.9
- Added `ContentLightLevelInfo` box parsing; - Added access to more metadata (including ColourType, GroupsListBox, etc.); - Added `toString` summary method to image frame; - Improved parallel processing for enhanced stability; - Changed the way `Frames` property is calculated (altr group logic and no thumbnails); - Changed frame properties loading to support iOS18+ files; - Added box types used in iOS18+ files; - Performed memory optimizations; - API markdown fixes; - Minor spelling fixes.
1 parent 8bf5e72 commit cdc1987

41 files changed

Lines changed: 999 additions & 298 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,31 @@ Openize.HEIC has support for:
1616
* multiple images in a file;
1717
* alpha channels, depth maps, thumbnails, auxiliary images;
1818
* correct color transform according to embedded color profiles;
19-
* image transformations (crop, mirror, rotate), overlay images.
19+
* image transformations (crop, mirror, rotate), overlay images;
20+
* reading XML metadata.
2021

2122
Openize.HEIC doesn't support:
2223
* HDR images;
23-
* reading EXIF and XMP metadata;
24+
* reading EXIF metadata;
2425
* color transform according to EXIF contained color profiles;
2526
* HEIC coded animations that use P and B slices;
2627
* deblocking filter.
2728

29+
30+
## New features & enhancements in version 25.9.0:
31+
32+
- Added `ContentLightLevelInfo` box parsing;
33+
- Added access to more metadata (including ColourType, GroupsListBox, etc.);
34+
- Added `toString` summary method to image frame;
35+
- Improved parallel processing for enhanced stability;
36+
- Changed the way `Frames` property is calculated (altr group logic and no thumbnails);
37+
- Changed frame properties loading to support iOS18+ files;
38+
- Added box types used in iOS18+ files;
39+
- Performed memory optimizations;
40+
- API markdown fixes;
41+
- Minor spelling fixes.
42+
43+
2844
## Usage examples
2945

3046
### Read .heic file to int array with argb32 data
@@ -158,9 +174,12 @@ Name | Type | Description | Parameters | Notes
158174
#### Properties
159175
Name | Type | Description
160176
------------ | ------------- | -------------
177+
**Header** | **HeicHeader** | Heic image header. Grants convinient access to IsoBmff container meta data.
161178
**Frames** | **Map<Long, HeicImageFrame>** | Dictionary of public Heic image frames with access by identifier.
162179
**AllFrames** | **Map<Long, HeicImageFrame>** | Dictionary of all Heic image frames with access by identifier.
163180
**DefaultFrame** | **HeicImageFrame** | Returns the default image frame, which is specified in meta data.
181+
**Width** | **long** | Width of the default image frame in pixels.
182+
**Height** | **long** | Height of the default image frame in pixels.
164183

165184
### HeicImageFrame
166185

@@ -170,10 +189,12 @@ Name | Type | Description | Parameters
170189
**getByteArray** | **byte[]** | Get pixel data in the format of byte array. Each three or four bytes (the count depends on the pixel format) refer to one pixel left to right top to bottom line by line. In general, it equals to `dstArray`. | `PixelFormat pixelFormat` - Pixel format that defines the order of colors and the presence of alpha byte. `Rectangle boundsRectangle` - Bounds of the requested area.<br/>`byte[] dstArray` - Byte array for storing the pixel values. If it is `null` or its length is less than necessary the new array will be allocated and returned.
171190
**getInt32Array** | **int[]** | Get pixel data in the format of integer array. Each int value refers to one pixel left to right top to bottom line by line. In general, it equals to `dstArray`. | `PixelFormat pixelFormat` - Pixel format that defines the order of colors. `Rectangle boundsRectangle` - Bounds of the requested area.<br/>`int[] dstArray` - Integer array for storing the argb values. If it is `null` or its length is less than necessary the new array will be allocated and returned.
172191
**getTextData** | **String** | Get frame text data. Exists only for mime frame types. |
192+
**toString** | **String** | Returns a string representation of the object. |
173193

174194
### Properties
175195
Name | Type | Description
176196
------------ | ------------- | -------------
197+
**ID** | **long** | The unique identifier of the image frame.
177198
**ImageType** | **ImageFrameType** | Type of an image frame content.
178199
**Width** | **long** | Width of the image frame in pixels.
179200
**Height** | **long** | Height of the image frame in pixels.
2.21 MB
Binary file not shown.

docs/Openize.Heic.Decoder/AuxiliaryReferenceType.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,15 @@ Name | Value | Description | Notes
88
------------ | ------------- | ------------- | -------------
99
**Alpha** | - | Transparency layer. |
1010
**DepthMap** | - | Depth map layer. |
11-
**Hdr** | - | High dynamic range layer. |
11+
**HdrGainMap** | - | High dynamic range layer.<br />Defined as "urn:com:apple:photo:2020:aux:hdrgainmap". |
12+
**PortraitEffectsMatte** | - | Layer that represents the portrait effects matte of the image.<br />Defined as "urn:com:apple:photo:2018:aux:portraiteffectsmatte". |
13+
**SemanticHairMatte** | - | Layer that represents the semantic segmentation hair matte of the image.<br />Defined as "urn:com:apple:photo:2019:aux:semantichairmatte". |
14+
**SemanticSkinMatte** | - | Layer that represents the semantic segmentation skin matte of the image.<br />Defined as "urn:com:apple:photo:2019:aux:semanticskinmatte". |
15+
**SemanticTeethMatte** | - | Layer that represents the semantic segmentation teeth matte of the image.<br />Defined as "urn:com:apple:photo:2019:aux:semanticteethmatte". |
16+
**SemanticGlassesMatte** | - | Layer that represents the semantic segmentation glasses matte of the image.<br />Defined as "urn:com:apple:photo:2020:aux:semanticglassesmatte". |
17+
**SemanticSkyMatte** | - | Layer that represents the semantic segmentation sky matte of the image.<br />Defined as "urn:com:apple:photo:2020:aux:semanticskymatte". |
18+
**LinearThumbnail** | - | Defined as "tag:apple.com,2023:photo:aux:linearthumbnail". |
19+
**StyleDeltaMap** | - | Defined as "tag:apple.com,2023:photo:aux:styledeltamap". |
1220
**Undefined** | - | Undefined layer. |
1321

14-
[[Back to API_README]](API_README.md)
22+
[Back to API_README](./API_README.md)

docs/Openize.Heic.Decoder/BitStreamWithNalSupport.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ Name | Type | Description | Notes
1313

1414
Name | Type | Description | Parameters
1515
------------ | ------------- | ------------- | -------------
16-
**createNewImageContext** | **void** | Creates an image context object. | uint **imageId** - Image identificator.
17-
**deleteImageContext** | **void** | Deletes the image context object by id. | uint **imageId** - Image identificator.
18-
**turnOnNalUnitMode** | **void** | Turns on Nal Unit reader mode which ignores specified by standart byte sequences. |
16+
**createNewImageContext** | **void** | Creates an image context object. | long **imageId** - Image identifier.
17+
**deleteImageContext** | **void** | Deletes the image context object by id. | long **imageId** - Image identifier.
18+
**turnOnNalUnitMode** | **void** | Turns on Nal Unit reader mode which ignores specified by standard byte sequences. |
1919
**turnOffNulUnitMode** | **void** | Turns off Nal Unit reader mode. |
2020
**read** | **int** | Reads the specified number of bits from the stream. | int **bitCount** - The required number of bits to read.
2121
**readString** | **String** | Reads bytes as ASCII characters until '\0'. |

docs/Openize.Heic.Decoder/HeicHeader.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Heic image header class. Grants convinient access to IsoBmff container meta data
77
Name | Type | Description | Notes
88
------------ | ------------- | ------------- | -------------
99
**Meta** | **MetaBox** | Meta data IsoBmff box. |
10+
**DefaultFrameId** | **long** | The identifier of the default frame. |
1011

1112
## Constructors
1213

docs/Openize.Heic.Decoder/HeicImageFrame.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Contains hevc coded data or meta data.
77

88
Name | Type | Description | Notes
99
------------ | ------------- | ------------- | -------------
10+
**ID** | **long** | The unique identifier of the image frame. |
1011
**ImageType** | **ImageFrameType** | Type of an image frame content. |
1112
**Width** | **long** | Width of the image frame in pixels. |
1213
**Height** | **long** | Height of the image frame in pixels. |
@@ -26,12 +27,15 @@ Name | Type | Description | Parameters
2627
**getByteArray** | **byte[]** | Get pixel data in the format of byte array.<br />Each three or four bytes (the count depends on the pixel format) refer to one pixel left to right top to bottom line by line.<br />Returns null if frame does not contain image data. In general, it equals to ***dstArray***. | **PixelFormat **<br/>***pixelFormat*** - Pixel format that defines the order of colors and the presence of alpha byte.<br />**Rectangle**<br/>***boundsRectangle*** - Bounds of the requested area.<br/>**byte[]**<br/>***dstArray*** - Byte array for storing the pixel values. If it is `null` or its length is less than necessary the new array will be allocated and returned.
2728
**getInt32Array** | **int[]** | Get pixel data in the format of integer array.<br />Each int value refers to one pixel left to right top to bottom line by line.<br />Returns null if frame does not contain image data. In general, it equals to ***dstArray***. | **PixelFormat**<br/>***pixelFormat*** - Pixel format that defines the order of colors.<br />**Rectangle**<br/>***boundsRectangle*** - Bounds of the requested area.<br/>**int[]**<br/>***dstArray*** - Integer array for storing the argb values. If it is `null` or its length is less than necessary the new array will be allocated and returned.
2829
**getTextData** | **String** | Get frame text data.<br />Exists only for mime frame types. |
30+
**toString** | **String** | Returns a string representation of the object. | |
2931

3032
## Fields
3133

3234
Name | Type | Description | Notes
3335
------------ | ------------- | ------------- | -------------
3436
**hvcConfig** | **HEVCDecoderConfigurationRecord** | Hevc decoder configuration information from Isobmff container. |
35-
**rawPixels** | **int[][][]** | Raw YUV pixel data. <br />Multidimantional array: chroma or luma index, then two-dimentional array with x and y navigation. |
37+
**rawPixels** | **byte[][][]** | Raw YUV pixel data, used when bit depth is less or equal 8. <br />Multi-dimensional array: chroma or luma index, then two-dimensional array with x and y navigation. |
38+
**rawPixelsHighColorRange** | **int[][][]** | Raw YUV pixel data, used when bit depth is greater than 8. <br />Multi-dimensional array: chroma or luma index, then two-dimensional array with x and y navigation. |
39+
3640

3741
[[Back to API_README]](API_README.md)

docs/Openize.Heic.Decoder/ImageFrameType.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@ Name | Value | Description | Notes
1212
**grid** | 0x67726964 | Image Grid.<br />Reconstructing a grid of input images of the same width and height. |
1313
**Exif** | 0x45786966 | Exif metadata.<br />Exchangeable image file format metadata. |
1414
**mime** | 0x6d696d65 | MIME metadata.<br />Resource Description Framework metadata. |
15+
**tmap** | 0x746d6170 | Tone map.<br />HDR metadata. |
16+
**uri** | 0x75726920 | Uri. |
1517

1618
[[Back to API_README]](API_README.md)

docs/Openize.IsoBmff/API_README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- [openize.isobmff.Box](Box.md)
66
- [openize.isobmff.CleanApertureBox](CleanApertureBox.md)
77
- [openize.isobmff.ColourInformationBox](ColourInformationBox.md)
8+
- [Openize.IsoBmff.ContentLightLevelInfo](ContentLightLevelInfo.md)
89
- [openize.isobmff.DataEntryUrlBox](DataEntryUrlBox.md)
910
- [openize.isobmff.DataInformationBox](DataInformationBox.md)
1011
- [openize.isobmff.DataReferenceBox](DataReferenceBox.md)

docs/Openize.IsoBmff/AuxiliaryTypeProperty.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
AuxiliaryTypeProperty box includes a URN identifying the type of the auxiliary image.
44
AuxiliaryTypeProperty may additionally include other fields, as required by the URN.
55

6-
## Properties
6+
## Methods
77

88
Name | Type | Description | Notes
99
------------ | ------------- | ------------- | -------------
10-
**ToString** | **String** | Text summary of the box. |
10+
**toString** | **String** | Text summary of the box. |
1111

1212
## Fields
1313

docs/Openize.IsoBmff/ColourInformationBox.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
Contains colour information about the image.
44
If colour information is supplied in both this box, and also in the video bitstream, this box takes precedence, and over‐rides the information in the bitstream.
55

6+
## Properties
7+
8+
Name | Type | Description | Notes
9+
------------ | ------------- | ------------- | -------------
10+
**ColourType** | **String** | Color type code as a string. |
11+
612
## Methods
713

814
Name | Type | Description | Notes

0 commit comments

Comments
 (0)