mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-11-01 04:53:10 +08:00
[hal_task]: Change hal_task to info with status
1. Split encoder and decoder hal_task defs and infos. 2. Change hal_task to a general info list with status. Change-Id: I6f26035eeee4772d1ef99a21d85716e9c33eb9a6 Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
#include "mpp_mem.h"
|
#include "mpp_mem.h"
|
||||||
#include "mpp_log.h"
|
#include "mpp_log.h"
|
||||||
#include "mpp_packet_impl.h"
|
#include "mpp_packet_impl.h"
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
|
|
||||||
#include "avsd_api.h"
|
#include "avsd_api.h"
|
||||||
#include "avsd_parse.h"
|
#include "avsd_parse.h"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "mpp_packet.h"
|
#include "mpp_packet.h"
|
||||||
#include "mpp_buf_slot.h"
|
#include "mpp_buf_slot.h"
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
|
|
||||||
#define H263D_DBG_FUNCTION (0x00000001)
|
#define H263D_DBG_FUNCTION (0x00000001)
|
||||||
#define H263D_DBG_STARTCODE (0x00000002)
|
#define H263D_DBG_STARTCODE (0x00000002)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include "mpp_mem.h"
|
#include "mpp_mem.h"
|
||||||
#include "mpp_packet_impl.h"
|
#include "mpp_packet_impl.h"
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
|
|
||||||
#include "h264d_global.h"
|
#include "h264d_global.h"
|
||||||
#include "h264d_parse.h"
|
#include "h264d_parse.h"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
#include "mpp_buf_slot.h"
|
#include "mpp_buf_slot.h"
|
||||||
#include "mpp_mem_pool.h"
|
#include "mpp_mem_pool.h"
|
||||||
|
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
#include "h265d_codec.h"
|
#include "h265d_codec.h"
|
||||||
#include "h265_syntax.h"
|
#include "h265_syntax.h"
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "mpp_packet.h"
|
#include "mpp_packet.h"
|
||||||
#include "mpp_buf_slot.h"
|
#include "mpp_buf_slot.h"
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
|
|
||||||
#define MPG4D_DBG_FUNCTION (0x00000001)
|
#define MPG4D_DBG_FUNCTION (0x00000001)
|
||||||
#define MPG4D_DBG_STARTCODE (0x00000002)
|
#define MPG4D_DBG_STARTCODE (0x00000002)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
#define __VP9D_CODEC_H__
|
#define __VP9D_CODEC_H__
|
||||||
|
|
||||||
#include "mpp_frame.h"
|
#include "mpp_frame.h"
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
|
|
||||||
#include "vp9d_syntax.h"
|
#include "vp9d_syntax.h"
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#ifndef __H265D_API_H__
|
#ifndef __H265D_API_H__
|
||||||
#define __H265D_API_H__
|
#define __H265D_API_H__
|
||||||
|
|
||||||
#include "parser_api.h"
|
#include "parser_api.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
#include "mpp_packet.h"
|
#include "mpp_packet.h"
|
||||||
#include "mpp_buf_slot.h"
|
#include "mpp_buf_slot.h"
|
||||||
#include "mpp_dec_cfg.h"
|
#include "mpp_dec_cfg.h"
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
#include "mpp_soc.h"
|
#include "mpp_soc.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -136,6 +136,22 @@ static RK_S32 ts_cmp(void *priv, const struct list_head *a, const struct list_he
|
|||||||
return ts1->pts - ts2->pts;
|
return ts1->pts - ts2->pts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MPP_RET dec_task_info_init(HalTaskInfo *task)
|
||||||
|
{
|
||||||
|
HalDecTask *p = &task->dec;
|
||||||
|
|
||||||
|
p->valid = 0;
|
||||||
|
p->flags.val = 0;
|
||||||
|
p->flags.eos = 0;
|
||||||
|
p->input_packet = NULL;
|
||||||
|
p->output = -1;
|
||||||
|
p->input = -1;
|
||||||
|
memset(&task->dec.syntax, 0, sizeof(task->dec.syntax));
|
||||||
|
memset(task->dec.refer, -1, sizeof(task->dec.refer));
|
||||||
|
|
||||||
|
return MPP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
static void dec_task_init(DecTask *task)
|
static void dec_task_init(DecTask *task)
|
||||||
{
|
{
|
||||||
task->hnd = NULL;
|
task->hnd = NULL;
|
||||||
@@ -144,7 +160,7 @@ static void dec_task_init(DecTask *task)
|
|||||||
task->status.prev_task_rdy = 1;
|
task->status.prev_task_rdy = 1;
|
||||||
INIT_LIST_HEAD(&task->ts_cur.link);
|
INIT_LIST_HEAD(&task->ts_cur.link);
|
||||||
|
|
||||||
hal_task_info_init(&task->info, MPP_CTX_DEC);
|
dec_task_info_init(&task->info);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -991,7 +1007,7 @@ static MPP_RET try_proc_dec_task(Mpp *mpp, DecTask *task)
|
|||||||
}
|
}
|
||||||
task->status.curr_task_rdy = 0;
|
task->status.curr_task_rdy = 0;
|
||||||
task->status.task_parsed_rdy = 0;
|
task->status.task_parsed_rdy = 0;
|
||||||
hal_task_info_init(&task->info, MPP_CTX_DEC);
|
dec_task_info_init(&task->info);
|
||||||
return MPP_NOK;
|
return MPP_NOK;
|
||||||
}
|
}
|
||||||
dec_dbg_detail("detail: %p check output index pass\n", dec);
|
dec_dbg_detail("detail: %p check output index pass\n", dec);
|
||||||
@@ -1117,7 +1133,7 @@ static MPP_RET try_proc_dec_task(Mpp *mpp, DecTask *task)
|
|||||||
task->status.curr_task_rdy = 0;
|
task->status.curr_task_rdy = 0;
|
||||||
task->status.task_parsed_rdy = 0;
|
task->status.task_parsed_rdy = 0;
|
||||||
task->status.prev_task_rdy = 0;
|
task->status.prev_task_rdy = 0;
|
||||||
hal_task_info_init(&task->info, MPP_CTX_DEC);
|
dec_task_info_init(&task->info);
|
||||||
|
|
||||||
dec_dbg_detail("detail: %p one task ready\n", dec);
|
dec_dbg_detail("detail: %p one task ready\n", dec);
|
||||||
|
|
||||||
@@ -1525,7 +1541,7 @@ void *mpp_dec_advanced_thread(void *data)
|
|||||||
packet = NULL;
|
packet = NULL;
|
||||||
frame = NULL;
|
frame = NULL;
|
||||||
|
|
||||||
hal_task_info_init(&pTask->info, MPP_CTX_DEC);
|
dec_task_info_init(&pTask->info);
|
||||||
|
|
||||||
task.status.mpp_pkt_in_rdy = 0;
|
task.status.mpp_pkt_in_rdy = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "mpp_log.h"
|
#include "mpp_log.h"
|
||||||
#include "mpp_list.h"
|
#include "mpp_list.h"
|
||||||
#include "mpp_lock.h"
|
#include "mpp_lock.h"
|
||||||
|
#include "mpp_common.h"
|
||||||
|
|
||||||
#include "hal_task.h"
|
#include "hal_task.h"
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ struct HalTaskImpl_t {
|
|||||||
HalTaskGroupImpl *group;
|
HalTaskGroupImpl *group;
|
||||||
RK_S32 index;
|
RK_S32 index;
|
||||||
HalTaskStatus status;
|
HalTaskStatus status;
|
||||||
HalTaskInfo task;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HalTaskGroupImpl_t {
|
struct HalTaskGroupImpl_t {
|
||||||
@@ -44,11 +45,13 @@ struct HalTaskGroupImpl_t {
|
|||||||
|
|
||||||
struct list_head list[TASK_BUTT];
|
struct list_head list[TASK_BUTT];
|
||||||
RK_U32 count[TASK_BUTT];
|
RK_U32 count[TASK_BUTT];
|
||||||
|
RK_S32 size;
|
||||||
|
RK_S32 aligned_size;
|
||||||
|
|
||||||
HalTaskImpl tasks[];
|
HalTaskImpl tasks[];
|
||||||
};
|
};
|
||||||
|
|
||||||
MPP_RET hal_task_group_init(HalTaskGroup *group, RK_S32 count)
|
MPP_RET hal_task_group_init(HalTaskGroup *group, RK_S32 count, RK_S32 size)
|
||||||
{
|
{
|
||||||
if (NULL == group) {
|
if (NULL == group) {
|
||||||
mpp_err_f("found invalid input group %p count %d\n", group, count);
|
mpp_err_f("found invalid input group %p count %d\n", group, count);
|
||||||
@@ -56,21 +59,28 @@ MPP_RET hal_task_group_init(HalTaskGroup *group, RK_S32 count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
HalTaskGroupImpl *p = NULL;
|
HalTaskGroupImpl *p = NULL;
|
||||||
|
RK_S32 aligned_size = MPP_ALIGN(size, sizeof(void *));
|
||||||
|
RK_U8 *buf = NULL;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
p = mpp_calloc_size(HalTaskGroupImpl, sizeof(HalTaskGroupImpl) +
|
p = mpp_calloc_size(HalTaskGroupImpl, sizeof(HalTaskGroupImpl) +
|
||||||
sizeof(HalTaskImpl) * count);
|
(sizeof(HalTaskImpl) + aligned_size) * count);
|
||||||
if (NULL == p) {
|
if (NULL == p) {
|
||||||
mpp_err_f("malloc group failed\n");
|
mpp_err_f("malloc group failed\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
p->task_count = count;
|
p->task_count = count;
|
||||||
|
p->size = size;
|
||||||
|
p->aligned_size = aligned_size;
|
||||||
|
|
||||||
mpp_spinlock_init(&p->lock);
|
mpp_spinlock_init(&p->lock);
|
||||||
|
|
||||||
for (RK_U32 i = 0; i < TASK_BUTT; i++)
|
for (RK_U32 i = 0; i < TASK_BUTT; i++)
|
||||||
INIT_LIST_HEAD(&p->list[i]);
|
INIT_LIST_HEAD(&p->list[i]);
|
||||||
|
|
||||||
|
buf = (RK_U8 *)(((HalTaskImpl *)(p + 1) + count));
|
||||||
|
|
||||||
for (RK_S32 i = 0; i < count; i++) {
|
for (RK_S32 i = 0; i < count; i++) {
|
||||||
HalTaskImpl *task = &p->tasks[i];
|
HalTaskImpl *task = &p->tasks[i];
|
||||||
|
|
||||||
@@ -78,6 +88,7 @@ MPP_RET hal_task_group_init(HalTaskGroup *group, RK_S32 count)
|
|||||||
task->index = i;
|
task->index = i;
|
||||||
task->group = p;
|
task->group = p;
|
||||||
task->status = TASK_IDLE;
|
task->status = TASK_IDLE;
|
||||||
|
task->data = buf + i * aligned_size;
|
||||||
list_add_tail(&task->list, &p->list[TASK_IDLE]);
|
list_add_tail(&task->list, &p->list[TASK_IDLE]);
|
||||||
p->count[TASK_IDLE]++;
|
p->count[TASK_IDLE]++;
|
||||||
}
|
}
|
||||||
@@ -178,10 +189,10 @@ MPP_RET hal_task_hnd_set_status(HalTaskHnd hnd, HalTaskStatus status)
|
|||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET hal_task_hnd_set_info(HalTaskHnd hnd, HalTaskInfo *task)
|
MPP_RET hal_task_hnd_set_info(HalTaskHnd hnd, void *info)
|
||||||
{
|
{
|
||||||
if (NULL == hnd || NULL == task) {
|
if (NULL == hnd || NULL == info) {
|
||||||
mpp_err_f("found invaid input hnd %p task %p\n", hnd, task);
|
mpp_err_f("found invaid input hnd %p info %p\n", hnd, info);
|
||||||
return MPP_ERR_UNKNOW;
|
return MPP_ERR_UNKNOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,16 +202,16 @@ MPP_RET hal_task_hnd_set_info(HalTaskHnd hnd, HalTaskInfo *task)
|
|||||||
mpp_assert(impl->index < group->task_count);
|
mpp_assert(impl->index < group->task_count);
|
||||||
|
|
||||||
mpp_spinlock_lock(&group->lock);
|
mpp_spinlock_lock(&group->lock);
|
||||||
memcpy(&impl->task, task, sizeof(impl->task));
|
memcpy(impl->data, info, group->size);
|
||||||
mpp_spinlock_unlock(&group->lock);
|
mpp_spinlock_unlock(&group->lock);
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET hal_task_hnd_get_info(HalTaskHnd hnd, HalTaskInfo *task)
|
MPP_RET hal_task_hnd_get_info(HalTaskHnd hnd, void *info)
|
||||||
{
|
{
|
||||||
if (NULL == hnd || NULL == task) {
|
if (NULL == hnd || NULL == info) {
|
||||||
mpp_err_f("found invaid input hnd %p task %p\n", hnd, task);
|
mpp_err_f("found invaid input hnd %p info %p\n", hnd, info);
|
||||||
return MPP_ERR_UNKNOW;
|
return MPP_ERR_UNKNOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,29 +221,8 @@ MPP_RET hal_task_hnd_get_info(HalTaskHnd hnd, HalTaskInfo *task)
|
|||||||
mpp_assert(impl->index < group->task_count);
|
mpp_assert(impl->index < group->task_count);
|
||||||
|
|
||||||
mpp_spinlock_lock(&group->lock);
|
mpp_spinlock_lock(&group->lock);
|
||||||
memcpy(task, &impl->task, sizeof(impl->task));
|
memcpy(info, impl->data, group->size);
|
||||||
mpp_spinlock_unlock(&group->lock);
|
mpp_spinlock_unlock(&group->lock);
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET hal_task_info_init(HalTaskInfo *task, MppCtxType type)
|
|
||||||
{
|
|
||||||
if (NULL == task || type >= MPP_CTX_BUTT) {
|
|
||||||
mpp_err_f("found invalid input task %p type %d\n", task, type);
|
|
||||||
return MPP_ERR_UNKNOW;
|
|
||||||
}
|
|
||||||
|
|
||||||
HalDecTask *p = &task->dec;
|
|
||||||
|
|
||||||
p->valid = 0;
|
|
||||||
p->flags.val = 0;
|
|
||||||
p->flags.eos = 0;
|
|
||||||
p->input_packet = NULL;
|
|
||||||
p->output = -1;
|
|
||||||
p->input = -1;
|
|
||||||
memset(&task->dec.syntax, 0, sizeof(task->dec.syntax));
|
|
||||||
memset(task->dec.refer, -1, sizeof(task->dec.refer));
|
|
||||||
|
|
||||||
return MPP_OK;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -18,11 +18,22 @@
|
|||||||
#ifndef __HAL_DEC_TASK__
|
#ifndef __HAL_DEC_TASK__
|
||||||
#define __HAL_DEC_TASK__
|
#define __HAL_DEC_TASK__
|
||||||
|
|
||||||
#include "hal_task_defs.h"
|
#include "hal_task.h"
|
||||||
#include "mpp_callback.h"
|
#include "mpp_callback.h"
|
||||||
|
|
||||||
#define MAX_DEC_REF_NUM 17
|
#define MAX_DEC_REF_NUM 17
|
||||||
|
|
||||||
|
/*
|
||||||
|
* modified by parser and encoder
|
||||||
|
*
|
||||||
|
* number : the number of the data pointer array element
|
||||||
|
* data : the address of the pointer array, parser will add its data here
|
||||||
|
*/
|
||||||
|
typedef struct MppSyntax_t {
|
||||||
|
RK_U32 number;
|
||||||
|
void *data;
|
||||||
|
} MppSyntax;
|
||||||
|
|
||||||
typedef union HalDecTaskFlag_t {
|
typedef union HalDecTaskFlag_t {
|
||||||
RK_U32 val;
|
RK_U32 val;
|
||||||
struct {
|
struct {
|
||||||
@@ -79,4 +90,25 @@ typedef struct HalDecTask_t {
|
|||||||
RK_S32 refer[MAX_DEC_REF_NUM];
|
RK_S32 refer[MAX_DEC_REF_NUM];
|
||||||
} HalDecTask;
|
} HalDecTask;
|
||||||
|
|
||||||
|
typedef union HalDecVprocTaskFlag_t {
|
||||||
|
RK_U32 val;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
RK_U32 eos : 1;
|
||||||
|
RK_U32 info_change : 1;
|
||||||
|
};
|
||||||
|
} HalDecVprocTaskFlag;
|
||||||
|
|
||||||
|
typedef struct HalDecVprocTask_t {
|
||||||
|
// input slot index for post-process
|
||||||
|
HalDecVprocTaskFlag flags;
|
||||||
|
|
||||||
|
RK_S32 input;
|
||||||
|
} HalDecVprocTask;
|
||||||
|
|
||||||
|
typedef union HalTask_u {
|
||||||
|
HalDecTask dec;
|
||||||
|
HalDecVprocTask dec_vproc;
|
||||||
|
} HalTaskInfo;
|
||||||
|
|
||||||
#endif /* __HAL_DEC_TASK__ */
|
#endif /* __HAL_DEC_TASK__ */
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "mpp_time.h"
|
#include "mpp_time.h"
|
||||||
|
|
||||||
#include "hal_task_defs.h"
|
#include "hal_task.h"
|
||||||
#include "mpp_rc_defs.h"
|
#include "mpp_rc_defs.h"
|
||||||
#include "mpp_enc_refs.h"
|
#include "mpp_enc_refs.h"
|
||||||
|
|
||||||
@@ -35,6 +35,11 @@ typedef struct HalEncTaskFlag_t {
|
|||||||
RK_U32 err;
|
RK_U32 err;
|
||||||
} HalEncTaskFlag;
|
} HalEncTaskFlag;
|
||||||
|
|
||||||
|
typedef struct MppSyntax_t {
|
||||||
|
RK_U32 number;
|
||||||
|
void *data;
|
||||||
|
} MppSyntax;
|
||||||
|
|
||||||
typedef struct HalEncTask_t {
|
typedef struct HalEncTask_t {
|
||||||
RK_U32 valid;
|
RK_U32 valid;
|
||||||
|
|
||||||
|
|||||||
@@ -19,28 +19,16 @@
|
|||||||
#define __HAL_TASK__
|
#define __HAL_TASK__
|
||||||
|
|
||||||
#include "mpp_err.h"
|
#include "mpp_err.h"
|
||||||
#include "hal_dec_task.h"
|
|
||||||
|
|
||||||
typedef union HalDecVprocTaskFlag_t {
|
typedef void* HalTaskHnd;
|
||||||
RK_U32 val;
|
typedef void* HalTaskGroup;
|
||||||
|
|
||||||
struct {
|
typedef enum HalTaskStatus_e {
|
||||||
RK_U32 eos : 1;
|
TASK_IDLE,
|
||||||
RK_U32 info_change : 1;
|
TASK_PROCESSING,
|
||||||
};
|
TASK_PROC_DONE,
|
||||||
} HalDecVprocTaskFlag;
|
TASK_BUTT,
|
||||||
|
} HalTaskStatus;
|
||||||
typedef struct HalDecVprocTask_t {
|
|
||||||
// input slot index for post-process
|
|
||||||
HalDecVprocTaskFlag flags;
|
|
||||||
|
|
||||||
RK_S32 input;
|
|
||||||
} HalDecVprocTask;
|
|
||||||
|
|
||||||
typedef union HalTask_u {
|
|
||||||
HalDecTask dec;
|
|
||||||
HalDecVprocTask dec_vproc;
|
|
||||||
} HalTaskInfo;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -52,7 +40,7 @@ extern "C" {
|
|||||||
* NOTE: use mpp_list to implement
|
* NOTE: use mpp_list to implement
|
||||||
* the count means the max task waiting for process
|
* the count means the max task waiting for process
|
||||||
*/
|
*/
|
||||||
MPP_RET hal_task_group_init(HalTaskGroup *group, RK_S32 count);
|
MPP_RET hal_task_group_init(HalTaskGroup *group, RK_S32 count, RK_S32 size);
|
||||||
MPP_RET hal_task_group_deinit(HalTaskGroup group);
|
MPP_RET hal_task_group_deinit(HalTaskGroup group);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -82,9 +70,8 @@ MPP_RET hal_task_group_deinit(HalTaskGroup group);
|
|||||||
MPP_RET hal_task_get_hnd(HalTaskGroup group, HalTaskStatus status, HalTaskHnd *hnd);
|
MPP_RET hal_task_get_hnd(HalTaskGroup group, HalTaskStatus status, HalTaskHnd *hnd);
|
||||||
MPP_RET hal_task_get_count(HalTaskGroup group, HalTaskStatus status, RK_U32 *count);
|
MPP_RET hal_task_get_count(HalTaskGroup group, HalTaskStatus status, RK_U32 *count);
|
||||||
MPP_RET hal_task_hnd_set_status(HalTaskHnd hnd, HalTaskStatus status);
|
MPP_RET hal_task_hnd_set_status(HalTaskHnd hnd, HalTaskStatus status);
|
||||||
MPP_RET hal_task_hnd_set_info(HalTaskHnd hnd, HalTaskInfo *task);
|
MPP_RET hal_task_hnd_set_info(HalTaskHnd hnd, void *task);
|
||||||
MPP_RET hal_task_hnd_get_info(HalTaskHnd hnd, HalTaskInfo *task);
|
MPP_RET hal_task_hnd_get_info(HalTaskHnd hnd, void *task);
|
||||||
MPP_RET hal_task_info_init(HalTaskInfo *task, MppCtxType type);
|
|
||||||
MPP_RET hal_task_check_empty(HalTaskGroup group, HalTaskStatus status);
|
MPP_RET hal_task_check_empty(HalTaskGroup group, HalTaskStatus status);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -92,4 +79,3 @@ MPP_RET hal_task_check_empty(HalTaskGroup group, HalTaskStatus status);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /*__HAL_TASK__*/
|
#endif /*__HAL_TASK__*/
|
||||||
|
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright 2015 Rockchip Electronics Co. LTD
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __HAL_TASK_DEFS__
|
|
||||||
#define __HAL_TASK_DEFS__
|
|
||||||
|
|
||||||
#include "rk_type.h"
|
|
||||||
|
|
||||||
typedef void* HalTaskHnd;
|
|
||||||
typedef void* HalTaskGroup;
|
|
||||||
|
|
||||||
typedef enum HalTaskStatus_e {
|
|
||||||
TASK_IDLE,
|
|
||||||
TASK_PROCESSING,
|
|
||||||
TASK_PROC_DONE,
|
|
||||||
TASK_BUTT,
|
|
||||||
} HalTaskStatus;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* modified by parser and encoder
|
|
||||||
*
|
|
||||||
* number : the number of the data pointer array element
|
|
||||||
* data : the address of the pointer array, parser will add its data here
|
|
||||||
*/
|
|
||||||
typedef struct MppSyntax_t {
|
|
||||||
RK_U32 number;
|
|
||||||
void *data;
|
|
||||||
} MppSyntax;
|
|
||||||
|
|
||||||
#endif /* __HAL_TASK_DEFS__ */
|
|
||||||
@@ -17,8 +17,7 @@
|
|||||||
#ifndef __HAL_VP8E_API_V2_H__
|
#ifndef __HAL_VP8E_API_V2_H__
|
||||||
#define __HAL_VP8E_API_V2_H__
|
#define __HAL_VP8E_API_V2_H__
|
||||||
|
|
||||||
#include "mpp_hal.h"
|
#include "mpp_enc_hal.h"
|
||||||
|
|
||||||
|
|
||||||
extern const MppEncHalApi hal_api_vp8e_v2;
|
extern const MppEncHalApi hal_api_vp8e_v2;
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
#include "mpp_buf_slot.h"
|
#include "mpp_buf_slot.h"
|
||||||
#include "mpp_platform.h"
|
#include "mpp_platform.h"
|
||||||
|
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
#include "mpp_dec_cfg.h"
|
#include "mpp_dec_cfg.h"
|
||||||
#include "mpp_device.h"
|
#include "mpp_device.h"
|
||||||
|
|
||||||
|
|||||||
@@ -49,9 +49,6 @@ typedef struct MppEncHalImpl_t {
|
|||||||
|
|
||||||
void *ctx;
|
void *ctx;
|
||||||
const MppEncHalApi *api;
|
const MppEncHalApi *api;
|
||||||
|
|
||||||
HalTaskGroup tasks;
|
|
||||||
RK_S32 task_count;
|
|
||||||
} MppEncHalImpl;
|
} MppEncHalImpl;
|
||||||
|
|
||||||
MPP_RET mpp_enc_hal_init(MppEncHal *ctx, MppEncHalCfg *cfg)
|
MPP_RET mpp_enc_hal_init(MppEncHal *ctx, MppEncHalCfg *cfg)
|
||||||
@@ -81,12 +78,6 @@ MPP_RET mpp_enc_hal_init(MppEncHal *ctx, MppEncHalCfg *cfg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = hal_task_group_init(&p->tasks, p->task_count);
|
|
||||||
if (ret) {
|
|
||||||
mpp_err_f("hal_task_group_init failed ret %d\n", ret);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*ctx = p;
|
*ctx = p;
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
@@ -109,8 +100,6 @@ MPP_RET mpp_enc_hal_deinit(MppEncHal ctx)
|
|||||||
MppEncHalImpl *p = (MppEncHalImpl*)ctx;
|
MppEncHalImpl *p = (MppEncHalImpl*)ctx;
|
||||||
p->api->deinit(p->ctx);
|
p->api->deinit(p->ctx);
|
||||||
mpp_free(p->ctx);
|
mpp_free(p->ctx);
|
||||||
if (p->tasks)
|
|
||||||
hal_task_group_deinit(p->tasks);
|
|
||||||
mpp_free(p);
|
mpp_free(p);
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,8 @@ MPP_RET mpp_hal_init(MppHal *ctx, MppHalCfg *cfg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = hal_task_group_init(&p->tasks, cfg->cfg->status.hal_task_count);
|
ret = hal_task_group_init(&p->tasks, cfg->cfg->status.hal_task_count,
|
||||||
|
sizeof(HalDecTask));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mpp_err_f("hal_task_group_init failed ret %d\n", ret);
|
mpp_err_f("hal_task_group_init failed ret %d\n", ret);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
#include "mpp_bitread.h"
|
#include "mpp_bitread.h"
|
||||||
#include "mpp_bitput.h"
|
#include "mpp_bitput.h"
|
||||||
|
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
#include "jpegd_syntax.h"
|
#include "jpegd_syntax.h"
|
||||||
#include "jpegd_api.h"
|
#include "jpegd_api.h"
|
||||||
#include "hal_jpegd_common.h"
|
#include "hal_jpegd_common.h"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
#include "mpp_buf_slot.h"
|
#include "mpp_buf_slot.h"
|
||||||
#include "mpp_device.h"
|
#include "mpp_device.h"
|
||||||
|
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
|
|
||||||
#include "vp8d_syntax.h"
|
#include "vp8d_syntax.h"
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
#ifndef __MPP_DEC_VPROC_H__
|
#ifndef __MPP_DEC_VPROC_H__
|
||||||
#define __MPP_DEC_VPROC_H__
|
#define __MPP_DEC_VPROC_H__
|
||||||
|
|
||||||
#include "hal_task.h"
|
#include "hal_dec_task.h"
|
||||||
|
|
||||||
typedef struct MppDecVprocCfg_t {
|
typedef struct MppDecVprocCfg_t {
|
||||||
void *mpp;
|
void *mpp;
|
||||||
|
|||||||
@@ -592,7 +592,7 @@ MPP_RET dec_vproc_init(MppDecVprocCtx *ctx, MppDecVprocCfg *cfg)
|
|||||||
p->slots = ((MppDecImpl *)p->mpp->mDec)->frame_slots;
|
p->slots = ((MppDecImpl *)p->mpp->mDec)->frame_slots;
|
||||||
p->thd = new MppThread(dec_vproc_thread, p, "mpp_dec_vproc");
|
p->thd = new MppThread(dec_vproc_thread, p, "mpp_dec_vproc");
|
||||||
sem_init(&p->reset_sem, 0, 0);
|
sem_init(&p->reset_sem, 0, 0);
|
||||||
ret = hal_task_group_init(&p->task_group, 4);
|
ret = hal_task_group_init(&p->task_group, 4, sizeof(HalDecVprocTask));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mpp_err_f("create task group failed\n");
|
mpp_err_f("create task group failed\n");
|
||||||
delete p->thd;
|
delete p->thd;
|
||||||
|
|||||||
Reference in New Issue
Block a user