草庐IT

c++ - rgb转yuv420算法效率

我编写了一个算法来将RGB图像转换为YUV420。我花了很长时间试图让它更快,但我还没有找到任何其他方法来提高它的效率,所以现在我求助于你,你可以告诉我这是否和我得到的一样好,或者是否还有其他更有效的方法方法(算法在C++中,但C和汇编器也是选项)namespace{//lookuptablesintlookup_m_94[]={0,-94,-188,-282,-376,-470,-564,-658,-752,-846,-940,-1034,-1128,-1222,-1316,-1410,-1504,-1598,-1692,-1786,-1880,-1974,-2068,-2162,-

c++ - rgb转yuv420算法效率

我编写了一个算法来将RGB图像转换为YUV420。我花了很长时间试图让它更快,但我还没有找到任何其他方法来提高它的效率,所以现在我求助于你,你可以告诉我这是否和我得到的一样好,或者是否还有其他更有效的方法方法(算法在C++中,但C和汇编器也是选项)namespace{//lookuptablesintlookup_m_94[]={0,-94,-188,-282,-376,-470,-564,-658,-752,-846,-940,-1034,-1128,-1222,-1316,-1410,-1504,-1598,-1692,-1786,-1880,-1974,-2068,-2162,-

Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)

一、前言采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑配置另当别论),这就需要考虑用opengl来绘制了,采用opengl走的GPU,会占用很少的CPU(一般是部分运算),而且一般ffmpeg采集到的就是yuv数据,可以直接用opengl来绘制,并不需要转成rgb格式的图片,转换也会占用不少的CPU资源。在Qt中一般用QOpenGLWidget来绘制yuv数据,正常解码后的yuv420p格式以及硬解码后的NV12格式,这两种需要不同的代码去绘制,所以考虑可以

Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)

一、前言采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑配置另当别论),这就需要考虑用opengl来绘制了,采用opengl走的GPU,会占用很少的CPU(一般是部分运算),而且一般ffmpeg采集到的就是yuv数据,可以直接用opengl来绘制,并不需要转成rgb格式的图片,转换也会占用不少的CPU资源。在Qt中一般用QOpenGLWidget来绘制yuv数据,正常解码后的yuv420p格式以及硬解码后的NV12格式,这两种需要不同的代码去绘制,所以考虑可以

[Ubuntu]Scrcpy+Zeromq实现手机屏幕yuv数据传输,并通过OpenCV实现连续播放——(二)(思路+代码解析)

        Scrcpy在上一篇博客中有所介绍,并且使用Scrcpy实现了手机屏幕yuv数据的提取([Ubuntu]Scrcpy获取手机屏幕yuv数据_又是谁在卷的博客-CSDN博客)。本文将介绍一个当下较为好用的消息中间件—Zeromq。通过Zeromq中间件对数据进行传输,我们最终通过opencv进行内存的数据读取,并实现连续播放的效果。       往下阅读之前,记得看我的往期博客了解如何提取yuv数据呀([Ubuntu]Scrcpy获取手机屏幕yuv数据_又是谁在卷的博客-CSDN博客),这里就不再过多介绍yuv提取的知识了。接下里就开始实现Scrcpy+Zeromq实现手机屏幕y

[Ubuntu]Scrcpy+Zeromq实现手机屏幕yuv数据传输,并通过OpenCV实现连续播放——(二)(思路+代码解析)

        Scrcpy在上一篇博客中有所介绍,并且使用Scrcpy实现了手机屏幕yuv数据的提取([Ubuntu]Scrcpy获取手机屏幕yuv数据_又是谁在卷的博客-CSDN博客)。本文将介绍一个当下较为好用的消息中间件—Zeromq。通过Zeromq中间件对数据进行传输,我们最终通过opencv进行内存的数据读取,并实现连续播放的效果。       往下阅读之前,记得看我的往期博客了解如何提取yuv数据呀([Ubuntu]Scrcpy获取手机屏幕yuv数据_又是谁在卷的博客-CSDN博客),这里就不再过多介绍yuv提取的知识了。接下里就开始实现Scrcpy+Zeromq实现手机屏幕y

用FFmpeg把H264数据流解码成YUV420P

在FFmpeg中,H264在编码前必须要转换成YUV420P,本文就分享一下怎么将h264转成YUV420P。以下就是yuv420:八个像素为:[Y0U0V0][Y1U1V1][Y2U2V2][Y3U3V3][Y5U5V5][Y6U6V6][Y7U7V7][Y8U8V8]码流为:Y0U0Y1Y2U2Y3Y5V5Y6Y7V7Y8映射出的像素点为:[Y0U0V5][Y1U0V5][Y2U2V7][Y3U2V7][Y5U0V5][Y6U0V5][Y7U2V7][Y8U2V7]注意:码流12字节个代表8个像素理解需要画矩阵,如下:码流数据:(4:2:0~4:0:2)Y0U0Y1Y2U2Y3Y5V5Y6

用FFmpeg把H264数据流解码成YUV420P

在FFmpeg中,H264在编码前必须要转换成YUV420P,本文就分享一下怎么将h264转成YUV420P。以下就是yuv420:八个像素为:[Y0U0V0][Y1U1V1][Y2U2V2][Y3U3V3][Y5U5V5][Y6U6V6][Y7U7V7][Y8U8V8]码流为:Y0U0Y1Y2U2Y3Y5V5Y6Y7V7Y8映射出的像素点为:[Y0U0V5][Y1U0V5][Y2U2V7][Y3U2V7][Y5U0V5][Y6U0V5][Y7U2V7][Y8U2V7]注意:码流12字节个代表8个像素理解需要画矩阵,如下:码流数据:(4:2:0~4:0:2)Y0U0Y1Y2U2Y3Y5V5Y6

Android音视频开发:MediaCodec解码视频,得到YUV值,一帧一帧加载到SD卡中保存

一、MediaCodec​MediaCodec类可用于访问低级媒体编解码器,即编码器/解码器组件。它是Android低级多媒体支持基础设施的一部分(通常与MediaExtractor,MediaSync,MediaMuxer,MediaCrypto,MediaDrm,Image,Surface,以及AudioTrack.)。1.1数据类型编解码器处理三种数据:压缩数据、原始音频数据和原始视频数据。​所有这三种数据都可以使用ByteBuffers,但您应该使用Surface用于原始视频数据以提高编解码器性能。Surface使用原生视频缓冲区,而不将其映射或复制到ByteBuffers因此,它的效

Android音视频开发:MediaCodec解码视频,得到YUV值,一帧一帧加载到SD卡中保存

一、MediaCodec​MediaCodec类可用于访问低级媒体编解码器,即编码器/解码器组件。它是Android低级多媒体支持基础设施的一部分(通常与MediaExtractor,MediaSync,MediaMuxer,MediaCrypto,MediaDrm,Image,Surface,以及AudioTrack.)。1.1数据类型编解码器处理三种数据:压缩数据、原始音频数据和原始视频数据。​所有这三种数据都可以使用ByteBuffers,但您应该使用Surface用于原始视频数据以提高编解码器性能。Surface使用原生视频缓冲区,而不将其映射或复制到ByteBuffers因此,它的效