SDL 显示解码后的yuv12数据
在上篇h264解码为yuv12后http://jhlong12345.blog.163.com/blog/static/1230631292015725115058709/
,需要显示出来,使用sdl比较方便,网上没C#的例子,全是C++的,
SDL_LockYUVOverlay(overlay);
memcpy(overlay->pixels[], y_video_data, w * h);
memcpy(overlay->pixels[], u_video_data, w * h / );
memcpy(overlay->pixels[], v_video_data, w * h / );
SDL_UnlockYUVOverlay(overlay);
这里贴出来研究很久才做出来的C#代码
if (H264Dec.Hi264DecAU(_decHandle, pH264Data, frameLen, , ref _decodeFrame, ) == )
{
IntPtr[] ips = new IntPtr[] { _decodeFrame.pY, _decodeFrame.pV,_decodeFrame.pU }; //U(Cb)分量 V(Cr)分量
object obj = Marshal.PtrToStructure(yuv, typeof(Sdl.SDL_Overlay)); //在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)
Sdl.SDL_Overlay overlayYuv = (Sdl.SDL_Overlay)obj;
Sdl.SDL_LockYUVOverlay(yuv);
GCHandle hObject = GCHandle.Alloc(ips, GCHandleType.Pinned);
IntPtr pObject = hObject.AddrOfPinnedObject();
overlayYuv.pixels = pObject;
Marshal.StructureToPtr(overlayYuv, yuv, true);
Sdl.SDL_UnlockYUVOverlay(yuv);
Sdl.SDL_DisplayYUVOverlay(yuv, ref rect);
//画点文字图形啥的
Sdl.SDL_Flip(surfacePtr);
Sdl.SDL_UpdateRect(surfacePtr, , , rect.w, rect.h);
if (hObject.IsAllocated)
hObject.Free();
}
其中 IntPtr yuv = Sdl.SDL_CreateYUVOverlay(width, height, Sdl.SDL_YV12_OVERLAY, surfacePtr);
SDL 显示解码后的yuv12数据的更多相关文章
- 用libvlc 抓取解码后的帧数据
vlc是一套优秀的开源媒体库,其特点是提供了完整的流媒体框架, 用它可以非常方便的实现抓取解码帧的功能. 与此功能有关的关键API为 libvlc_video_set_callbacks /*设置回调 ...
- 嵌入式linux------ffmpeg移植 解码H264(am335x解码H264到yuv420并通过SDL显示)
/* 编译命令:arm-linux-gcc -o show2642 264showyuv2.c -I/usr/local/ffmpeg_arm/include/ -L/usr/local/ffmpeg ...
- FFMPEG结构体分析:AVFrame(解码后的数据)
https://blog.csdn.net/jxcr1984/article/details/52766524 本文转自: http://blog.csdn.net/leixiaohua1020/ar ...
- ls显示前几行或后几行数据
显示前3行数据 ls -l|head -n 3 显示后3行数据 ls -l|tail -n 3
- FFMPEG的解码后的数据格式
这两天在阅读电视转发服务器中的流媒体底层库的源码时,在看到显示部分的时候,遇到了一些疑问: 就是在用d3d做显示时候,我们显示的数据格式,指定为yv12,对于YV12的数据格式在内存中的分布,可以参考 ...
- SDL显示文字
前面教程里,我们只显示图片,没提到如何显示文字, SDL本身没有显示文字功能,它需要用扩展库SDL_ttf来显示文字.ttf是True Type Font的缩写,ttf是Windows下的缺省字体,它 ...
- PDO exec 执行时出错后如果修改数据会被还原?
PDO exec 执行时出错后如果修改数据会被还原? 现象 FastAdmin 更新了 1127 版本,但是使用在线安装方式出现无法修改管理员密码的问题. 一直是默认的 admin 123456 密码 ...
- Linux 意外操作后如何进行数据抢救
Linux 意外操作后如何进行数据抢救 在 GUI 中使用 shift + delete 组合键或是 CLI 下使用 rm -rf 删除选项,这个文件并没有从硬盘(或是其它存储设备)上彻底销毁.当 ...
- Activity 事件以及如何得到新打开Activity关闭后返回的数据
1: package com.example.activity_basic; 2: 3: import android.os.Bundle; 4: import android.app.Activ ...
随机推荐
- 魔改——MFC SDI 支持 内嵌 EXCEL OLE
==================================声明================================== 本文版权归作者所有 未经作者授权 请勿转载 保留法律追究的 ...
- PHP函数整理(二)
以下均参考自 php.net 1.curl_setopt_array() 此函数为CURL传输会话批量设置选项.这个函数对于需要设置大量的curl选项是非常有用的,不需要重复的调用curl_setop ...
- 图像处理工具V1.0
图像处理工具V1.0(仿彗星图片处理工具.VS2015安装界面)----个人无聊作品 以下是界面: 部分代码一.(摘自网络----加水印代码): public static void ImageWat ...
- Vijos P1196吃糖果游戏[组合游戏]
描述 Matrix67和Shadow正在做一个小游戏. 桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作.在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两堆( ...
- POJ3160 Father Christmas flymouse[强连通分量 缩点 DP]
Father Christmas flymouse Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 3241 Accep ...
- NOI2001|POJ1182食物链[种类并查集 向量]
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65430 Accepted: 19283 Description ...
- Unity UI on hololens
http://heliosinteractive.com/scaling-ui-hololens/ https://forum.unity3d.com/threads/unity-ui-on-the- ...
- MVC FormCollection collection
1.通过name获取值 collection.GetValues() 返回一个数组,适用于多选等,如果是单值可以[0] 2.直接转化为实体 将Action动作中传递的FormCollection转变成 ...
- JSP基础学习
JQuery教程: http://www.w3school.com.cn/jquery/ HTTP协议的 http://www.w3.org/Protocols/rfc2616/rfc2616.htm ...
- JS组件系列——Form表单验证神器: BootstrapValidator
前言:做Web开发的我们,表单验证是再常见不过的需求了.友好的错误提示能增加用户体验.博主搜索bootstrap表单验证,搜到的结果大部分都是文中的主题:bootstrapvalidator.今天就来 ...