You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

73 lines
2.3 KiB

/*
* media_player.h - media player test common definitions
*
*/
/**********************************************************************
* Copyright (C) 2023 VideoLAN and its authors *
* *
* This program is free software; you can redistribute and/or modify *
* it under the terms of the GNU General Public License as published *
* by the Free Software Foundation; version 2 of the license, or (at *
* your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, you can get it from: *
* http://www.gnu.org/copyleft/gpl.html *
**********************************************************************/
#ifndef TEST_MEDIA_PLAYER_H
#define TEST_MEDIA_PLAYER_H
struct mp_event_ctx
{
vlc_sem_t sem_ev;
vlc_sem_t sem_done;
const struct libvlc_event_t *ev;
};
static inline void mp_event_ctx_init(struct mp_event_ctx *ctx)
{
vlc_sem_init(&ctx->sem_ev, 0);
vlc_sem_init(&ctx->sem_done, 0);
ctx->ev = NULL;
}
static inline const struct libvlc_event_t *mp_event_ctx_wait_event(struct mp_event_ctx *ctx)
{
vlc_sem_wait(&ctx->sem_ev);
assert(ctx->ev != NULL);
return ctx->ev;
}
static inline void mp_event_ctx_release(struct mp_event_ctx *ctx)
{
assert(ctx->ev != NULL);
ctx->ev = NULL;
vlc_sem_post(&ctx->sem_done);
}
static inline void mp_event_ctx_wait(struct mp_event_ctx *ctx)
{
mp_event_ctx_wait_event(ctx);
mp_event_ctx_release(ctx);
}
static inline void mp_event_ctx_on_event(const struct libvlc_event_t *event, void *data)
{
struct mp_event_ctx *ctx = data;
assert(ctx->ev == NULL);
ctx->ev = event;
vlc_sem_post(&ctx->sem_ev);
vlc_sem_wait(&ctx->sem_done);
assert(ctx->ev == NULL);
}
#endif /* TEST_MEDIA_PLAYER_H */