博客大管家小废 物
Tutorial02 本篇和Tutorial01的主流程差别不大,只是将’DO SOMETHING WITH frame’从将前5帧保存为PPM文件改为以最快的解码速度将得到的帧播放出来。代码也相当简单,我们直接进入更新。
An ffmpeg and SDL Tutorial在ffmpeg-1.0.1上的更新 Tutorial01 http://cutebunny.blog.51cto.com/blog/301216/1121847 本篇是整个系列的基础,详细介绍了ffmpeg的整个工作流程,以及重要的数据结构。Sample code实现了将视频中的前5帧图像
序言 http://cutebunny.blog.51cto.com/301216/d-8 最近在学习ffmpeg,这的确是一个无比强大的音视频编解码开源库,强大到一些著名的播放器都赫然列在它的Hall of Shame上。可它的缺点是官方没提供什么学习资料,目前网络上能找到的比较经典的也只有Stephen Dranger的那个A
没错,是“漫谈”,而且“漫”得有点乱。然而,抛砖尚可引玉,想到的事情,纵然脉络不是很畅,写下来也不是坏事。开卷有益,动笔也有益。 一切缘自一位C语言开发经验非常丰富的的朋友问我的一个问题。朋友问:“C++中的new在分配内存失败时会抛出异常(std::bad_alloc)而不返回0(一些老的编译器可能还在
我们在第七节http://cutebunny.blog.51cto.com/301216/625577中探讨了如何获取系统中所有磁盘的磁盘号。但是在很多情况下,仅仅是磁盘号并不能满足我们的需求,我们希望在应用程序界面上显示更详细的磁盘信息。通过前面几节的方法,我们已经可以获得许多磁盘信息,例如磁盘大小,柱面,扇区,分区等等。但是如下图所示,我们在设备管理器中看到的“WDC WD1600
最近碰到了个新问题,记录下来作为windows的磁盘操作那个系列的续篇吧。 一些时候我们的程序需要区分本地存储设备和USB存储设备。在网上搜一搜一般会找到一个最直接的API,GetDriveType,其原型为 UINT GetDriveType(LPCTSTR lpRootPathName) 参数lpRootPathName是存储设备的根目录,例如C:\,返回值即为设备类型。
首先我们来看两段简单的程序,如果你不进行编译运行 , 猜一猜结果分别是多少? 程序一 1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4&nb
格式化分区平常在我们看来是再普通不过的操作了,点两下鼠标就可以搞定的事情,但是在程序中实现的的确确不太容易。可能有人说直接调个format命令不就好了,没错,但系统命令存在我们第一节http://cutebunny.blog.51cto.com/301216/624027中阐述的种种问题。 算上format命令,目前我发现有三种方法, 1.Windows API SHFormatDrive。函
有了前几节的基础后,本节给出一个更复杂但却非常实用的例子。 很多情况下,我们想知道当前系统下安装了多少块磁盘,他们的物理驱动器号都是多少,每一块磁盘上有多少个分区,分区号怎么分布,每个分区大小是多少。这就类似于我们打开windows的磁盘管理看到的那种非常清晰的列表。对于后几个问题,我们根据物理驱动器号调用第五节http://cutebunny.blog.51cto.com/30
很多情况下,我们在程序中需要获知操作系统安装在哪个分区上或者哪个物理磁盘上,进而对其进行一些操作或避免一些操作。例如要避免对系统磁盘分区表的删除操作。本节讨论如何获取操作系统所在的逻辑分区号和物理驱动器号。 还是先上代码。 /****************************************************************************** * Fun
本节讨论与上一节相反的操作,根据物理驱动器号获取该磁盘上的所有分区号。DeviceIoControl函数并没有提供操作码来直接完成此操作,所以需要稍微绕个圈子来实现这项功能。 大体思路为,先通过GetLogicalDrives函数获得系统中所有分区号,然后过滤掉非硬盘分区(例如软驱、光驱),再过滤掉不属于指定物理磁盘的分区,最后剩下的就是我们所需要的分区号了。 代码如下 /*
第一节中http://cutebunny.blog.51cto.com/301216/624027我们谈到了磁盘设备名称的两种形式: 对于物理驱动器x,形式为 \\.\PhysicalDriveX,编号从0开始,例如 名称
上一节中介绍了如何初始化一块空白的磁盘,并创建分区。那么对于一块已存在分区的磁盘,我们如何获得其分区信息,如何删除其分区信息呢?本节对这两类操作进行讨论。 获得磁盘分区信息的代码如下。 /****************************************************************************** * Function: get
上一节中我们介绍了一些基本概念和主要的API,本节开始我们将列举并分析一些实例。本文中的所有代码我都在vs2008下测试过,读者只需要替换少量的宏定义即可编译执行。 面对一块新的磁盘,我们首先要做的就是对其初始化。在系统中通过windows的磁盘管理完成这一点非常容易,但在程序中实现略微复杂。本节的示例代码对一块新硬盘初始化,并在上面创建分区。 代码如下: /
最近项目中需要在windows系统下与磁盘打交道,用了一个礼拜时间,弄懂了一些基本的概念,记录于此,并以项目中的部分代码作为范例。 首先说明一点,本文中使用的不是cmd命令行,基于以下几点原因: 1.在C/C++中调用系统命令会存在处理的种种不方便,需要大量额外的代码去分析命令执行结果。 2.windows命令行远不如linux的shell来的强大。 3.效率。 当然,如果不考虑编码,仅
在软件开发过程中,除了用到vc等编译器之外,我们还经常使用一些辅助工具来提高工作效率,下面介绍我用过的一些工具,权当抛砖引玉了。 Beyond Compare ,这是个文件和文件夹对比工具,可以很方便的对比出两个文件夹或文件之间的差别,在差别处会用不同的颜色标示出来。在软件开发中有两个典型的应用场景,一个是比较同一文件不同版本之间的差异,
一、理解Linux的单用户多任务,多用户多任务概念;Linux 是一个多用户、多任务的操作系统;我们应该了解单用户多任务和多用户多任务的概念; 1、Linux 的单用户多任务;单用户多任务;比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么
目录 1、vsFTPd,目前常用FTP服务器套件;2、ftp 用户管理解说; 2.1、匿名ftp 用户和用户组的理解;2.2、匿名ftp 用户和ftp用户组是否可以删除; 3、vsFTPd的安装;4、vsFTPd的服务器的启动和关闭; 4.1、vsFTPd服务器启动和关闭的通用方法;4.2、在Fedora/Redhat/CentOS中vsFTPd 服务器的启动和关闭: 5、vsFTP
Linux网卡配置(一)网卡配置文件 (1)/etc/sysconfig/network-scripts/ifcfg-interface-name 配置文件ifcfg-interface-name包含了初始化接口所需的大部分详细信息。其中interface-name将根据网卡的类型和排序而不同,一般其名字为eth0、eth1、ppp0等,其中eth表示以太(eth0)类型网卡,0表示第一块网卡
mdadm是linux下管理软件raid的工具,有不少人用raidtools,但mdadm的使用显然比raidtools简单,推荐使用mdadm。 mdadm可以在[url]http://www.cse.unsw.edu.au/~neilb/source/mdadm/[/url]下载。 1.编译内核我的文章
在Linux系统中使用bonding技术,可以将两块网卡绑定为一个对外IP使用,以达到高可用或负载均衡的目的。以下简要介绍该技术的使用。 1.安装两块网卡 在linux系统下将两块网卡配置好,使其均能独立工作。可能会碰到驱动问题,自己想办法解决吧,无非是在内核配置里找或者找第三方的。
1.基础知识 一个操作系统可以简单的抽象为,引导程序+内核+文件系统。 vmlinuz是Linux 内核的镜像文件,可以被引导程序加载,从而启动Linux系统。 initrd的全称是boot loader initialized RAM disk,它是系统启动时所使用的根文件系统映像文件,这
offsetof(TYPE, MEMBER) 该宏在Linux内核代码(版本2.6.22)中定义如下:#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER); 分析:(TYPE *)0,将 0 强制转换为 TYPE 型指针,记 p = (TYPE *)0,p是指向TYPE的指针,它的值是0。那么
1. 原理 int a; int size = 8; <----> 1000(bin) 计算a以size为倍数的下界数: 就让这个数(要计算的这个数)表示成二
最近翻阅了一些linux网络协议方面的资料,发现在sk_buff的相关结构上有些细节上的不一致。于是,埋头啃代码,整理相关细节如下。(内核版本2.6.22) 根据sk_buff结构和__alloc_skb(),sk_buff结构及数据内存区初始状态为: __alloc_skb()的功能和参数为 /** * __alloc_skb -&nb
用了一下午,终于弄明白了如何在PHP代码中调用外部程序。 在PHP中调用外部程序主要有两个函数,system和exec。 system的原型为string system(string command [, int $return_var])。system本身具有打印命令
准备工作: httpd-2.2.2.tar.gz 下载:[url]http://httpd.apache.org/download.cgi[/url] php-5.1.4.tar.gz 下载:[url]http://www.php.net/downloads.php[/url] mysql-standard-5.0.21-linux-i686-glibc23.tar.gz 下载:[url]
调程序真的不能偷懒、想当然,真的,实实在在的体会到。 做了半年的linux内核编程,前段时间一直在对socket网络通信的内核函数作改动,为了某种科研目的(呵呵,老板一再强调,科研出成果之前,一定不能外泄,所以不具体解释什么目的了)。目标很简单,要让两个进程共享一个socket,并且在读/写的时候对数据进行同步。其实就lin
strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。 strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。 下面记录几个常用 option . 1 -f -F选项告诉strace同时跟踪fork和vfork出来的进程 2 -o xxx.txt 输出到某个文件。 3 -e execve 只记录
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号