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