1 #define PERL_NO_GET_CONTEXT
8 /* op_free is both Perl_op_free and a function in opusfile */
10 #include <opus/opusfile.h>
12 #include "const-c.inc"
14 typedef OggOpusFile* Audio__Opusfile;
15 typedef const OpusHead* Audio__Opusfile__Head;
16 typedef const OpusTags* Audio__Opusfile__Tags;
17 typedef const OpusPictureTag* Audio__Opusfile__PictureTag;
19 MODULE = Audio::Opusfile PACKAGE = Audio::Opusfile PREFIX = op_
33 croak("op_open_file returned error %d\n", err);
36 op_open_memory(const char *data, size_t length(data))
40 data, XSauto_length_of_data, &err
43 croak("op_open_memory returned error %d\n", err);
46 op_test(const char *data, size_t length(data))
51 ret = op_test (NULL, data, XSauto_length_of_data);
52 if(ret < 0 && ret != OP_ENOTFORMAT && ret != OP_EBADHEADER)
53 croak("op_test returned error %d\n", RETVAL);
74 op_serialno(of, li = -1)
78 # op_channel_count is not exported; it can be obtained via op_head
81 op_raw_total(of, li = -1)
86 op_pcm_total(of, li = -1)
100 # op_current_link not exported until we export the decoding API
103 op_bitrate(of, li = -1)
107 # op_bitrate_instant, op_raw_tell, op_pcm_tell not exported until we
108 # export the decoding API
110 MODULE = Audio::Opusfile PACKAGE = Audio::Opusfile::Tags PREFIX = opus_tags_
113 opus_tags_query_count(tags, tag)
114 Audio::Opusfile::Tags tags;
118 opus_tags_query(tags, tag, count = 0)
119 Audio::Opusfile::Tags tags;
123 MODULE = Audio::Opusfile PACKAGE = Audio::Opusfile::PictureTag PREFIX = opus_picture_tag_
125 Audio::Opusfile::PictureTag
126 opus_picture_tag_parse(tag)
132 Newx(pic, 1, OpusPictureTag);
133 if(err = opus_picture_tag_parse(pic, tag))
134 croak("opus_picture_tag_parse returned error %d\n", err);
141 Audio::Opusfile::PictureTag pic
147 Audio::Opusfile::PictureTag pic;
155 Audio::Opusfile::PictureTag pic;
157 RETVAL = pic->mime_type;
163 Audio::Opusfile::PictureTag pic;
165 RETVAL = pic->description;
171 Audio::Opusfile::PictureTag pic;
179 Audio::Opusfile::PictureTag pic;
181 RETVAL = pic->height;
187 Audio::Opusfile::PictureTag pic;
195 Audio::Opusfile::PictureTag pic;
197 RETVAL = pic->colors;
203 Audio::Opusfile::PictureTag pic;
205 RETVAL = pic->data_length;
211 Audio::Opusfile::PictureTag pic;
213 RETVAL = newSVpvn(pic->data, pic->data_length);
219 Audio::Opusfile::PictureTag pic;
221 RETVAL = pic->format;
225 MODULE = Audio::Opusfile PACKAGE = Audio::Opusfile::Head
229 Audio::Opusfile::Head head;
231 RETVAL = head->version;
237 Audio::Opusfile::Head head;
239 RETVAL = head->channel_count;
245 Audio::Opusfile::Head head;
247 RETVAL = head->pre_skip;
252 input_sample_rate(head)
253 Audio::Opusfile::Head head;
255 RETVAL = head->input_sample_rate;
261 Audio::Opusfile::Head head;
263 RETVAL = head->output_gain;
269 Audio::Opusfile::Head head;
271 RETVAL = head->mapping_family;
277 Audio::Opusfile::Head head;
279 RETVAL = head->stream_count;
285 Audio::Opusfile::Head head;
287 RETVAL = head->coupled_count;
293 Audio::Opusfile::Head head;
296 if(k >= OPUS_CHANNEL_COUNT_MAX)
297 croak("k must be less than %d\n", (int)OPUS_CHANNEL_COUNT_MAX);
298 RETVAL = (int) head->mapping[k];