当前位置: 首页 > news >正文

音视频开发继续学习

RGA模块

RGA模块定义

RGA模块是RV1126用于2D图像的裁剪、缩放、旋转、镜像、图片叠加等格式转换的模块。比方说:要把一个原分辨率1920 * 1080的视频压缩成1280 * 720的视频,此时就要用到RGA模块了。

RGA模块结构体定义

RGA区域属性结构体

imgType:图像格式类型

u32X:RGA的X轴坐标

u32Y:RGA的Y轴坐标

u32Width:RGA的宽度

u32Height:RGA的高度

u32HorStride:虚宽,一般和宽度一样

u32VirStride:虚高,一般和高度一样

 

rga属性结构体

stImgIn:输入图像信息,一般填写的是原分辨率参数。比方说CMOS摄像头分辨率是1920*1080,则stImgIn分辨率就是1920*1080

stImgOut:输出图像信息,一般填写的是原分辨率参数。比方说要输出的是1280 * 720,则stImgOut分辨率就是1280 * 720

u16Rotation: 旋转角度,取值范围0, 90 ,180, 270

bEnBufPool使能缓冲池

u16BufPoolCnt:缓冲池计数

获取RGA的数据并保存

步骤如下:

初始化VI模块

设置VI模块并使能

启动VI模块

初始化RGA模块

 

绑定VI和RGA模块

 

创建线程

 

销毁 

视频编码原理讲解一:VCL层和NAL层的讲解

视频为什么要编码

在我们做音视频产品的时候,经常会把音视频数据进行网络传输,而此时音视频数据就需要进行编码(所谓编码就是指压缩)。因为在网络传输的时候,网络带宽有限,若此时网络传输的时候还用原始数据进行传输的时候,则会对网络带宽造成极大的负担。比方说一个分辨率为1280 * 720 帧率为30帧的视频,按照YUV420格式的计算,它每秒传输的数据量就是1280* 720* 30 * 3/2 ~= 39.5M,这个数据量是极其惊人的。所以此时,我们就要引入视频编码技术来压缩视频,让其体积大小能够大幅度缩小,这样在网络传输的时候就会大大降低网络负担。在音视频开发中,一般分为H264、H265这两种最常见的编码格式。H264的压缩比能够达到1:100,H265的压缩比能够达到1:200,但是目前业内由于HEVC技术还没完全成熟,所以绝大部分设备都是用H264进行压缩处理。

VCL层和NAL层的讲解

H264编码格式是目前业内最流行的视频编码格式,它是MPEG-4的第十个部分。H264具有高压缩率、高图像质量、网络适应性很强等特点。在同等的图像质量下,H264的压缩比远超绝大部分编码格式(HEVC除外)。在H264(HEVC)编码框架中分为两大层,一层是VCL(Video Coding Layer)、另外一层是NAL层(Network Abstraction Layer)。VCL层主要负责内容的表示(如下图),NAL层主要负责对H264数据进行打包和传输.

VCL层的知识点 

帧内压缩

也称之为空间压缩,当压缩一张图片的时候,若仅仅考虑帧的数据也不考虑相邻帧和帧之间的冗余数据,这样的方式就叫帧内压缩。在H264中I帧生成的原理就是帧内压缩,帧内压缩可以独立解码出一帧完整的图像而不需要参考任何帧,帧内压缩表现出来的数据是最大16 x 16的宏块(它也包括:4x4,8x8)。帧内压缩本质上是在空间的XY轴上进行压缩,它的压缩率比较小。下面9张图是9种不同的预测方式.

帧间压缩

帧间压缩是通过对比相邻两帧之间的数据进行压缩,并且进一步提高压缩量。用这种方法可以先编码出一个完整的图像1帧,紧接着2帧的数据就不编码出一张完整的图像,而是只写入和1帧的不同的数据,这样2帧数据的大小则会大大降低。以此类推,3帧的数据参考2帧数据,并且也只写入2帧不同的数据,帧间压缩表现出来的数据同样也是最大16 x 16的宏块(它也包括:4x4,8x8)。按照这样的方法,不停地循环下去。这样的方式,就是P帧B帧的实现方法。

变换量化

为了要让压缩的H264图像在网络传输中节省更多的码率,需要采用变换编码以及量化技术来消除图像信号中的相关性以及减小图像编码中的动态变换范围。变换编码的原理就是把图像时域信号变换成频域信号,在频域范围内,绝大部分信号集中在低频区域,相对时域信号,码率能够大幅度下降。而在H264中通常用下面方法进行处理:H264数据经过帧内压缩(16 * 16亮度、4 * 4亮度、8 * 8亮度)、帧间预测(4 * 4 ~ 16 * 16亮度)得到了残差值。这些残差值需要经过冗余的统计,并进行数据的变换和量化操作。

熵编码

熵编码压缩是一种无损压缩模式,其实现原理是使用的编码模式来表示输入的数据,并达到压缩效果。常用的熵编码方式分别是变长编码(CAVLC)和算术编码(CABAC)。

变长编码(CAVLC):对出现概率大的符号,对出现概率小的符号提供长字节二进制码

算术编码(CABAC):采用一个浮点数代替一串输入符号,范围是[0,1)

具体的参考(https://blog.csdn.net/yanceyxin/article/details/82965656)

CABAC的编码压缩率远远大于CAVLC,CABAC具有更高的编码效果。

 视频编码原理讲解二:H264重点帧和GOP的讲解

帧的概念

在视频中,帧是视频传输的最小单位。一帧实际上静态图片,视频本质上是由连续的静态图片组成,我们经常耳熟能详的30帧、60帧实际上指的就是静态图片的数量。比方说30帧:它指的是1秒内有30张静态图片;而60帧,它指的是1秒内有60张静态图片。换言之,帧率越高,它所生成的静态图片就越多,视频质量就越好、视频的流畅度也更好。

 I帧

I帧就是我们常说的关键帧(NALU:00 00 00 01 65),它不需要参考任何帧就可以拥有一副完整的画面。

 P帧

P帧是前向预测帧,它需要根据本帧和相邻的前一帧(I帧或P帧)的不同点来压缩本帧数据。下面是P帧的图解:

从上面这张图我们可以看出来,P帧(1号)的压缩数据需要参考I帧的数据进行视频的压缩,而P帧(2号)需要参考P帧(1号)的数据进行视频压缩。换言之,P帧它需要不停地参考前面帧的数据才能够压缩本帧数据。

B帧

B帧属于双向预测的帧,它需要根据相邻的前一帧数据、以及后一帧数据的不同点来压缩本帧,换言之B帧只记录本帧和前后帧的差值。B帧的压缩比是三种帧里面最高的,压缩比能够达到200:1。B帧常用在高清电影的和蓝光影响的录制。

 

GOP的概念

GOP(Group of Pictures,中文名称是图像组)它是把一个图像序列中连续几个图像组成一个小组,它本质上是两个I帧的距离。通常来说,GOP的长度越长P帧/B帧的数量就会越多,压缩比更高,画面质量越好,所以在音视频开发中经常会用GOP的长度来改善画面质量。

闭合GOP

闭合GOP是指不对外开放的GOP结构,它的特点是GOP内的帧不可以参考其前后其他的帧,闭合GOP一般都是以I帧开头

开放GOP

允许其内的帧参考其他GOP内的帧,一般而言在有B帧的情况下才会出现open-gop

GOP的设置

一般是帧率的整数倍。比方说视频的帧率是30帧,则GOP的长度最好设置为30、60等。若帧率是60,则把GOP设置为60、120等。

视频编码原理讲解三:视频码率和视频码率控制模式

码率的概念

视频码率是数据传输时单位时间内传输的数据位数,对于视频来说视频码率的单位是kbps(千比特率)每秒。简单说,码率就是取样率,码率越高画面质量精度越高,处理的文件或者码流就越接近原始文件。视频码率传输的大小跟分辨率是息息相关的

什么是码率控制模式 

码率控制指的是利用编码中的一些特殊手段控制图像的压缩比例,使其画面质量在不同的场景中保持一个最优的状态。RV1126的码率控制方式,总共分为三种:分别是CBR固定码率控制模式、VBR可变码率控制模式、AVBR码率控制模式。

CBR固定码率控制模式

CBR指的是固定比特率,它指的是在统计时间内编码码率处于平稳状态。这种方式的特点是码率调节会相对比较缓慢,它不会跟着图像的质量的波动去改变码率。CBR控制模式一般用于网络流媒体视频编码。CBR的优点在于压缩速度非常快,并且码率很平稳不会出现码率跳变的情况。但缺点也很明显,就是它不会根据画面的波动对码率进行节省,这样的话会导致每秒空间的浪费。在RV1126的API里面,CBR一般用平均比特率去表示。

VBR可变码率控制模式

VBR指的是动态码率,它的作用是在统计时间内允许编码编率出现波动,这种波动可以使得编码图像质量变高。VBR的特点是它是随着图像的复杂程度的不同而变化。假设在编码到简单图像的时候它会节省码率,而如果编码到一些相对复杂的图像它的码率将会提升,VBR模式一般使用在DVD、蓝光、HD录播上面。VBR同样也有优缺点,VBR的优点是它的尽可能保证整个图像编码质量,利用VBR编码的图像很少会出现马赛克、画面丢失的情况。但缺点同样也很明显,使用VBR编码出来的图像它的体积是不固定的。所以,它会根据画面的复杂程度去决定视频文件的大小,另外还有的是使用VBR进行编码的时候它的编码算法复杂度会变高,这就会导致解码端的复杂度升高。

AVBR码率控制模式

AVBR全称叫适配式可变码率控制方式,它的很多思想跟VBR基本上是一致的。但它比VBR强大的一点是这种控制方式能够自动检测当前编码场景是静止画面还是运动画面。若当前画面是静止画面则会主动降低码率、若当前画面是运动画面则会把码率主动提升。AVBR适用于当前编码视频静止画面运动画面频繁出现的场景,所以AVBR码率控制方式经常用在大型体育比赛上面。

RV1126的视频编码模块的讲解

VENC模块的介绍

VENC模块是RV1126专门用于视频编码的模块,VENC模块提供了多种编码方式,分别是:H264/H265/MJPEG/JPEG。而在此次编码模块中,我们重点是讲解H264、H265编码模块(MJPEG/JPEG用的不多,所以就不作详细讲解)。

VENC结构体的定义

VENC_CHN_ATTRS是管理整个VENC模块的管理结构体,这里面它包含三个VENC子类结构体:分别是VENC_ATTR_S结构体(编码器基础属性结构体)、VENC_RC_ATTR_S结构体(编码码率控制属性结构体)、VENC_GOP_ATTR_S结构体(编码器GOP属性结构体)。

VENC_ATTR_S结构体(编码器基础属性结构体)

这个结构体主要是设置编码器的基础属性,比方说:分辨率、编码器类型、Profile等等

enType

编码器协议类型,下面是画框部分就是它支持的视频编码类型:包括RK_CODEC_TYPE_H264、RK_CODEC_TYPE_H265、RK_CODEC_TYPE_JPEG、RK_CODEC_TYPE_MJPEG

 imageType

输入图像类型,venc的imageType和VI的imageType必须保持一致

u32VirWidth

编码图像的虚宽,一般虚宽和宽度保持一致

u32VirHeight

编码图像的高度,一般高度和高度保持一致

 u32Profile

H264支持66:baseline、77: MP、100:HP。H265支持default:Main;

 bByFrame

RW,范围是[0,1],默认是0

u32PicWidth

编码图像宽度

 u32PicHeight

编码图像高度

enRotation

图像旋转角度,VENC_ROTATION_0, VENC_ROTATION_90, VENC_ROTATION_180,VENC_ROTATION_270。

编码器额外属性

VENC_ATTR_H264_S、VENC_ATTR_H265_S、VENC_ATTR_MJPEG_S、VENC_ATTR_JPEG_S

VENC_RC_ATTR_S结构体(编码码率控制属性结构体)

这个结构体主要设置码率控制属性,这其中包括:enRcMode、stH264Cbr(H264的CBR码率控制模式)、stH264Vbr(H264的VBR码率控制模式)、stH264Avbr(H264的AVBR码率控制模式)、stMJpegCbr(MJPEG的CBR模式)、stMJpegVbr(MJPEG的VBR模式)、stH265Cbr(H265的CBR码率控制模式)、stH265Vbr(H265的VBR码率控制模式)、stH265Avbr(H265的AVBR码率控制模式)

enRcMode:码率控制类型,下面是不同编码的控制码率类型(注意:编码类型必须要和码率控制的编码类型要一致,比方说:若enType是H264,那enRcMode对应的码率控制结构体是stH264Cbr、stH264Vbr、stH264Avbr结构体)。

 

 

2.2.6.1. u32SrcFrameRateNum:数据源帧率分子

2.2.6.2.u32SrcFrameRateDen:数据源帧率分母

2.2.6.3.u32DstFrameRateNum:目标帧率分子

2.2.6.4. u32DstFrameRateDen:目标帧率分子

2.2.6.5. u32BitRate:平均码率,取值范围[2000, 98000000]bps(比特数)

2.2.8. stH265Cbr:H265的CBR码率控制结构体

VENC_H265_CBR_S结构体的参数和VENC_H264_CBR_S参数一致

2.2.9. stH265Vbr:H265的VBR码率控制结构体

VENC_H265_VBR_S结构体的参数和VENC_H264_VBR_S参数一致

2.2.10. stH265AVbr:H265的VBR码率控制结构体

VENC_H265_AVBR_S结构体的参数和VENC_H264_AVBR_S参数一致

VENC_GOP_ATTR_S结构体(编码器GOP属性结构体)

这个结构体主要是设置编码器的GOP属性

2.3.1.1. VENC_GOPMODE_NORMALP:普通GOP模式

2.3.1.2. VENC_GOPMODE_TSVC:TSVC模式

2.3.1.3. VENC_GOPMODE_SMARTP:智能SMARTP模式

2.3.2. u32GopSize:编码GOP大小,可以理解为关键帧间隔数量

2.3.3. s32IPQpDelta:I帧相对于P帧的QP差值

2.3.4. u32BgInterval:长期参考帧间隔(SMARTP模式才会用到)

2.3.5. s32ViQpDelta:虚拟I帧相对于普通P帧的QP差值

通过多线程获取VENC的H264码流数据

步骤流程

VI模块不在演示,跟上面都是一样的

初始话VENC模块

绑定VI和VENC模块

创建线程

销毁

H265码流结构的分析 

H265的优势和特点

H265编码(也称之为HEVC编码),它是继H264之后所制定的一个全新的视频编码标准。H265保留了许多H264的技术,并在H264的基础上使用了全新的技术来改善编码质量和画面质量。H265的优势在于超高的压缩比(压缩比高达1:200)编码超高清的分辨率,如:4K分辨率(3840 * 2160)、8K分辨率(7680 * 4320),一般只有在编码超高清分辨率的时候才会用到H265编码,普通的分辨率如:1920 * 1080以下的分辨率只需要H264即可(这是由于H265虽然压缩比非常高,但是它的算法复杂程度也远超H264,对于一般播放器来说CPU运算也过于复杂)。

H265的帧内预测

H265的帧内预测比H264更加灵活,H264帧内预测只支持16 * 16的宏块。但是H265能够支持支持多种尺寸的宏块预测,包括4 * 48 * 816 * 1632 * 32多种宏块的预测。 下面我们来看看,两种编码格式的区别。

通过多线程同时获取H264和H265码流

步骤流程

初始化VI模块

初始化H264

初始化H265

绑定VI和H264

绑定VI和H265

创建线程

相关文章:

音视频开发继续学习

RGA模块 RGA模块定义 RGA模块是RV1126用于2D图像的裁剪、缩放、旋转、镜像、图片叠加等格式转换的模块。比方说:要把一个原分辨率1920 * 1080的视频压缩成1280 * 720的视频,此时就要用到RGA模块了。 RGA模块结构体定义 RGA区域属性结构体 imgType&am…...

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task1:智能编程助手(持续更新)

在一个数据驱动的世界里,人工智能的未来应由每一个愿意学习和探索的人共同塑造和掌握。希望这里是你实现AI梦想的起点。 大模型小白入门:https://linklearner.com/activity/14/11/25 大模型开发工程师能力测试:https://linklearner.com/activ…...

如何判断监控设备是否支持语音对讲

目录 一、大华摄像机 二、海康摄像机 三、宇视摄像机 一、大华摄像机 注意:大华摄像机支持跨网语音对讲,即设备和服务器可以不在同一网络内,大华设备的语音通道填写:34020000001370000001 配置接入示例: 音频输入…...

Grafana+Influxdb(Prometheus)+Apache Jmeter搭建可视化性能测试监控平台

此性能测试监控平台,架构可以是: GrafanaInfluxdbJmeterGrafanaPrometheusJmeter Influxdb和Prometheus在这里都是时序性数据库 在测试环境中,压测数据对存储和持久化的要求不高,所以这里的组件可以都通过docker-compose.yml文件…...

【笔记】MSPM0G3507移植RT-Thread——MSPM0G3507与RT_Thread(二)

一.创建新工程 找到"driverlib\empty"空白工程,CTRLC然后CTRLV复制副本 重命名为G3507_RTT 打开KEIL工程 双击empty.syscfg,然后打开SYSCONFIG 我的不知道为啥没有48pin选项,如果你也一样,可以跟着我做,如果…...

计算机毕业设计 美发管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

soapui调用接口参数传递嵌套xml,多层CDATA表达形式验证

1.环境信息 开发工具:idea 接口测试工具:soapui 编程语言:java 项目环境:jdk1.8 webservice:jdk自带的jws 处理xml:jdk自带的jaxb 2.涉及代码 package org.example.webdemo;import javax.jws.WebMethod; i…...

GB/T35561-2017d,GB/T38565-2020,ocr解析文本

因系统需要只找到pdf版本,解析一版记录 GB/T35561-2017d 10000 , 自然灾害 10100 , 水旱灾害 10101 , 洪水 10102 , 内涝 10103 , 水库重大险情 10104 , 堤防重大险情 10105 , 凌汛 10106 , 山洪 10107 , 农业干旱 10108 , 城镇缺水 10109 , 生态干旱 10110 , 农村…...

IDEA使用LiveTemplate快速生成方法注释

本文目标:开发人员,在了解利用Live Template动态获取方法输入输出参数、创建日期时间方法的条件下,进行自动生成方法注释,达到自动添加方法注释的程度; 文章目录 1 场景2 要点2.1 新增LiveTemplate模版2.2 模版内容填写…...

慢SQL优化

1、避免使用select * select * 不会走覆盖索引,会出现大量的回表操作,从而导致查询sql的性能很低。 --反例 select * from user where id 1;--正例 select name,age from user where id 1;2、union all 代替 union union:去重后的数据…...

MES生产执行系统源码,支持 SaaS 多租户,技术架构:springboot + vue-element-plus-admin

MES的定义与功能 MES是制造业中一种重要的管理信息系统,用于协调和监控整个生产过程。它通过收集、分析和处理各种生产数据,实现对生产流程的实时跟踪和监控,并为决策者提供准确的数据支持。MES涵盖了工厂运营、计划排程、质量管理、设备维护…...

【Linux】分析hung_panic生成的vmcore

简介 1、遇到一个问题: 上述日志是oom_kill,下述日志是hung_panic 2、分别解释两层含义,全部日志如下: [75834.243209] kodo invoked oom-killer: gfp_mask0x600040(GFP_NOFS), order0, oom_score_adj968 [75834.245657] CPU: 0…...

unity 画线写字

效果 1.界面设置 2.涉及两个脚本UIDraw.cs和UIDrawLine.cs UIDraw.cs using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class UIDraw : MonoBehaviour, IPointerEnterHandler, IPointerEx…...

GitHub的详细介绍

GitHub是一个面向开源及私有软件项目的托管平台,它建立在Git这个分布式版本控制系统之上,为开发者提供了在云端存储、管理和共享代码的便捷方式。以下是对GitHub的详细介绍: ### 一、GitHub的基本功能 1. **代码托管**:GitHub允…...

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面之Tabs(三)

学完时间:2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课,人数又成功的降了500名左右,到了3575人了。 本文接上一文章【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一),继续记录构建更…...

Detectron2 安装指南

文章目录 前言Detectron2官方文档官方指南 安装 Detectron2虚拟环境安装 PyTorch安装 Detectron2 总结 前言 Detectron2 是 Meta AI 的一个机器视觉相关的库,建立在 Detectron 和 maskrcnn-benchmark 基础之上,可以进行目标检测、语义分割、全景分割&am…...

亚马逊 Linux mysql5.7 安装纪录

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz cp /home/admin/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql #解压压缩包 tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 重命名mysql-…...

ZLMediaKit编译webrtc

ZLMediaKit官方文档写的挺详细的,但是也不算特别详细。 按照上面的文档,执行到cmake的时候,会提示“srtp 未找到, WebRTC 相关功能打开失败”,但是cmke还是可以继续啊。此时看文档说webrtc比较复杂,默认是不编译的&am…...

KEEPALIVED高可用集群最详解

目录 一、高可用集群 1.1 集群的类型 1.2 实现高可用 1.3 VRRP:Virtual Router Redundancy Protocol 1.3.1 VRRP相关术语 1.5.2 VRRP 相关技术 二、部署KEEPALIVED 2.1 keepalived 简介 2.2 Keepalived 架构 2.3 Keepalived 环境准备 2.3.1 实验环境 2…...

【大模型】llama-factory基础学习

前言:LLaMA-Factory项目的目标是整合主流的各种高效训练微调技术,适配市场主流开源模型,形成一个功能丰富,适配性好的训练框架。 目录 1. 前期准备2. 原始模型直接推理3. 自定义数据集4. 模型训练5. 模型合并并导出 1. 前期准备 …...

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

JDBC的原理 JDBC(Java Database Connectivity)是Java提供的用于连接和操作数据库的API。它允许Java应用程序与各种数据库进行交互,以下是JDBC的基本原理: 驱动程序管理:JDBC使用不同的数据库驱动程序来连接不同类型的…...

新手学习VR全景需要知道的几个问题

1.什么是720云 720云是一家专注于VR全景内容制作与展示的技术平台,提供从拍摄、编辑到发布的一站式解决方案。它的核心功能包括全景图像的制作和编辑工具,以及VR全景内容的在线展示和分享服务。720云的技术广泛应用于房地产、旅游、教育、文化展示等多个…...

上海知名泌尿外科专家常态化坐诊黄山新晨医院,让前列腺癌看得更早、更准!

继7月28日上海第四人民医院泌尿外科专家在黄山新晨医院开展义诊之后,8月9日和10日,该团队领头人周铁教授又完成了合作以来的首次坐诊,标志着双方合作从此进入常态化阶段。 周铁主任在查看患者的检查报告 周铁主任曾任中华医学会泌尿外科分会…...

Elasticsearch: 非结构化的数据搜索

r很多大数据组件在快速原型时期都是Java实现,后来因为GC不可控、内存或者向量化等等各种各样的问题换到了C,比如zookeeper->nuraft(https://www.yuque.com/treblez/qksu6c/hu1fuu71hgwanq8o?singleDoc# 《olap/clickhouse keeper 一致性协调服务》)&…...

44 个 React 前端面试问题

1.你知道哪些React hooks? useState:用于管理功能组件中的状态。useEffect:用于在功能组件中执行副作用,例如获取数据或订阅事件。useContext:用于访问功能组件内的 React 上下文的值。useRef:用于创建对跨…...

LLMs之Framework:Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析

LLMs之Framework:Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析 导读:该文章阐述了FSDP和DeepSpeed在实现上的差异,Accelerate如何统一它们的行为,并提供指导帮助用户在两种后端之间切换。同时也讨论了低精度优化…...

HarmonyOS应用开发学习-ArkTs声明式UI描述

ArkTs声明式UI描述 1 创建组件 声明式UI描述 ArKTS以声明方式组合和扩展组件来描述应用程序的UI,同时还提供了基本的属性、事件和子组件配置方法,帮助开发者实现应用交互逻辑 创建组件 根据组件构造方法的不同,创建组件包含有参数和无参…...

Redis20-通信协议

目录 RESP协议 概述 数据类型 模拟Redis客户端 RESP协议 概述 Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub): 客户端(client)向服务端(server)发送一条命…...

Unity Shader变体优化与故障排除技巧

在 Unity 中编写着色器时,我们可以方便地在一个源文件中包含多个特性、通道和分支逻辑。在构建时,着色器源文件会被编译成着色器程序,这些程序包含一个或多个变体。变体是该着色器在满足一组条件后生成的版本,这通常会导致线性执行…...

数据结构——时间复杂度和空间复杂度

目录 时间复杂度 什么是时间复杂度 常见时间复杂度类型 如何计算时间复杂度 空间复杂度 什么是空间复杂度 常见的空间复杂度类型 如何计算空间复杂度 时间复杂度和空间复杂度是评估算法性能的两个重要指标。 时间复杂度 什么是时间复杂度 时间复杂度描述了算法执行所需…...

如何做网站定位/百度搜索资源平台提交

讲解第一模块思维导图(口述5分钟)1. 分别解释"","",""的含义(口述)(1分钟)赋值逻辑判单累加,右边赋值到左边2. 两个变量值的关系?(口述)(1分钟)- n1 123456- n2 n1n1的值123456赋给了n2,如果n1的值被从新赋值…...

做网站工资多少/seo人员的职责

$.ajax({ //以下属性值均为可选 type: "POST", //默认值: "GET")。请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部…...

网站托管是什么/医院营销策略的具体方法

再游洛带有感——代腾飞 2007年9月15日 于成都今游古镇到洛带恍然忽至回唐朝身穿古装成侠客浪迹江湖甚逍遥...

优秀个人网站设计/网站设计公司哪家专业

在.NET里,客户端与服务端进行数据交互我想大多数朋友都遇到过这样的问题,语言不同,又怎么来实现交互呢.客户端的 JavaScript是弱类型语言,服务端是强类型语言(如:C#,VB.NET,VC,J#等).两个不同语言之间的交互是不是要借助于别的东西呢.我在这里可以告诉大家的是:答案不一定,但是…...

网站支持asp/杭州seo技术培训

iOS 获取图片有三种方法: 1. 直接调用摄像头拍照 2. 从相册中选择 3. 从图库中选择 UIImagePickerController 是系统提供的用来获取图片和视频的接口; 用UIImagePickerController 类来获取图片视频,大体分为以下几个步骤: 1. 初始…...

做旅游销售网站平台ppt/整合营销活动策划方案

如果营收阶段证明的是商业模式,那么规模化阶段证明的就是市场的大小。 中间的空洞 公司可重点关注某利基市场(市场细分策略),也可以追求更高的效率(低成本策略),或是试图变得与众不同&#xf…...