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)
27 #if defined(TARGET_WINDOWS)
28 #include "libmpeg2/mpeg2.h"
29 #include "libmpeg2/mpeg2convert.h"
31 #include <mpeg2dec/mpeg2.h>
32 #include <mpeg2dec/mpeg2convert.h>
35 #include "DynamicDll.h"
36 #include "utils/log.h"
38 class DllLibMpeg2Interface
41 virtual ~DllLibMpeg2Interface() {}
42 virtual uint32_t mpeg2_accel (uint32_t accel)=0;
43 virtual mpeg2dec_t * mpeg2_init (void)=0;
44 virtual const mpeg2_info_t * mpeg2_info (mpeg2dec_t * mpeg2dec)=0;
45 virtual void mpeg2_close (mpeg2dec_t * mpeg2dec)=0;
46 virtual void mpeg2_buffer (mpeg2dec_t * mpeg2dec, uint8_t * start, uint8_t * end)=0;
47 virtual void mpeg2_tag_picture (mpeg2dec_t * mpeg2dec, uint32_t tag, uint32_t tag2)=0;
48 virtual mpeg2_state_t mpeg2_parse (mpeg2dec_t * mpeg2dec)=0;
49 virtual void mpeg2_reset (mpeg2dec_t * mpeg2dec, int full_reset)=0;
50 virtual void mpeg2_set_buf (mpeg2dec_t * mpeg2dec, uint8_t * buf[3], void * id)=0;
51 virtual void mpeg2_custom_fbuf (mpeg2dec_t * mpeg2dec, int custom_fbuf)=0;
52 virtual int mpeg2_convert (mpeg2dec_t * mpeg2dec, mpeg2_convert_t convert, void * arg)=0;
53 virtual void mpeg2_skip(mpeg2dec_t * mpeg2dec, int skip)=0;
56 class DllLibMpeg2 : public DllDynamic, DllLibMpeg2Interface
58 DECLARE_DLL_WRAPPER(DllLibMpeg2, DLL_PATH_LIBMPEG2)
59 DEFINE_METHOD1(uint32_t, mpeg2_accel, (uint32_t p1))
60 DEFINE_METHOD0(mpeg2dec_t *, mpeg2_init)
61 DEFINE_METHOD1(const mpeg2_info_t *, mpeg2_info, (mpeg2dec_t * p1))
62 DEFINE_METHOD1(void, mpeg2_close, (mpeg2dec_t * p1))
63 DEFINE_METHOD3(void, mpeg2_buffer, (mpeg2dec_t * p1, uint8_t * p2, uint8_t * p3))
64 DEFINE_METHOD3(void, mpeg2_tag_picture, (mpeg2dec_t * p1, uint32_t p2, uint32_t p3))
65 DEFINE_METHOD1(mpeg2_state_t, mpeg2_parse, (mpeg2dec_t * p1))
66 DEFINE_METHOD2(void, mpeg2_reset, (mpeg2dec_t * p1, int p2))
67 DEFINE_METHOD3(void, mpeg2_set_buf, (mpeg2dec_t * p1, uint8_t * p2[3], void * p3))
68 DEFINE_METHOD2(void, mpeg2_custom_fbuf, (mpeg2dec_t * p1, int p2))
69 DEFINE_METHOD3(int, mpeg2_convert, (mpeg2dec_t * p1, mpeg2_convert_t p2, void * p3))
70 DEFINE_METHOD2(void,mpeg2_skip, (mpeg2dec_t * p1, int p2))
71 BEGIN_METHOD_RESOLVE()
72 RESOLVE_METHOD(mpeg2_accel)
73 RESOLVE_METHOD(mpeg2_init)
74 RESOLVE_METHOD(mpeg2_info)
75 RESOLVE_METHOD(mpeg2_close)
76 RESOLVE_METHOD(mpeg2_buffer)
77 RESOLVE_METHOD(mpeg2_tag_picture)
78 RESOLVE_METHOD(mpeg2_parse)
79 RESOLVE_METHOD(mpeg2_reset)
80 RESOLVE_METHOD(mpeg2_set_buf)
81 RESOLVE_METHOD(mpeg2_custom_fbuf)
82 RESOLVE_METHOD(mpeg2_convert)
83 RESOLVE_METHOD(mpeg2_skip)