struct IjkMediaPlayer {
volatile int ref_count;
pthread_mutex_t mutex;
FFPlayer *ffplayer;
int (*msg_loop)(void*);
SDL_Thread *msg_thread;
SDL_Thread _msg_thread;
int mp_state;
char *data_source;
void *weak_thiz;
int restart;
int restart_from_beginning;
int seek_req;
long seek_msec;
};
struct IjkMediaPlayer
是在 ijkplayer 中用于管理播放器的结构体。下面对其成员进行详细解释:
volatile int ref_count
:播放器的引用计数,用于跟踪播放器对象的引用次数。
pthread_mutex_t mutex
:互斥锁,用于保护播放器的线程安全操作。
FFPlayer *ffplayer
:指向 FFPlayer 结构体的指针,FFPlayer 是 ijkplayer 的底层核心播放器。
int (*msg_loop)(void*)
:消息循环函数指针,用于处理播放器的消息。
SDL_Thread *msg_thread
:消息线程的 SDL_Thread 指针。
SDL_Thread _msg_thread
:消息线程的实际 SDL_Thread 对象。
int mp_state
:播放器的状态,用于记录播放器当前的状态。
char *data_source
:数据源,表示要播放的媒体文件路径或网络流的 URL。
void *weak_thiz
:弱引用指针,用于在消息循环中访问播放器对象。
int restart
:标志位,指示是否需要重新启动播放器。
int restart_from_beginning
:标志位,指示是否从头开始重新播放。
int seek_req
:标志位,指示是否有播放器的跳转请求。
long seek_msec
:跳转请求的时间戳,表示要跳转到的位置(以毫秒为单位)。
这个结构体用于管理播放器的基本信息和状态,并提供了相关操作的接口。它包含了播放器的状态、数据源、互斥锁、消息线程以及与底层播放器 FFPlayer 相关的指针等信息,用于控制媒体的播放、跳转和重新启动等操作。通过这些成员的维护和管理,实现了 ijkplayer 的基本功能。