Merge pull request #5039 from CEikermann/patch-1
[vuplus_xbmc] / xbmc / cdrip / DllVorbis.h
1 #pragma once
2
3 /*
4  *      Copyright (C) 2005-2013 Team XBMC
5  *      http://xbmc.org
6  *
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)
10  *  any later version.
11  *
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.
16  *
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/>.
20  *
21  */
22
23 #if (defined HAVE_CONFIG_H) && (!defined TARGET_WINDOWS)
24   #include "config.h"
25 #endif
26 #include <vorbis/vorbisenc.h>
27 #include "utils/log.h"
28 #include "DynamicDll.h"
29
30 class DllVorbisInterface
31 {
32 public:
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() {}
50 };
51
52 class DllVorbis : public DllDynamic, DllVorbisInterface
53 {
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)
88   END_METHOD_RESOLVE()
89 };