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 + -
显示快捷键?