Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources

This commit is contained in:
2026-07-06 11:30:13 +08:00
commit e76462eeb7
3451 changed files with 1415300 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
#ifndef __SCALE_MSI_H
#define __SCALE_MSI_H
#include "stream_frame.h"
#include "basic_include.h"
#include "lib/multimedia/msi.h"
#include "osal/work.h"
#define MAX_SCALE3_TX 3
struct scale_msg_t {
uint16_t iw,ih;
uint16_t ow,oh;
uint16_t x,y;
uint8_t video_only; //多屏显示层专用,用于只显示当前层画面
};
struct scale2_msg_t {
uint16_t stype;
uint16_t iw,ih;
uint16_t ow,oh;
uint16_t x,y;
uint8_t video_only; //多屏显示层专用,用于只显示当前层画面
uint8_t larger;
};
struct scale3_msi_s
{
struct os_work work;
struct scale_device *scale_dev;
struct msi *msi;
uint16_t iw,ih,ow,oh;
struct framebuff *now_fb;
uint8_t *scaler3buf; //scale的buf
struct os_msgqueue msgq;
uint8_t del;
uint8_t txpool_type;
uint8_t init_txpool_num;
struct fbpool tx_pool0;
struct fbpool tx_pool1;
struct fbpool tx_pool2;
struct fbpool tx_poolerr; //用于抛开错误长度或者fb不存在时的抛帧
};
struct const_scale3_msi_s
{
struct msi *msi;
struct scale_device *scale_dev;
uint8_t *buf;
};
#define MAX_SCALE2_TX 4
struct scale2_msi_s
{
struct os_work work;
struct scale_device *scale_dev;
struct msi *msi;
uint16_t iw,ih,ow,oh;
uint16_t stw,sth,x,y; //step w和h显示的video层位置
uint16_t sx,sy; //模块scaler的图像操作启始位置
struct framebuff *now_fb;
struct framebuff *now_fb_msg[MAX_SCALE2_TX]; //预分配的槽位数组用于存放now_fb的指针放入msgq的是槽的地址以便循环复用
uint8_t now_fb_msg_idx;
uint8_t *scaler2buf; //scale的buf
struct os_msgqueue msgq;
uint8_t larger;
uint8_t del;
uint8_t seq;
uint16_t type;
//RBUFFER_DEF(tx_data, struct framebuff *, MAX_SCALE3_TX);
struct fbpool tx_pool;
int mutex_count;
uint32_t filter_type;
};
struct scale1_msi_s
{
struct os_work work;
struct scale_device *scale_dev;
struct dma_device *dma1;
uint16_t iw,ih,ow,oh;
struct msi *msi;
uint8_t *scaler1buf; //scale的buf
uint8_t dma1_lock;
};
typedef int32_t (*scale3_done_fn)(uint32 irq_data);
struct msi *scale2_msi(const char *name, uint16_t iw, uint16_t ih, uint16_t ow, uint16_t oh, uint16_t type,uint8_t larger);
void scale2_output_size_local_change(uint8_t id,uint8_t show_only,uint16 x,uint16 y,uint16 w,uint16 h);
void scale2_output_larger_local_change(uint8_t id, uint8_t larger);
struct msi *scale3_msi(const char *name);
struct msi *scale3_msi_const_buf(const char *name, uint8_t *buf,uint16_t iw, uint16_t ih, uint16_t ow, uint16_t oh);
void scale3_output_size_local_change(uint8_t id,uint8_t show_only,uint16 x,uint16 y,uint16 w,uint16 h);
int scale2_cfg_run(uint8_t streamfrom,uint8_t id);
void scale2_recfg_input_size(uint16_t w,uint16_t h,uint8_t id);
#endif