0x00000000
当使用各种可以解密(即删除 DRM)光盘的翻录软件时,区域掩码似乎会发生变化。
mpv报道:
libdvdnav: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08
VLC 依次为:
dvdnav demux: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08
这是否意味着区域限制只是被修补了吗?为什么字符串是0x00000000
而不仅仅是0
('global'),或者所有标志从1
到8
?
答案1
区域代码已设置为所有区域
资料来源:几年前,我的办公桌上堆满了约 9 英寸的 DVD 规格(从物理到逻辑),但我曾经从事 DVD 防复制保护工作。这些信息大部分也可以在https://en.wikipedia.org/wiki/DVD_region_code
字段大小问题
我 99% 确定该字段是 16 位,正如 @harrymc 所说,表面上的 32 位数字只是个幌子。无论如何,只使用了底部 8 位。这在 DVD 规范中很常见,其中许多字段都保留了位以备将来扩展。
0x00 表示可在所有地区播放
位字段是倒– 位中的“1”表示 DVD 是不是允许在该区域播放。因此,区域“0x01”表示不是可以在区域 1 中播放,但可以在其他地方播放。区域 1 的光盘编码为 0xFE。
因此,区域“0x00”表示可播放所有地区。
大多数翻录者在翻录时都会将区域改为 0,因为从历史上看,翻录的主要原因之一(或者至少是主要的准合法原因!)是为了打破区域限制,而这样做对他们没有任何不利之处。
答案2
0x00000000
和的值0
相同。唯一的区别在于编写代码的程序。
该代码0x00000000
使用十六进制格式打印,但0
如果写成十进制则为值。
这只是编程的方式libdvdnav
,使用指定十六进制格式的打印。
有关编程信息,请参阅 fprintf 函数。
答案3
区域代码被处理为“位掩码”,因为任何给定的 DVD 都可以针对多个区域进行编码。区域代码 0(全局)相当于掩码中未设置任何位。假设位从右到左编号(计算机中通常采用的方式),则区域代码将是
87654321
0x00000000
因此,针对美国/加拿大(区域 1)和欧洲/中东(区域 2)编码的光盘将具有区域掩码
87654321
0x00000011
而针对美国/加拿大(区域 1)、拉丁美洲/澳大利亚/大洋洲(区域 4)和东南亚(区域 3)编码的地址将具有区域掩码
87654321
0x00001101
eta:我实际上在上面的解释中把这些位“翻转”了;每https://www.askingbox.com/info/the-dvd-region-coding-and-its-technical-implementation,位位置上的 1 会锁定该区域,而 0 会启用播放。因此,第一个例子应该是 ,0x11111100
第二个例子应该是0x11110010
。然而,这仍然是二进制中的一个字节,而不是符号所暗示的完整 32 位字。
答案4
其区域掩码为零,这意味着它可以在任何地方播放。播放任何不受区域限制的 DVD 时,消息都相同(无需翻录)。
在消息中,8 位区域掩码隐藏在 32 位长值*内。
以下是运行mpv dvd://
对我拥有的四张不同的商业 DVD 的提示:
libdvdnav: DVD disk reports itself with Region mask 0x00fe0000. Regions: 01
libdvdnav: DVD disk reports itself with Region mask 0x00fd0000. Regions: 02
libdvdnav: DVD disk reports itself with Region mask 0x00e50000. Regions: 02 04 05
libdvdnav: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08
在第一个例子中,区域掩码0xfe
( 0b11111110
) 表示区域 8 到 2 被掩码:
它只能在区域 1 中播放。(只有最右边的位为零。)
该掩码的逆(一的补码)0x01
(0b00000001
)意味着相反:区域 1 被掩码,它只能在其他区域播放。
*:这可能是某种调试问题,也可能是疏忽,为什么会这样显示。虽然逻辑没有改变,但只有当存在非零掩码时才会显示出来(前三个示例)。