10.1_demo/include/e_player_list.h

100 lines
2.3 KiB
C
Raw Normal View History

// e_player_list.h
#ifndef E_PLAYER_LIST_H
#define E_PLAYER_LIST_H
#include <stdint.h>
#include <stdbool.h>
#include <pthread.h>
#include "common/qua_sys_platform.h"
#include "system/qua_mm_system.h"
#include "player/qua_vppo_inf.h"
#include "player/qua_decoder_inf.h"
#include "player/qua_mm_player_common.h"
#include "../lvgl/lvgl.h"
#include "e_common.h"
#define MAX_PLAYLIST_ITEMS 50
typedef struct
{
int display_idx;
char display[14];
QUA_VOID *player;
e_player_area area; // 播放器位置
// 播放列表
// MediaItem media_list[MAX_PLAYLIST_ITEMS];
//MediaPath media_paths[MAX_PLAYLIST_ITEMS];
MediaPath **media_paths;
int media_count;
int current_index;
pthread_mutex_t playlist_mutex;
// 线程控制
pthread_t player_thread;
bool thread_running;
bool stop_requested;
bool first_play;// 是否是第一次播放(调用video_player_clear_playlist后)
// 同步播放新增字段
long long video_duration_ms; // 当前视频总时长(ms)
long long last_play_time_ms; // 视频上次播放时间(ms)
//long long actual_play_ms; // 实际播放耗时(ms)
// 新增条件变量和互斥锁
pthread_cond_t play_cond;
pthread_mutex_t play_mutex;
} VideoPlayer;
/**
*
*/
VideoPlayer *video_player_init(int display_idx);
//设置是否开启同步播放
void video_player_set_sync_play(bool sync);
/**
*
*/
void video_player_set_size(VideoPlayer *video_player, e_player_area area);
void video_player_set_hole(VideoPlayer *video_player);
/**
*
*/
void video_player_add_item(VideoPlayer *video_player, const MediaPath *local_path);
void video_player_clear_playlist(VideoPlayer *player);
/**
* video_player_add_mediaItem添加新元素时
*/
void video_player_set_double_buffer(VideoPlayer *video_player);
/**
*
*/
int video_player_play(VideoPlayer *player);
void video_player_next(VideoPlayer *player);
/**
*
*/
void video_player_close(VideoPlayer *video_player);
/**
*
*/
void video_player_destroy(VideoPlayer *video_player);
/*
*
*/
void video_check_play_state(VideoPlayer *player);
#endif // E_PLAYER_LIST_H