[英]How do you understand this line from H264 specifications
在此处提供的H264(mpeg4第10部分AVC)规范中,我们可以阅读第59页的以下内容(为清晰起见,对SO进行了一些简化):
for(i8x8 = 0; i8x8 < 4; i8x8++)
for(i4x4 = 0; i4x4 < 4; i4x4++)
if(CodedBlockPatternLuma & (1 << i8x8))
doSomething()
我想知道如何解释if
语句的内容。 查看其他实现,似乎要进行的测试是检查它是否为0。 这似乎更有意义,否则只有在i8x8
为0
时才能将条件评估为true
。 你怎么理解的?
它正在测试是否设置了特定位。 1 << i8x8取一个“ 1”位并将其左移可变数量的空格,然后将其移至CodedBlockPatternLuma以查看是否设置了该位。 如果模式为10101010,而i8x8为2,则模式与100进行“与”运算,因此10101010&00000100 = 00000000,该位未设置。 如果pattern是01010101,并与00000100进行AND运算,则该位置1,这将是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.