xref: /rockchip-linux_mpp/mpp/hal/rkdec/avsd/hal_avsd_base.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  * Copyright 2015 Rockchip Electronics Co. LTD
3*437bfbebSnyanmisaka  *
4*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
5*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
6*437bfbebSnyanmisaka  * You may obtain a copy of the License at
7*437bfbebSnyanmisaka  *
8*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
9*437bfbebSnyanmisaka  *
10*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
11*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
12*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
14*437bfbebSnyanmisaka  * limitations under the License.
15*437bfbebSnyanmisaka  */
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka #define MODULE_TAG "hal_avsd_base"
18*437bfbebSnyanmisaka #include <assert.h>
19*437bfbebSnyanmisaka #include "mpp_log.h"
20*437bfbebSnyanmisaka #include "mpp_common.h"
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka #include "hal_avsd_base.h"
23*437bfbebSnyanmisaka 
24*437bfbebSnyanmisaka 
25*437bfbebSnyanmisaka RK_U32 avsd_hal_debug = 0;
26*437bfbebSnyanmisaka 
avsd_ver_align(RK_U32 val)27*437bfbebSnyanmisaka RK_U32 avsd_ver_align(RK_U32 val)
28*437bfbebSnyanmisaka {
29*437bfbebSnyanmisaka     return MPP_ALIGN(val, 16);
30*437bfbebSnyanmisaka }
31*437bfbebSnyanmisaka 
avsd_hor_align(RK_U32 val)32*437bfbebSnyanmisaka RK_U32 avsd_hor_align(RK_U32 val)
33*437bfbebSnyanmisaka {
34*437bfbebSnyanmisaka     return MPP_ALIGN(val, 16);
35*437bfbebSnyanmisaka }
36*437bfbebSnyanmisaka 
avsd_len_align(RK_U32 val)37*437bfbebSnyanmisaka RK_U32 avsd_len_align(RK_U32 val)
38*437bfbebSnyanmisaka {
39*437bfbebSnyanmisaka     return (2 * MPP_ALIGN(val, 16));
40*437bfbebSnyanmisaka }
41*437bfbebSnyanmisaka 
get_queue_pic(AvsdHalCtx_t * p_hal)42*437bfbebSnyanmisaka RK_S32 get_queue_pic(AvsdHalCtx_t *p_hal)
43*437bfbebSnyanmisaka {
44*437bfbebSnyanmisaka     RK_U32 i = 0;
45*437bfbebSnyanmisaka     RK_S32 ret_idx = -1;
46*437bfbebSnyanmisaka 
47*437bfbebSnyanmisaka     for (i = 0; i < MPP_ARRAY_ELEMS(p_hal->pic); i++) {
48*437bfbebSnyanmisaka         if (!p_hal->pic[i].valid) {
49*437bfbebSnyanmisaka             ret_idx = i;
50*437bfbebSnyanmisaka             p_hal->pic[i].valid = 1;
51*437bfbebSnyanmisaka             break;
52*437bfbebSnyanmisaka         }
53*437bfbebSnyanmisaka     }
54*437bfbebSnyanmisaka 
55*437bfbebSnyanmisaka     return ret_idx;
56*437bfbebSnyanmisaka }
57*437bfbebSnyanmisaka 
get_packet_fd(AvsdHalCtx_t * p_hal,RK_S32 idx)58*437bfbebSnyanmisaka RK_S32 get_packet_fd(AvsdHalCtx_t *p_hal, RK_S32 idx)
59*437bfbebSnyanmisaka {
60*437bfbebSnyanmisaka     RK_S32 ret_fd = 0;
61*437bfbebSnyanmisaka     MppBuffer mbuffer = NULL;
62*437bfbebSnyanmisaka 
63*437bfbebSnyanmisaka     mpp_buf_slot_get_prop(p_hal->packet_slots, idx, SLOT_BUFFER, &mbuffer);
64*437bfbebSnyanmisaka     assert(mbuffer);
65*437bfbebSnyanmisaka     ret_fd =  mpp_buffer_get_fd(mbuffer);
66*437bfbebSnyanmisaka 
67*437bfbebSnyanmisaka     return ret_fd;
68*437bfbebSnyanmisaka }
69*437bfbebSnyanmisaka 
get_frame_fd(AvsdHalCtx_t * p_hal,RK_S32 idx)70*437bfbebSnyanmisaka RK_S32 get_frame_fd(AvsdHalCtx_t *p_hal, RK_S32 idx)
71*437bfbebSnyanmisaka {
72*437bfbebSnyanmisaka     RK_S32 ret_fd = 0;
73*437bfbebSnyanmisaka     MppBuffer mbuffer = NULL;
74*437bfbebSnyanmisaka 
75*437bfbebSnyanmisaka     mpp_buf_slot_get_prop(p_hal->frame_slots, idx, SLOT_BUFFER, &mbuffer);
76*437bfbebSnyanmisaka     assert(mbuffer);
77*437bfbebSnyanmisaka     ret_fd = mpp_buffer_get_fd(mbuffer);
78*437bfbebSnyanmisaka 
79*437bfbebSnyanmisaka     return ret_fd;
80*437bfbebSnyanmisaka }
81