MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / main

Function main

tests/api/api-threadmessage-test.c:165–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

163}
164
165int main(int ac, char **av)
166{
167 int i, ret = 0;
168 int max_queue_size;
169 int nb_senders, sender_min_load, sender_max_load;
170 int nb_receivers, receiver_min_load, receiver_max_load;
171 struct sender_data *senders;
172 struct receiver_data *receivers;
173 AVThreadMessageQueue *queue = NULL;
174
175 if (ac != 8) {
176 av_log(NULL, AV_LOG_ERROR, "%s <max_queue_size> "
177 "<nb_senders> <sender_min_send> <sender_max_send> "
178 "<nb_receivers> <receiver_min_recv> <receiver_max_recv>\n", av[0]);
179 return 1;
180 }
181
182 max_queue_size = atoi(av[1]);
183 nb_senders = atoi(av[2]);
184 sender_min_load = atoi(av[3]);
185 sender_max_load = atoi(av[4]);
186 nb_receivers = atoi(av[5]);
187 receiver_min_load = atoi(av[6]);
188 receiver_max_load = atoi(av[7]);
189
190 if (max_queue_size <= 0 ||
191 nb_senders <= 0 || sender_min_load <= 0 || sender_max_load <= 0 ||
192 nb_receivers <= 0 || receiver_min_load <= 0 || receiver_max_load <= 0) {
193 av_log(NULL, AV_LOG_ERROR, "negative values not allowed\n");
194 return 1;
195 }
196
197 av_log(NULL, AV_LOG_INFO, "qsize:%d / %d senders sending [%d-%d] / "
198 "%d receivers receiving [%d-%d]\n", max_queue_size,
199 nb_senders, sender_min_load, sender_max_load,
200 nb_receivers, receiver_min_load, receiver_max_load);
201
202 senders = av_calloc(nb_senders, sizeof(*senders));
203 receivers = av_calloc(nb_receivers, sizeof(*receivers));
204 if (!senders || !receivers) {
205 ret = AVERROR(ENOMEM);
206 goto end;
207 }
208
209 ret = av_thread_message_queue_alloc(&queue, max_queue_size, sizeof(struct message));
210 if (ret < 0)
211 goto end;
212
213 av_thread_message_queue_set_free_func(queue, free_frame);
214
215#define SPAWN_THREADS(type) do { \
216 for (i = 0; i < nb_##type##s; i++) { \
217 struct type##_data *td = &type##s[i]; \
218 \
219 td->id = i; \
220 td->queue = queue; \
221 td->workload = get_workload(type##_min_load, type##_max_load); \
222 \

Callers

nothing calls this directly

Calls 6

av_logFunction · 0.85
av_callocFunction · 0.85
av_freepFunction · 0.85

Tested by

no test coverage detected