4 * Copyright (C) 2005-2013 Team XBMC
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with XBMC; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
23 #if (defined HAVE_CONFIG_H) && (!defined TARGET_WINDOWS)
26 #include <vorbis/vorbisenc.h>
27 #include "utils/log.h"
28 #include "DynamicDll.h"
30 class DllVorbisInterface
33 virtual void vorbis_info_init(vorbis_info *vi)=0;
34 virtual int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op)=0;
35 virtual int vorbis_bitrate_addblock(vorbis_block *vb)=0;
36 virtual int vorbis_analysis_init(vorbis_dsp_state *v, vorbis_info *vi)=0;
37 virtual int vorbis_analysis(vorbis_block *vb, ogg_packet *op)=0;
38 virtual int vorbis_analysis_blockout(vorbis_dsp_state *v, vorbis_block *vb)=0;
39 virtual int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals)=0;
40 virtual float** vorbis_analysis_buffer(vorbis_dsp_state *v, int vals)=0;
41 virtual int vorbis_analysis_headerout(vorbis_dsp_state *v, vorbis_comment *vc, ogg_packet *op, ogg_packet *op_comm, ogg_packet *op_code)=0;
42 virtual int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb)=0;
43 virtual int vorbis_block_clear(vorbis_block *vb)=0;
44 virtual void vorbis_comment_add_tag(vorbis_comment *vc, char *tag, char *contents)=0;
45 virtual void vorbis_comment_init(vorbis_comment *vc)=0;
46 virtual void vorbis_info_clear(vorbis_info *vi)=0;
47 virtual void vorbis_comment_clear(vorbis_comment *vc)=0;
48 virtual void vorbis_dsp_clear(vorbis_dsp_state *v)=0;
49 virtual ~DllVorbisInterface() {}
52 class DllVorbis : public DllDynamic, DllVorbisInterface
54 DECLARE_DLL_WRAPPER(DllVorbis, DLL_PATH_VORBIS)
55 DEFINE_METHOD1(void, vorbis_info_init, (vorbis_info *p1))
56 DEFINE_METHOD2(int, vorbis_bitrate_flushpacket, (vorbis_dsp_state *p1, ogg_packet *p2))
57 DEFINE_METHOD1(int, vorbis_bitrate_addblock, (vorbis_block *p1))
58 DEFINE_METHOD2(int, vorbis_analysis_init, (vorbis_dsp_state *p1, vorbis_info *p2))
59 DEFINE_METHOD2(int, vorbis_analysis, (vorbis_block *p1, ogg_packet *p2))
60 DEFINE_METHOD2(int, vorbis_analysis_blockout, (vorbis_dsp_state *p1, vorbis_block *p2))
61 DEFINE_METHOD2(int, vorbis_analysis_wrote, (vorbis_dsp_state *p1, int p2))
62 DEFINE_METHOD2(float**, vorbis_analysis_buffer, (vorbis_dsp_state *p1, int p2))
63 DEFINE_METHOD5(int, vorbis_analysis_headerout, (vorbis_dsp_state *p1, vorbis_comment *p2, ogg_packet *p3, ogg_packet *p4, ogg_packet *p5))
64 DEFINE_METHOD2(int, vorbis_block_init, (vorbis_dsp_state *p1, vorbis_block *p2))
65 DEFINE_METHOD1(int, vorbis_block_clear, (vorbis_block *p1))
66 DEFINE_METHOD3(void, vorbis_comment_add_tag, (vorbis_comment *p1, char *p2, char *p3))
67 DEFINE_METHOD1(void, vorbis_comment_init, (vorbis_comment *p1))
68 DEFINE_METHOD1(void, vorbis_info_clear, (vorbis_info *p1))
69 DEFINE_METHOD1(void, vorbis_comment_clear, (vorbis_comment *p1))
70 DEFINE_METHOD1(void, vorbis_dsp_clear, (vorbis_dsp_state *p1))
71 BEGIN_METHOD_RESOLVE()
72 RESOLVE_METHOD(vorbis_info_init)
73 RESOLVE_METHOD(vorbis_bitrate_flushpacket)
74 RESOLVE_METHOD(vorbis_bitrate_addblock)
75 RESOLVE_METHOD(vorbis_analysis_init)
76 RESOLVE_METHOD(vorbis_analysis)
77 RESOLVE_METHOD(vorbis_analysis_blockout)
78 RESOLVE_METHOD(vorbis_analysis_wrote)
79 RESOLVE_METHOD(vorbis_analysis_buffer)
80 RESOLVE_METHOD(vorbis_analysis_headerout)
81 RESOLVE_METHOD(vorbis_block_init)
82 RESOLVE_METHOD(vorbis_block_clear)
83 RESOLVE_METHOD(vorbis_comment_add_tag)
84 RESOLVE_METHOD(vorbis_comment_init)
85 RESOLVE_METHOD(vorbis_info_clear)
86 RESOLVE_METHOD(vorbis_comment_clear)
87 RESOLVE_METHOD(vorbis_dsp_clear)