2014-4-12 11:32 /
理论上不会有什么改动的。
嘛,前期的工作还是ST酱做的=。=
然后我接着补完=。=
struct OMV_Header
{
        DWORD EntryPoint;   //指向数据开始
        u8    OMVMainVersion;
        u8    OMVSubVersion;
};

从0x2c开始,还有一个OMV相关的Header,只不过我这里没有解析完全,只是列出了struct
最关键的部分。
struct OMVInfo
{
        DWORD VideoWidth;
        DWORD VideoHeight; //这里记录的分辨率都是视频播放的实际分辨率【VA真蛋疼
        DWORD FrameTime;
        DWORD StreamID[2];
        DWORD Unknown;
        DWORD DataPackCount;
        DWORD FrameCount;
};

于是OMV的header还很长的,前面应该和数据包有关的东西,
但是这些都不影响我们的解析。
直接跳过这些对我们来说无用的东西。
然后我们发现了这个:
图片>>

毫无疑问,这个就是ogv的header了(事实上,OMV就是ogv的修改版本)
接下来我们需要做的就是把OggS及其之后的内容提取出来,这个可以直接kmp。
OMV的格式是 YUV4MPEG2
Pixel格式是     444 (怪不得拉这么大效果也还是不错的)

对于每一帧来说,实际的图片输出还是Y(上面1/3)U(中间1/3)V(下面1/3)合成的。
解析完毕。