1 package Audio
::Opusfile
;
8 use parent qw
/Exporter/;
12 qw
/OPUS_CHANNEL_COUNT_MAX
31 OP_GET_SERVER_INFO_REQUEST
34 OP_HTTP_PROXY_HOST_REQUEST
35 OP_HTTP_PROXY_PASS_REQUEST
36 OP_HTTP_PROXY_PORT_REQUEST
37 OP_HTTP_PROXY_USER_REQUEST
43 OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST
46 our @EXPORT_OK = @constants;
47 our @EXPORT = @constants;
49 our $VERSION = '0.002001';
52 # This AUTOLOAD is used to 'autoload' constants from the constant()
57 ($constname = $AUTOLOAD) =~ s/.*:://;
58 croak
"&Audio::Opusfile::constant not defined" if $constname eq 'constant';
59 my ($error, $val) = constant
($constname);
60 if ($error) { croak
$error; }
63 # Fixed between 5.005_53 and 5.005_61
64 #XXX if ($] >= 5.00561) {
65 #XXX *$AUTOLOAD = sub () { $val };
68 *$AUTOLOAD = sub { $val };
75 XSLoader
::load
('Audio::Opusfile', $VERSION);
76 require Audio
::Opusfile
::Tags
;
77 require Audio
::Opusfile
::PictureTag
;
79 # Preloaded methods go here.
82 my ($class, $file) = @_;
87 my ($class, $buf) = @_;
98 Audio::Opusfile - Very incomplete interface to the libopusfile Ogg Opus library
103 my $of = Audio::Opusfile->new_from_file('silence.opus');
104 my $tags = $of->tags;
105 say $tags->query('TITLE'); # Cellule
109 Opus is a totally open, royalty-free, highly versatile audio codec.
110 Opus is unmatched for interactive speech and music transmission over
111 the Internet, but is also intended for storage and streaming
112 applications. It is standardized by the Internet Engineering Task
113 Force (IETF) as RFC 6716 which incorporated technology from Skype's
114 SILK codec and Xiph.Org's CELT codec.
116 libopusfile is a library for decoding and basic manipulation of Ogg
119 Audio::Opusfile is an interface to libopusfile. At the moment its only
120 function is reading metadata and tags from an Ogg Opus file. Future
121 versions will give access to a larger part of the libopusfile API.
123 Expect the API to change in future versions.
129 =item Audio::Opusfile->B<new_from_file>(I<$file>)
131 Creates a new Audio::Opusfile object from an Ogg Opus file.
133 Dies if the given file does not exist or is not a valid Ogg Opus file.
137 Returns an L<Audio::Opusfile::Head> object corresponding to the file.
141 Returns an L<Audio::Opusfile::Tags> object corresponding to the file.
147 All constants are exported by default:
149 OPUS_CHANNEL_COUNT_MAX
168 OP_GET_SERVER_INFO_REQUEST
171 OP_HTTP_PROXY_HOST_REQUEST
172 OP_HTTP_PROXY_PASS_REQUEST
173 OP_HTTP_PROXY_PORT_REQUEST
174 OP_HTTP_PROXY_USER_REQUEST
178 OP_PIC_FORMAT_UNKNOWN
180 OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST
186 L<Audio::Opusfile::Tags>,
187 L<http://opus-codec.org/>,
188 L<http://opus-codec.org/docs/opusfile_api-0.7/index.html>
192 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
194 =head1 COPYRIGHT AND LICENSE
196 Copyright (C) 2016 by Marius Gavrilescu
198 This library is free software; you can redistribute it and/or modify
199 it under the same terms as Perl itself, either Perl version 5.24.0 or,
200 at your option, any later version of Perl 5 you may have available.