`
omygege
  • 浏览: 1353505 次
文章分类
社区版块
存档分类
最新评论
文章列表
GDT和LDT描述符(段描述符):struct Segment_Descriptor{ ushort segment_limit_lo : 16; uint23 segment_base_lo : 24; uint4 type : 4; uint1 desc_type : 1; uint2 dpl : 2; uint1 present: 1; uint4 segment_limit_hi : 4; uint1 unknown_avl_bit : 1; uint1 reserved: 1; // always 0 uint1 d_bit : 1; uint1 granularity : 1;}; ...
  现在网上JPEG2000的Kakadu 2.23源代码似乎找不到了。这个不奇怪,因为Kakadu本身早已商业化。其他的JPEG2000的源码也不少,例如OpenJPEG和Jasper,都是开源的。比较实验一般认为Kakadu的图像质量不好,但我们实验下来,Kakadu(2.23版本,开启MMX和汇编)在编解码速度远优于其他大部分JPEG2000软件。  JPEG2000是一种复杂的图像编码方式,笔者可以毫不夸张地说,其技术上的复杂性甚至(远)超过H.264(表现在小波变换,位平面编码,质量层分割,更夸张的基于上下文的算术编码),当然追求目标,实现效果以及应用范围和前景另当别论。或者可以这样理 ...
  一般编译的程序在进行VTune的Call Graph分析时会遇到无法找到relocation错误,只需要加上/fixed:no连接选项即可。
  在sourceforge上发布的第二个界面工程项目,比virtual piano更实用。有趣的是它以virtual piano的正是名字clavio作为unix name(virtual piano的unix name是vpiano),因为它的界面引擎就被称作clavio。它运用媒体编辑的理念实现MIDI序列的创作,并加入键盘实时演奏记录功能。目前实现大部分关键功能,但作为一个媒体处理软件,它在用户体验、功能、格式支持还有很大的改进余地,代码的可扩展性有待提高,同时隐藏的bug也非常多。希望通过开源能使之进入一个健康的发展轨道。通过这个小作品,我已经能体会到制作像Avid、Final Cut ...
  C++析构函数调用原则,明确的子类对象销毁时,后序顺次向上级调用析构函数。  如果祖先类的析构函数是虚拟的,那么所有子类的析构函数也强制为虚拟的,这样保证能正确销毁动态分配的对象。今天发现如果祖先类没有声明虚拟的析构函数,则继承类虚拟析构函数在动态分配对象销毁时不会被调用,这一点需要注意。
基督并非示我神秘教义,而是生之至理;你们必晓得真理,真理必叫你们得以自由。(约翰福音 8:32)那杀身体不能杀灵魂的,不要怕他们。惟有能把身体和灵魂都灭在地狱(Gehenna火海)里的,正要畏惧祂。(马太福音 10:28)你们 ...
  小作品虚拟钢琴在sourceforge上的project:https://sourceforge.net/projects/vpiano/  目前存在的主要问题:  1 多线程播放占用CPU较大;  2 导出VPO文件可读性差;  3 导出的MID文件不能通行。
  在kd_block_decoder::decode(kdu_block *block)中,JPEG2000的EBCOT关键解码步骤得以实施。对于一个[:num_rows*num_cols:]码块,又以4行为单位划分成多个条带(stripe),于是条带总数为[:(num_rows+3)/4:]。  一些主要的变量:  [:num_cols:],[:num_rows:]:当前有效码块(block)的列数和行数;  [:num_stripes = (num_rows+3)/4:]:有效条带数,这些条带覆盖全部码块;  [:num_samples = (num_stripes*4)*num_cols ...
  解码过程的最关键部分由与kdu_decoder类一一对应的实体类kd_decoder对象完成。每个kd_decoder对应一个分量的一个子带(subband)。在kd_decoder构造的时候,主要工作是从字带对象band中获取关于码块的信息:  nominal_block_size——码块大小  first_block_size——实际(在子带中的)首码块大小  block_indices——码块组的索引  kdu_decoder的主要运算在虚函数实现pull中完成。而这个函数的主要工作在decode_row_of_blocks中进行。该过程对一个字带中的一行码块逐个进行解码:  1 调用 ...
// 代码重新格式化于20110717 /** * prop.h */ #include <malloc.h> #define CONCAT_DIRECT(a,b) a##b #define CONCAT(a,b) CONCAT_DIRECT(a,b) #define TOSTR_DIRECT(tag) #tag #define TOSTR(tag) TOSTR_DIRECT(tag) template <class Owner> struct Property { Owner *GetOwner(int ...
关于宏定义整理(推测)出一些规则,难免有不完整和不正确的地方,以后再逐步修正吧。 名称原则:1、后出现的相同定义覆盖前一个。2、同名的宏变量和宏函数属于相同定义。  例:用#ifdef检查时只代入名称。3、在调用的时候要严格按照其定义的格式。  例:函数即使无参也带括号,这个调用包括在预编译中的调用。 定义解释原则:1、宏函数解析顺序从外向内,展开顺序是从内向外的。2、宏函数对其参数有保护作用,那些参数可能是非法的C/C++表达式。3、对带#和##符号的宏函数定义,它符号作用的区域内停止向内解析。
map映射类 概念:函数子(functor),比较子(comparator)。函数子是对象化的算法。比较子是一种函数子。关于比较子,用到了一个比较重要的C++技术,就是重载括号运算符。这个运算符的重载一般很少用到,它的思想是把函数调用演化成对象的运算符操作。这样就实现了算法的对象化。将函数(算法)参数化并非STL的创新,在C中就已经有函数指针。例如一个小于运算的函数过程:struct { int v1; int v2; } mydata;bool my_lt(const mydata *d1, const mydata *d2){ return (d1->v1 < d2->v ...
一、球面坐标变换  单位球所在基准空间,以转轴向北极单位向量记ez,定赤道某处为经度0度,球心向该点单位向量记ex,根据右手系,ey=outer_product(ez, ex)。从球心出发向量v_r指向球面上点P,沿经线向南单位向量记ey_s,沿纬线向东单位向量记ex_s,指向球心的为ez_s=-v_r。设该点的经纬度坐标为(alhpa, beta)。球面变换是求当转移到(alpha_new, beta_new)的P_new处,坐标系从coord(ex_s, ey_s, ez_s)变为coord(ex_s_new, ey_s_new, ez_s_new)的变换矩阵。  记R_x(angle)、R ...
引 言   在QuickTime Component家族中,Video Digitizer和Video Output Component(分别简称VDig和VOut Component)是重要的成员,它们掌管视频数据对硬件设备(主要通过PCI板卡)的输入输出。这里采用的范例是Apple提供的示例程序:SoftVideoOutp ...
一、判断两封闭单连通图形A和B关系:  旋转法:取图形A内的任一点X,如果X是B内部的点,则说明A、B相交。否则,连接X和B的边界上点P作线段XP。从X出发,考察从线段XP,作状态(IA,IB),IA和IB非零与否分别表示在A和B的内部与否,初始时为(1, 0),经过A或B的边界分别使IA或IB翻转,如果出现(IA,IB)=(1,1)就说明A、B相交,否则说明A、B不相交。二、判断一个点X是否在N边形内部:  圆环染色法:以X为起点,多边形各端点Pi为终点得向量XPi(i=0,1,...,N-1)。此后顺序考察各向量过程中,用到两个运算:以内角为准,到对比向量va相对于vb是顺时针还是逆时针的运 ...
Global site tag (gtag.js) - Google Analytics