8

The region mask appears to be changed to 0x00000000 when using various ripping software which can decrypt (i.e. remove the DRM) the discs.

mpv reports:

libdvdnav: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08

VLC in turn:

dvdnav demux: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08

Does this mean that the region restrictions have simply been patched out? Why the string is 0x00000000 and not just 0 ('global'), or all flags from 1 to 8?

user198350
  • 4,269

4 Answers4

23

The region code has been set to all regions

Source: It's been a few years since I had a full ~9" stack of DVD specs (physical to logical) sitting on my desk, but I used to work in anti-copy protection of DVDs. Much of this info is also available at https://en.wikipedia.org/wiki/DVD_region_code

The field-size issue

I'm 99% sure that the field is 16-bit, and as @harrymc says, the apparent 32-bit number is a red herring. In any case, only the bottom 8 bits were used. This was common in the DVD spec, where lots of fields had reserved bits for potential future expansion.

0x00 signifies playable in all regions

The bit-field is inverted – a '1' in the bit means the DVD is not permitted to play in that region. So a region of '0x01' means it may not play in region 1 but may play elsewhere. A region 1 disk is coded 0xFE.

Thus a region of '0x00' means it is playable in all regions.

Most rippers alter the region to 0 when ripping, as historically one of the main reasons for ripping (or at least the main quasi-legal reasons!) was to defeat region restrictions, and there's no downside for them in doing so.

Heinzi
  • 4,258
Dan W
  • 331
9

The values of 0x00000000 and 0 are identical. The only difference is in the program that is writing out the code.

The code 0x00000000 is printed using the hex format, while 0 would have been the value if written out as decimal.

This is just the way that libdvdnav is programmed, using a print that specifies the hex format.

For programming information see the fprintf function.

harrymc
  • 498,455
6

The region code is handled as a 'bit mask' because any given DVD can be coded for multiple regions. The region code of 0 (global) is equivalent to no bits set in the mask. Assuming that the bits are numbered from right to left (the usual sort of thing that's done in computers), the region codes would be

  87654321
0x00000000

so that a disc that was coded for US/Canada (region 1) and Europe/Middle East (region 2) would have the region mask

  87654321
0x00000011

and one that was coded for US/Canada (region 1), Latin America/Australia/Oceania (region 4), and Southeast Asia (region 3) would have the region mask

  87654321
0x00001101

eta: I actually got the bits 'flipped' in the explanation above; per https://www.askingbox.com/info/the-dvd-region-coding-and-its-technical-implementation, a 1 in a bit position locks out that region, and a 0 enables playback. So, the first example should be 0x11111100 and the second 0x11110010. This is still a single byte in binary, however, not the full 32-bit word that the notation implies.

Jeff Zeitlin
  • 5,136
5

Its region mask is zero, meaning it's playable everywhere. The message is the same when playing any non-region-restricted DVD (it does not have to be ripped).

In the message, the 8-bit region mask is sort of hidden inside the 32-bit long value*.
Here's what running mpv dvd:// said about four different commercial DVDs I have:

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

In the first example, the region mask 0xfe (0b11111110) means regions 8 to 2 are masked:
It's only playable in region 1. (Only the rightmost bit is zero.)
The inverse (one's complement) of that mask, 0x01 (0b00000001), would mean the opposite: Region 1 is masked, it's only playable in the other regions.

*: It could be some sort of debug thing or an oversight why it's displayed like this. Although the logic doesn't change, it only reveals itself when there's a non-zero mask (the first three examples).