buffer.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 134 行
H
134 行
/*******************************************************************
*
* Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
*
* Description:
*
* Author: Amlogic Software
* Created: Fri Nov 11 00:24:10 2005
*
*******************************************************************/
#ifndef _BUFFER_H_
#define _BUFFER_H_
#include "includes.h"
///////////////////////////////////////////////////////////////////////
// Block Read Bypass Buffer //
///////////////////////////////////////////////////////////////////////
typedef struct blk_bypass_member_s
{
char *buffer;
int byte_available;
char *read_ptr;
unsigned refill_en;
unsigned start_offset;
}
blk_bypass_member_t;
#define BLK_BYPASS_EACHTIME_REFILL_BLK_NUM 8
typedef struct blk_bypass_param_s
{
void *empty;
}
blk_bypass_param_t;
///////////////////////////////////////////////////////////////////////
// Block Read Ahead Buffer //
///////////////////////////////////////////////////////////////////////
typedef struct blk_read_ahead_member_s
{
char *buffer;
unsigned total_byte_available;
unsigned ahead_byte_available;
char *rd_ptr;
char *wr_ptr;
long start_offset;
unsigned refill_size;
unsigned request_read_size;
unsigned remain_read_size;
}
blk_read_ahead_member_t;
#define BLK_READ_AHEAD_EACHTIME_REFILL_BLK_NUM 8
typedef struct blk_read_ahead_param_s
{
unsigned blk_size; // size to refill each time
unsigned num_blk; // total n blk to buffer, each blk size is blk_size
}
blk_read_ahead_param_t;
///////////////////////////////////////////////////////////////////////
// Block Multiple Seek Point Read Ahead Buffer //
///////////////////////////////////////////////////////////////////////
typedef struct blk_multi_seek_point_read_ahead_member_s
{
char *buffer;
int byte_available;
char *file_read_ptr;
unsigned file_read_offset;
unsigned int total_bytes; // total bytes of file
}
blk_multi_seek_point_read_ahead_member_t;
typedef struct blk_multi_seek_point_read_ahead_param_s
{
unsigned blk_size; // size to refill each time
unsigned num_blk; // total n blk to buffer, each blk size is blk_size
}
blk_multi_seek_point_read_ahead_param_t;
/////////////////////////////////////////////////////////////////////////////////////////////
#define NUM_BUF_TYPE 3
typedef enum
{
BLK_BYPASS_BUFFER=0, // no read ahead feature, only cache current lba(sector) for non-cluster size aligned read
BLK_RD_AHEAD_BUFFER, // non-cluster size aligned read, read ahead
BLK_MULTI_SEEK_POINT_RD_AHEAD_BUFFER
} buffer_type_t;
typedef union
{
blk_bypass_param_t bypass;
blk_read_ahead_param_t read_ahead;
blk_multi_seek_point_read_ahead_param_t multi_seek_point_read_ahead;
} buffer_param_t;
typedef union buffer_member_s
{
blk_bypass_member_t bypass;
blk_read_ahead_member_t read_ahead;
blk_multi_seek_point_read_ahead_member_t multi_seek_point_read_ahead;
} buffer_member_t;
typedef struct buffer_descriptor_s
{
buffer_type_t type;
union
{
blk_bypass_param_t bypass;
blk_read_ahead_param_t read_ahead;
blk_multi_seek_point_read_ahead_param_t multi_seek_point_read_ahead;
}param;
} buffer_descriptor_t;
typedef struct buffer_status_s
{
size_t refill_unit_size;
size_t bytes_available;
int error;
} buffer_status_t;
typedef struct av_buffer_s
{
buffer_param_t *params;
buffer_member_t *members;
int status;
} av_buffer_t;
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?