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:
18
mpp/mpp.cpp
18
mpp/mpp.cpp
@@ -28,9 +28,13 @@
|
|||||||
|
|
||||||
static void *thread_hal(void *data)
|
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
|
* hal thread wait for dxva interface intput firt
|
||||||
*/
|
*/
|
||||||
@@ -53,6 +57,8 @@ static void *thread_hal(void *data)
|
|||||||
// signal()
|
// signal()
|
||||||
// mark frame in output queue
|
// mark frame in output queue
|
||||||
// wait up output thread to get a output frame
|
// wait up output thread to get a output frame
|
||||||
|
|
||||||
|
msleep(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -61,12 +67,14 @@ static void *thread_hal(void *data)
|
|||||||
static void *thread_dec(void *data)
|
static void *thread_dec(void *data)
|
||||||
{
|
{
|
||||||
Mpp *mpp = (Mpp*)data;
|
Mpp *mpp = (Mpp*)data;
|
||||||
mpp_list *packets = mpp->packets;
|
MppThread *thd_dec = mpp->thd_codec;
|
||||||
mpp_list *frames = mpp->frames;
|
MppThread *thd_hal = mpp->thd_hal;
|
||||||
|
mpp_list *packets = mpp->packets;
|
||||||
|
mpp_list *frames = mpp->frames;
|
||||||
MppPacketImpl packet;
|
MppPacketImpl packet;
|
||||||
MppFrame frame;
|
MppFrame frame;
|
||||||
|
|
||||||
while (mpp->thread_codec_running) {
|
while (MPP_THREAD_RUNNING == thd_dec->get_status()) {
|
||||||
if (packets->list_size()) {
|
if (packets->list_size()) {
|
||||||
/*
|
/*
|
||||||
* packet will be destroyed outside, here just copy the content
|
* packet will be destroyed outside, here just copy the content
|
||||||
|
@@ -61,11 +61,13 @@ void MppThread::start()
|
|||||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
||||||
|
|
||||||
if (MPP_THREAD_UNINITED == mStatus) {
|
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;
|
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",
|
thread_dbg(MPP_THREAD_DBG_FUNCTION, "mThread %p mContext %p create success\n",
|
||||||
mFunction, mContext);
|
mFunction, mContext);
|
||||||
}
|
else
|
||||||
|
mStatus = MPP_THREAD_UNINITED;
|
||||||
}
|
}
|
||||||
pthread_attr_destroy(&attr);
|
pthread_attr_destroy(&attr);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user