mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-07 10:00:55 +08:00
[mpp_buf_slot]: add pts to buffer slot implement
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@214 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
@@ -162,9 +162,23 @@ MPP_RET mpp_buf_slot_clr_decoding(MppBufSlots slots, RK_U32 index);
|
||||
MPP_RET mpp_buf_slot_set_display(MppBufSlots slots, RK_U32 index);
|
||||
MPP_RET mpp_buf_slot_clr_display(MppBufSlots slots, RK_U32 index);
|
||||
|
||||
|
||||
/*
|
||||
* mpp_buf_slot_set_buffer
|
||||
* - called by dec thread when find a output index has not buffer
|
||||
*
|
||||
* mpp_buf_slot_get_buffer
|
||||
* - called by hal module on register generation
|
||||
*
|
||||
* mpp_buf_slot_set_pts
|
||||
* - called by parser when decoding a new frame
|
||||
*
|
||||
* mpp_buf_slot_get_pts
|
||||
* - called by hal thread when output a frame
|
||||
*/
|
||||
MPP_RET mpp_buf_slot_set_buffer(MppBufSlots slots, RK_U32 index, MppBuffer buffer);
|
||||
MppBuffer mpp_buf_slot_get_buffer(const MppBufSlots slots, RK_U32 index);
|
||||
MPP_RET mpp_buf_slot_set_pts(MppBufSlots slots, RK_U32 index, RK_S64 pts);
|
||||
RK_S64 mpp_buf_slot_get_pts(const MppBufSlots slots, RK_U32 index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -33,6 +33,7 @@
|
||||
typedef struct MppBufSlotEntry_t {
|
||||
MppBuffer buffer;
|
||||
RK_U32 status;
|
||||
RK_S64 pts;
|
||||
} MppBufSlotEntry;
|
||||
|
||||
typedef struct MppBufSlotsImpl_t {
|
||||
@@ -320,3 +321,32 @@ MppBuffer mpp_buf_slot_get_buffer(const MppBufSlots slots, RK_U32 index)
|
||||
return slot[index].buffer;
|
||||
}
|
||||
|
||||
MPP_RET mpp_buf_slot_set_pts(MppBufSlots slots, RK_U32 index, RK_S64 pts)
|
||||
{
|
||||
if (NULL == slots) {
|
||||
mpp_err_f("found NULL input\n");
|
||||
return MPP_ERR_NULL_PTR;
|
||||
}
|
||||
|
||||
MppBufSlotsImpl *impl = (MppBufSlotsImpl *)slots;
|
||||
Mutex::Autolock auto_lock(impl->lock);
|
||||
MppBufSlotEntry *slot = impl->slots;
|
||||
mpp_assert(index < impl->count);
|
||||
slot[index].pts = pts;
|
||||
return MPP_OK;
|
||||
}
|
||||
|
||||
RK_S64 mpp_buf_slot_get_pts(const MppBufSlots slots, RK_U32 index)
|
||||
{
|
||||
if (NULL == slots) {
|
||||
mpp_err_f("found NULL input\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MppBufSlotsImpl *impl = (MppBufSlotsImpl *)slots;
|
||||
Mutex::Autolock auto_lock(impl->lock);
|
||||
MppBufSlotEntry *slot = impl->slots;
|
||||
mpp_assert(index < impl->count);
|
||||
return slot[index].pts;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user