summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h')
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h111
1 files changed, 0 insertions, 111 deletions
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h
deleted file mode 100644
index 0e64b11..0000000
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h
+++ /dev/null
@@ -1,111 +0,0 @@
1#pragma once
2/*
3 * Copyright (C) 2005-2013 Team XBMC
4 * http://xbmc.org
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 *
20 */
21
22#include <string>
23#include <vector>
24#include <string.h>
25#include <stdlib.h>
26#include <stdio.h>
27#include "xbmc_codec_types.h"
28#include "libXBMC_addon.h"
29
30#define CODEC_HELPER_DLL_NAME XBMC_DLL_NAME("codec")
31#define CODEC_HELPER_DLL XBMC_DLL("codec")
32
33class CHelper_libXBMC_codec
34{
35public:
36 CHelper_libXBMC_codec(void)
37 {
38 m_libXBMC_codec = NULL;
39 m_Handle = NULL;
40 }
41
42 ~CHelper_libXBMC_codec(void)
43 {
44 if (m_libXBMC_codec)
45 {
46 CODEC_unregister_me(m_Handle, m_Callbacks);
47 dlclose(m_libXBMC_codec);
48 }
49 }
50
51 /*!
52 * @brief Resolve all callback methods
53 * @param handle Pointer to the add-on
54 * @return True when all methods were resolved, false otherwise.
55 */
56 bool RegisterMe(void* handle)
57 {
58 m_Handle = handle;
59
60 std::string libBasePath;
61 libBasePath = ((cb_array*)m_Handle)->libPath;
62 libBasePath += CODEC_HELPER_DLL;
63
64 m_libXBMC_codec = dlopen(libBasePath.c_str(), RTLD_LAZY);
65 if (m_libXBMC_codec == NULL)
66 {
67 fprintf(stderr, "Unable to load %s\n", dlerror());
68 return false;
69 }
70
71 CODEC_register_me = (void* (*)(void *HANDLE))
72 dlsym(m_libXBMC_codec, "CODEC_register_me");
73 if (CODEC_register_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
74
75 CODEC_unregister_me = (void (*)(void* HANDLE, void* CB))
76 dlsym(m_libXBMC_codec, "CODEC_unregister_me");
77 if (CODEC_unregister_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
78
79 CODEC_get_codec_by_name = (xbmc_codec_t (*)(void* HANDLE, void* CB, const char* strCodecName))
80 dlsym(m_libXBMC_codec, "CODEC_get_codec_by_name");
81 if (CODEC_get_codec_by_name == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
82
83 m_Callbacks = CODEC_register_me(m_Handle);
84 return m_Callbacks != NULL;
85 }
86
87 /*!
88 * @brief Get the codec id used by XBMC
89 * @param strCodecName The name of the codec
90 * @return The codec_id, or a codec_id with 0 values when not supported
91 */
92 xbmc_codec_t GetCodecByName(const char* strCodecName)
93 {
94 return CODEC_get_codec_by_name(m_Handle, m_Callbacks, strCodecName);
95 }
96
97protected:
98 void* (*CODEC_register_me)(void*);
99 void (*CODEC_unregister_me)(void*, void*);
100 xbmc_codec_t (*CODEC_get_codec_by_name)(void *HANDLE, void* CB, const char* strCodecName);
101
102private:
103 void* m_libXBMC_codec;
104 void* m_Handle;
105 void* m_Callbacks;
106 struct cb_array
107 {
108 const char* libPath;
109 };
110};
111