mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[mpp]: enable two thread
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@165 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
14
mpp/mpp.cpp
14
mpp/mpp.cpp
@@ -28,9 +28,13 @@
|
||||
|
||||
static void *thread_hal(void *data)
|
||||
{
|
||||
//Mpp *mpp = (Mpp*)data;
|
||||
Mpp *mpp = (Mpp*)data;
|
||||
MppThread *thd_dec = mpp->thd_codec;
|
||||
MppThread *thd_hal = mpp->thd_hal;
|
||||
mpp_list *packets = mpp->packets;
|
||||
mpp_list *frames = mpp->frames;
|
||||
|
||||
while (0) {
|
||||
while (MPP_THREAD_RUNNING == thd_hal->get_status()) {
|
||||
/*
|
||||
* hal thread wait for dxva interface intput firt
|
||||
*/
|
||||
@@ -53,6 +57,8 @@ static void *thread_hal(void *data)
|
||||
// signal()
|
||||
// mark frame in output queue
|
||||
// wait up output thread to get a output frame
|
||||
|
||||
msleep(10);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
@@ -61,12 +67,14 @@ static void *thread_hal(void *data)
|
||||
static void *thread_dec(void *data)
|
||||
{
|
||||
Mpp *mpp = (Mpp*)data;
|
||||
MppThread *thd_dec = mpp->thd_codec;
|
||||
MppThread *thd_hal = mpp->thd_hal;
|
||||
mpp_list *packets = mpp->packets;
|
||||
mpp_list *frames = mpp->frames;
|
||||
MppPacketImpl packet;
|
||||
MppFrame frame;
|
||||
|
||||
while (mpp->thread_codec_running) {
|
||||
while (MPP_THREAD_RUNNING == thd_dec->get_status()) {
|
||||
if (packets->list_size()) {
|
||||
/*
|
||||
* packet will be destroyed outside, here just copy the content
|
||||
|
@@ -61,11 +61,13 @@ void MppThread::start()
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
||||
|
||||
if (MPP_THREAD_UNINITED == mStatus) {
|
||||
if (0 == pthread_create(&mThread, &attr, mFunction, mContext)) {
|
||||
// NOTE: set status here first to avoid unexpected loop quit racing condition
|
||||
mStatus = MPP_THREAD_RUNNING;
|
||||
if (0 == pthread_create(&mThread, &attr, mFunction, mContext))
|
||||
thread_dbg(MPP_THREAD_DBG_FUNCTION, "mThread %p mContext %p create success\n",
|
||||
mFunction, mContext);
|
||||
}
|
||||
else
|
||||
mStatus = MPP_THREAD_UNINITED;
|
||||
}
|
||||
pthread_attr_destroy(&attr);
|
||||
}
|
||||
|
Reference in New Issue
Block a user