分类目录归档:程序设计

搞死人的管道HANDLE,搞死人的继承

测试昨天的代码的时候,又遇到了问题。把整个处理流程又加长之后,其中有一个进程的输入和输出都被重定向了。因为昨天测试的时候都是中途强行停止,现在想要正常停止,自然就是把连接自己和子进程StdInput的管道HANDLE关闭,结束送数据。但是我关掉管道输入端的HANDLE以后,子进程却还在傻傻等待数据,也不退出。 继续阅读搞死人的管道HANDLE,搞死人的继承

使用Windows的匿名管道和Boost.Iostreams

因为Boost.Iostreams提供了封装Windows的Handle的支持,利用这个可以简化匿名管道的操作。我想要达到的目标,先实现这样一个简单的命令行:

ffmpeg -i c:\1.mp3 -acodec pcm_s16le -ac 2 -ar 44100 -f s16le - | oggenc2 -o c:\1.ogg -q 1 -B 16 -C 2 -R 44100 -

功能很简单,就是把一个mp3文件转换成ogg文件而已。然而要达到这个目的,耗了不少精力…… 继续阅读使用Windows的匿名管道和Boost.Iostreams

使用Windows的匿名管道和Boost.Iostreams

因为Boost.Iostreams提供了封装Windows的Handle的支持,利用这个可以简化匿名管道的操作。我想要达到的目标,先实现这样一个简单的命令行:

ffmpeg -i c:\1.mp3 -acodec pcm_s16le -ac 2 -ar 44100 -f s16le - | oggenc2 -o c:\1.ogg -q 1 -B 16 -C 2 -R 44100 -

功能很简单,就是把一个mp3文件转换成ogg文件而已。然而要达到这个目的,耗了不少精力…… 继续阅读使用Windows的匿名管道和Boost.Iostreams

speex里提供的resample代码

之前不是做了个东方游戏的音乐ogg vorbis化的工具吗,现在xiph又出了一个新的编码叫做opus,于是想试试。不过它原生支持的是48kHz采样率,没有44.1kHz。看官方的说明,是推荐在需要的时候resample而不是更改代码让它支持44.1kHz。

本人对resample算法又没有研究,自然第一个想到的是去找现成的代码。网上搜索了一下,gpl啊lgpl协议下的代码倒是不少,这些协议都对私有软件不太友好。以后万一要做私有软件的话这些库就不能用了。

于是想着找个协议宽松一点的吧,网上看到有人推荐speex里面的resample。找是找来了不过一开始怎么样就是编译不过去。然后看到有人说opus_tools那一包代码里面也包含了这个resample,所以去参考了一下那边是怎么调用的。 继续阅读speex里提供的resample代码

伪春菜SAORI的编写

网上关于伪春菜的资料真的好难找啊><

用户群不够大的样子……然后好多还是日语的

SAORI可以认为是SHIORI的插件,SHIORI是控制人格执行的程序,通常这个程序只提供了一个脚本语言解释器(比如YAYA),更加具体的功能由这些脚本来完成。这种脚本、解释器分离的模型为更改程序提供了方便。如果每次更改都要重新编译整个SHIORI,这就太“GEEK体验”了。我们要的是“用户体验”XD  继续阅读伪春菜SAORI的编写