Skip to content

Commit 4205f49

Browse files
committed
add heif_image_list_channels()
1 parent 48db76e commit 4205f49

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

libheif/api/libheif/heif.cc

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,6 +1430,32 @@ enum heif_channel_datatype heif_image_get_datatype(const struct heif_image* imag
14301430
}
14311431

14321432

1433+
int heif_image_list_channels(struct heif_image* image,
1434+
enum heif_channel** out_channels)
1435+
{
1436+
if (!image || !out_channels) {
1437+
return 0;
1438+
}
1439+
1440+
auto channels = image->image->get_channel_set();
1441+
1442+
*out_channels = new heif_channel[channels.size()];
1443+
heif_channel* p = *out_channels;
1444+
for (heif_channel c : channels) {
1445+
*p++ = c;
1446+
}
1447+
1448+
return channels.size();
1449+
}
1450+
1451+
1452+
void heif_channel_release_list(enum heif_channel** channels)
1453+
{
1454+
delete[] channels;
1455+
}
1456+
1457+
1458+
14331459
#define heif_image_get_channel_X(name, type, datatype, bits) \
14341460
const type* heif_image_get_channel_ ## name ## _readonly(const struct heif_image* image, \
14351461
enum heif_channel channel, \

libheif/api/libheif/heif.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,6 +1662,14 @@ uint8_t* heif_image_get_plane(struct heif_image*,
16621662
int* out_stride);
16631663

16641664

1665+
LIBHEIF_API
1666+
int heif_image_list_channels(struct heif_image*,
1667+
enum heif_channel** out_channels);
1668+
1669+
LIBHEIF_API
1670+
void heif_channel_release_list(enum heif_channel** channels);
1671+
1672+
16651673
struct heif_complex32 {
16661674
float real, imaginary;
16671675
};

0 commit comments

Comments
 (0)