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