c – avcodec YUV到RGB
发布时间:2020-12-16 07:09:23 所属栏目:百科 来源:网络整理
导读:我正在尝试使用libswscale将YUV帧转换为RGB. 这是我的代码: AVFrame *RGBFrame;SwsContext *ConversionContext;ConversionContext = sws_getCachedContext(NULL,FrameWidth,FrameHeight,AV_PIX_FMT_YUV420P,AV_PIX_FMT_RGB24,SWS_BILINEAR,0);RGBFrame = av
我正在尝试使用libswscale将YUV帧转换为RGB.
这是我的代码: AVFrame *RGBFrame; SwsContext *ConversionContext; ConversionContext = sws_getCachedContext(NULL,FrameWidth,FrameHeight,AV_PIX_FMT_YUV420P,AV_PIX_FMT_RGB24,SWS_BILINEAR,0); RGBFrame = av_frame_alloc(); avpicture_fill((AVPicture *)RGBFrame,&FillVect[0],FrameHeight); sws_scale(ConversionContext,VideoFrame->data,VideoFrame->linesize,VideoFrame->height,RGBFrame->data,RGBFrame->linesize); 我的程序在sws_scale函数上执行SEGFAULT. VideoFrame是一个AVFrame结构,它保存我的解码帧. 我认为这是因为YUV帧来自avcodec_decode_video2,它返回一个如下数组: VideoFrame->data[0] // Y array,linesize = frame width VideoFrame->data[1] // U array,linesize = frame width/2 VideoFrame->data[2] // V array,linesize = frame width/2 虽然YUV420P理论上只有一个平面(根据维基百科,YUV420P是平面格式,然后Y,U,V数据被组合在一起). 请帮帮我,谢谢:) 解决方法
av_frame_alloc仅为帧对象本身分配内存,它不分配内存来存储图像数据.你完成了吗:
FillVect.resize(avpicture_get_size(PIX_FMT_RGB24,FrameHeight)); 在调用avpicture_fill之前,代码中的某个地方?或者其他一些方法来确保FillVect分配足够的内存来保存整个解码图片? 您是否尝试在valgrind下运行它以查看究竟是什么触发了SEGFAULT? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- cocos2d-js动作的连续
- 如何同步和优化Oracle文本索引?
- react如何性能达到最大化(前传),暨react为啥非得使用immut
- c# – 如何禁用骆驼套装NEST中的弹性搜索字段名称?
- ajax亦步刷新时,会导致某些javascript的失效解决方法
- VB6.0用GDI+保存图像为BMP\JPG\PNG\GIF格式终结
- ruby-on-rails – 如何将一些参数传递给默认的渲染方法?
- 学霸的自学笔记!MATERIAL DESIGN设计规范学习心得
- nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带
- malloc在一个循环中,都是连续分配的块?