* apps/tests/testcases/media_test/media_graph/media_graph_buffer_start.c
*
* Name: media_graph_buffer_start
* Example description:
* 1. media_graph_buffer_start
*
****************************************************************************/
* Included Files
****************************************************************************/
#include "media_graph_test.h"
#include <media_api.h>
#include <nuttx/config.h>
#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>
* Public Functions
****************************************************************************/
int main(int argc, FAR char *argv[])
{
struct mediatest_data *media =
(struct mediatest_data *)malloc(sizeof(struct mediatest_data));
mediatest_setup(media);
mediatest_getopt(argc, argv, media);
mediatest_uv_player_enter();
struct mediatest_app *player_test;
int i = 0;
int streams_len = 1;
for (i = 0; media->stream_type[i] != '\0'; i++)
{
if (media->stream_type[i] == ',')
streams_len = streams_len + 1;
}
i = 0;
char *stream_types[streams_len];
struct mediatest_data *medias[streams_len];
char *token = strtok(media->stream_type, ",");
while (token != NULL)
{
stream_types[i++] = token;
token = strtok(NULL, ",");
}
for (i = 0; i < streams_len; i++)
{
medias[i] =
(struct mediatest_data *)malloc(sizeof(struct mediatest_data));
if (!medias[i])
{
syslog(LOG_ERR, "FAIL! malloc media %d fail.\n", i);
goto out;
}
RET_CHECK(mediatest_setup(medias[i]), "FAIL! malloc failed\n");
}
for (i = 0; i < streams_len; i++)
{
medias[i]->stream_type = stream_types[i];
medias[i]->type = media->type;
medias[i]->url = media->url;
for (int j = 0; j < media->rept; j++)
{
UV_EXECUTE(mediatest_common_open, medias[i]);
RET_CHECK(media->ret, "mediatest open failed\n");
if (media->ex == 1)
{
UV_EXECUTE(mediatest_common_prepare, medias[i]);
}
else if (media->ex == 2)
{
UV_EXECUTE(mediatest_common_prepare, medias[i]);
UV_EXECUTE(mediatest_common_start, medias[i]);
}
UV_EXECUTE(mediatest_app_exit, medias[i]);
RET_CHECK(media->ret, "mediatest close failed\n");
UV_WAIT(PLAYER_CLOSED, medias[i], "mediatest closecb failed\n");
}
}
syslog(LOG_INFO, "media uvplayer position PASSED!\n");
out:
for (i = 0; i < streams_len; i++)
{
if (medias[i]->handle != NULL)
{
media->stop_flag = true;
usleep(500 * 1000);
UV_EXECUTE(mediatest_app_stop, medias[i]);
UV_EXECUTE(mediatest_app_exit, medias[i]);
}
}
mediatest_uv_exit();
for (i = 0; i < streams_len; i++)
{
if (medias[i] != NULL)
{
free(medias[i]);
medias[i] = NULL;
}
}
free(media);
media = NULL;
return 0;
}