NAME

Audio::Opusfile::PictureTag - A parsed METADATA_BLOCK_PICTURE tag

SYNOPSIS

use Audio::Opusfile;
my $of = Audio::Opusfile->new_from_file('file.opus');
my @pic_tags = $of->tags->query_all('METADATA_BLOCK_PICTURE');
my @pictures = map { Audio::Opusfile::PictureTag->parse($_) } @pic_tags;
my $pic = $pictures[0];
say $pic->type; # Prints "3", which means Cover (front)
say $pic->mime_type; # Prints "image/png"
say $pic->description;
say $pic->width;
say $pic->height;
say $pic->depth;
say $pic->colors;
say $pic->data_length; # The image size
my $data = $pic->data; # The contents of the image
say $pic->format; # One of the OP_PIC_* constants

DESCRIPTION

This module represents a METADATA_BLOCK_PICTURE tag. It has the following methods (descriptions taken from the libopusfile documentation):

Audio::Opusfile::PictureTag->new($tag)

Takes the contents of a METADATA_BLOCK_PICTURE tag (optionally prefixed by the string METADATA_BLOCK_PICTURE=) and returns a new Audio::Opusfile::PictureTag object.

$pic->type

The picture type according to the ID3v2 APIC frame

0.  Other
1.  32x32 pixels 'file icon' (PNG only)
2.  Other file icon
3.  Cover (front)
4.  Cover (back)
5.  Leaflet page
6.  Media (e.g. label side of CD)
7.  Lead artist/lead performer/soloist
8.  Artist/performer
9.  Conductor
10. Band/Orchestra
11. Composer
12. Lyricist/text writer
13. Recording Location
14. During recording
15. During performance
16. Movie/video screen capture
17. A bright colored fish
18. Illustration
19. Band/artist logotype
20. Publisher/Studio logotype

Others are reserved and should not be used. There may only be one each of picture type 1 and 2 in a file.

$pic->mime_type

The MIME type of the picture, in printable ASCII characters 0x20-0x7E.

The MIME type may also be "-->" to signify that the data part is a URL pointing to the picture instead of the picture data itself. In this case, a terminating NUL is appended to the URL string in data, but data_length is set to the length of the string excluding that terminating NUL.

$pic->description

The description of the picture, in UTF-8.

$pic->width

The width of the picture in pixels.

$pic->height

The height of the picture in pixels.

$pic->depth

The color depth of the picture in bits-per-pixel (not bits-per-channel).

$pic->colors

For indexed-color pictures (e.g., GIF), the number of colors used, or 0 for non-indexed pictures.

$pic->data_length

The length of the picture data in bytes. Equivalent to length ($pic->data).

$pic->data

The binary picture data.

$pic->format

The format of the picture data, if known. One of: OP_PIC_FORMAT_UNKNOWN, OP_PIC_FORMAT_URL, OP_PIC_FORMAT_JPEG, OP_PIC_FORMAT_PNG, or OP_PIC_FORMAT_GIF.

SEE ALSO

Audio::Opusfile, http://opus-codec.org/, http://opus-codec.org/docs/opusfile_api-0.7/index.html, https://www.opus-codec.org/docs/opusfile_api-0.7/structOpusPictureTag.html

AUTHOR

Marius Gavrilescu, <marius@ieval.ro>

COPYRIGHT AND LICENSE

Copyright (C) 2016-2017 by Marius Gavrilescu

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.0 or, at your option, any later version of Perl 5 you may have available.