18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/****************************************************************************** 28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project 48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License"); 68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License. 78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at: 88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0 108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software 128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS, 138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and 158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License. 168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ***************************************************************************** 188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************* 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @file 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* ih264_list.h 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Contains functions for buf queue 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @author 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Harish 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par List of Functions: 328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks 348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* None 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************* 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef _IH264_LIST_H_ 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define _IH264_LIST_H_ 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct 438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Pointer to buffer base which contains the bufs */ 458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void *pv_buf_base; 468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Mutex used to keep the functions thread-safe */ 488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void *pv_mutex; 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Current write index */ 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S volatile WORD32 i4_buf_wr_idx; 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Current read index */ 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S volatile WORD32 i4_buf_rd_idx; 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Maximum index */ 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_buf_max_idx; 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Log2(buf_max_idx) - 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * To ensure number of entries is power of two 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * This makes it easier to wrap around by using AND with buf_max_idx - 1 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * */ 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_log2_buf_max_idx; 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Flag to indicate list has to be terminated */ 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_terminate; 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** Size of each entry */ 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_entry_size; 708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** If the list is to be used frequently send this as zero, else send a large value 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * to ensure cores are not loaded unnecessarily. 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * For eg: For picture level queues this can be a large value like 100us 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * but for jobq this will be zero. 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_yeild_interval_us; 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}list_t; 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264_list_size(WORD32 num_entries, WORD32 entry_size); 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid* ih264_list_init(void *pv_buf, 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 buf_size, 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 num_entries, 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 entry_size, 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 yeild_interval_us); 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264_ERROR_T ih264_list_free(list_t *ps_list); 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264_ERROR_T ih264_list_reset(list_t *ps_list); 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264_ERROR_T ih264_list_deinit(list_t *ps_list); 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264_ERROR_T ih264_list_terminate(list_t *ps_list); 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264_ERROR_T ih264_list_queue(list_t *ps_list, void *pv_buf, WORD32 blocking); 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264_ERROR_T ih264_list_dequeue(list_t *ps_list, void *pv_buf, WORD32 blocking); 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /* _IH264_PROCESS_SLICE_H_ */ 94