1 /*
2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3 *
4 */
5
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <stdint.h>
9 #include <string.h>
10
11 #include "uvoice_os.h"
12 #include "uvoice_types.h"
13 #include "uvoice_player.h"
14 #include "uvoice_recorder.h"
15
16 #include "uvoice_config.h"
17 #include "uvoice_common.h"
18 #include "uvoice_play.h"
19 #include "uvoice_record.h"
20 #include "uvoice_stream.h"
21
22
media_loader_reset(media_loader_t * mloader)23 int media_loader_reset(media_loader_t *mloader)
24 {
25 if (!mloader) {
26 M_LOGE("mloader null !\n");
27 return -1;
28 }
29
30 if (mloader->reset && mloader->reset(mloader)) {
31 M_LOGE("reset loader failed !\n");
32 return -1;
33 }
34
35 return 0;
36 }
37
media_loader_create(media_type_t type,char * source)38 media_loader_t *media_loader_create(media_type_t type, char *source)
39 {
40 media_loader_t *mloader;
41
42 if (!source) {
43 M_LOGE("source null !\n");
44 return NULL;
45 }
46
47 mloader = snd_zalloc(sizeof(media_loader_t), AFM_EXTN);
48 if (!mloader) {
49 M_LOGE("alloc mloader failed !\n");
50 return NULL;
51 }
52
53 if (type == MEDIA_TYPE_HTTP) {
54 #ifdef UVOICE_HTTP_ENABLE
55 if (http_loader_create(mloader, source)) {
56 M_LOGE("init http loader failed !\n");
57 snd_free(mloader);
58 return NULL;
59 }
60 #else
61 M_LOGE("http load not enable !\n");
62 snd_free(mloader);
63 return NULL;
64 #endif
65 } else if (type == MEDIA_TYPE_FILE) {
66 #ifdef UVOICE_FILE_ENABLE
67 if (file_loader_create(mloader, source)) {
68 M_LOGE("init file loader failed !\n");
69 snd_free(mloader);
70 return NULL;
71 }
72 #else
73 M_LOGE("file load not enable !\n");
74 snd_free(mloader);
75 return NULL;
76 #endif
77 } else if (type == MEDIA_TYPE_FLASH) {
78 #ifdef UVOICE_PARTITION_ENABLE
79 if (partition_loader_create(mloader, source)) {
80 M_LOGE("init flash loader failed !\n");
81 snd_free(mloader);
82 return NULL;
83 }
84 #else
85 M_LOGE("flash load not enable !\n");
86 snd_free(mloader);
87 return NULL;
88 #endif
89 } else {
90 M_LOGE("type unsupport !\n");
91 snd_free(mloader);
92 return NULL;
93 }
94
95 mloader->type = type;
96 return mloader;
97 }
98
media_loader_release(media_loader_t * mloader)99 int media_loader_release(media_loader_t *mloader)
100 {
101 if (!mloader) {
102 M_LOGE("mloader null !\n");
103 return -1;
104 }
105
106 if (mloader->type == MEDIA_TYPE_HTTP) {
107 #ifdef UVOICE_HTTP_ENABLE
108 http_loader_release(mloader);
109 #endif
110 } else if (mloader->type == MEDIA_TYPE_FILE) {
111 #ifdef UVOICE_FILE_ENABLE
112 file_loader_release(mloader);
113 #endif
114 } else if (mloader->type == MEDIA_TYPE_FLASH) {
115 #ifdef UVOICE_PARTITION_ENABLE
116 partition_loader_release(mloader);
117 #endif
118 }
119
120 snd_free(mloader);
121 return 0;
122 }
123
media_packer_create(char * sink,media_type_t type)124 media_packer_t *media_packer_create(char *sink, media_type_t type)
125 {
126 media_packer_t *mpacker;
127
128 if (!sink) {
129 M_LOGE("sink null !\n");
130 return NULL;
131 }
132
133 mpacker = snd_zalloc(sizeof(media_packer_t), AFM_EXTN);
134 if (!mpacker) {
135 M_LOGE("alloc media packer failed !\n");
136 return NULL;
137 }
138
139 if (type == MEDIA_TYPE_FILE) {
140 #ifdef UVOICE_FILE_ENABLE
141 if (file_packer_create(mpacker, sink)) {
142 M_LOGE("init file packer failed !\n");
143 snd_free(mpacker);
144 return NULL;
145 }
146 #else
147 M_LOGE("file pack not enable !\n");
148 snd_free(mpacker);
149 return NULL;
150 #endif
151 } else if (type == MEDIA_TYPE_FLASH) {
152 #ifdef UVOICE_PARTITION_ENABLE
153 if (partition_packer_create(mpacker, sink)) {
154 M_LOGE("init flash packer failed !\n");
155 snd_free(mpacker);
156 return NULL;
157 }
158 #else
159 M_LOGE("flash pack not enable !\n");
160 snd_free(mpacker);
161 return NULL;
162 #endif
163 } else {
164 M_LOGE("type unsupport !\n");
165 snd_free(mpacker);
166 return NULL;
167 }
168
169 mpacker->type = type;
170 return mpacker;
171 }
172
media_packer_release(media_packer_t * mpacker)173 int media_packer_release(media_packer_t *mpacker)
174 {
175 if (!mpacker)
176 return -1;
177
178 if (mpacker->type == MEDIA_TYPE_FILE) {
179 #ifdef UVOICE_FILE_ENABLE
180 file_packer_release(mpacker);
181 #endif
182 } else if (mpacker->type == MEDIA_TYPE_FLASH) {
183 #ifdef UVOICE_PARTITION_ENABLE
184 partition_packer_release(mpacker);
185 #endif
186 }
187
188 snd_free(mpacker);
189 return 0;
190 }
191
192