Saturday, August 9, 2014

How wishy-washy can you get? The US Copyright Office Report on Resale Royalties

Artist resale royalties are currently in the legislative spotlight in the US. Backers of resale royalties often cite the US Copyright Office Report on Resale Royalties as "supporting" resale royalties, but far from being the glowing recommendation for artists resale royalties which these backers would like you to think, this report has to be one of the most wishy-washy endorsements ever.

The following list highlights this ambivalence, with examples taken only from the first 50 pages of this report of 81 pages not including appendices (sorry, I ran out of gas, people are invited to add more examples via commenting).

From page 3:
The Office’s 1992 report highlighted the fact that resale royalties appear to benefit only an extremely small number of artists. Current studies and reports remain consistent with this view. In light of the potentially limited benefits, the costs of the law (e.g., administration and enforcement), while not insurmountable, suggest that Congress should approach this issue with some caution.
Page 22:
Likewise, a 1998 study, written as a follow up to the 1980 study, found that "the resale right is barely enforced in California..."
Page 23:
In addition to a lack of compliance and enforcement, it should be noted that the California Arts Council has had some difficulty in administering the right. In 1986, BALA reported that $13,435 was being held by the California Arts Council, on behalf of fourteen artists that could not be located. The Council currently is holding royalties for ninety-eight artists or estates, either because the artist or estate can not be located, or due to difficulty in communicating with the artist or their estate. This figure represents nearly one fourth of the four hundred artists in total who had received the royalty in the time period from the CRRA’s enactment in 1976 to the 2011 New York Times article cited by the court in Estate of Graham.
Page 26:
It is important to state at the outset that a dearth of information about art purchases will likely complicate congressional analysis of the policy considerations relevant to the feasibility of a resale royalty. In brief, there is a paucity of independent empirical information about the art market, partly as a result of the secrecy and opacity that tend to characterize the purchase, investment, and sale of artwork.
Page 27:
The Copyright Office recognized this information problem in its 1992 Report and scholars and journalists, too, have frequently referenced the problem over the years. In fact, the 1992 Report recommended against adopting the resale royalty right partly because it lacked "sufficient current empirical data" to evaluate the possible consequences of introducing the right into U.S. law.195 The Office encountered the same difficulty in its recent reassessment of the resale royalty right.
From page 28 we have simultaneously the most concise and the most damning statement:
Everybody is looking at the statistics and seeing what it is that they want to see.
On page 31, it talks about how disadvantaged visual artists are compared to other artists, and then immediately afterwards (on page 32) it discusses the arguments against favoring visual artists with special compensation:
even if one accepts that the Copyright Act fails to accommodate the particular nature of visual art, it is not the role of copyright law to ensure both statutory and market parity among authors ... For example, advancing technology and the Internet have created new genres and now provide visual artists with a variety of new and expanded opportunities to sell their works in the first instance and to benefit from subsequent exploitations of their works
While on page 34 the facts presented show that musicians, rather than fine artists, are the most disadvantaged class of artists of those investigated (only composers were similar in wages to fine artists):
The study reports that from 2005-2009, the median wages and salary of fine artists ... was $33,982 – notably less than the $44,792 in median wages and salary for writers and authors ... but more than the $27,558 in median wages and salary for musicians
On page 37 the following argument is presented:
Proponents of the resale right argue that current U.S. copyright law fails to provide much "incentive to create unique works" and they assert that the resale royalty would operate in a number of ways to correct this putative failure of copyright law.
while on page 39:
Neither supporters nor opponents of a resale royalty provided the Copyright Office with much evidence other than artist surveys, anecdotal reports, and personal testimony to bolster their claims that the right incentivizes or fails to incentivize artistic creativity.

Thus although there are some indications that a resale royalty might incentivize the creativity of visual artists, there is insufficient evidence to conclude that a resale royalty is an effective, much less optimal, means of incentivizing such creativity.
From page 40:
Would a resale royalty negatively or positively affect the primary art market?

There is markedly less statistical and other information available about the primary art market than there is about the secondary art market.
From page 48:
This report concluded that "the art market in the UK, either despite or because of the introduction of ARR, appears to be doing well.
From age 49:
Similarly, the European Commission noted in its 2011 report on the implementation and effect of the Directive that the "inefficient administration of the resale right" in some member states "presents a not insignificant burden on art market professionals and may also lead to unnecessarily high deductions from the royalties due to artists and their successors
which would seem to soundly refute an argument proposed at the end of page 45:
There is also a more fundamental theoretical problem with the argument that a resale royalty will have a meaningful effect on the economic incentives of primary market participants, especially buyers: "[i]f the royalty will not provide enough money to artists to justify its existence, how will it have a significant deleterious effect on the art market?"
(Anyway this argument fails because of its implicit assumption that consumer behavior is driven solely by monetary considerations, which if true would mean that most of the advertising industry should have disappeared long ago.)

And finally, on page 50, it manages to "glowingly endorse" the EU resale royalty in the following fashion:
To be sure, even though the available quantitative information can be interpreted in various ways, there is certainly no conclusive proof that the U.K. or EU markets have suffered (or, for that matter, benefitted), directly or indirectly, from the resale royalty.

This post was edited on 2014-08-21 to fix a minor typo and to delete an inaccurate argument (I incorrectly used statistics about the global art sales market to criticize the opinion that a resale royalty is necessary to increase production).

Tuesday, October 30, 2012

How to rescue some kinds of unfinalized DVD recorder disks, using free and open-source software

Recently, while recording some family videos using a DVD recorder, there was suddenly a power outage. This happened before the DVD recorder had even built a menu or a file system which separated the 5 MPEG streams into separate VOB files.

The disk was not even recognized by the recorder itself when the power returned.

A search of the web brought me to this helpful blog post by Flay. Unfortunately, that post didn't exactly cover my particular problem. The output of "dvd+rw-mediainfo /dev/dvd" showed a different situation, similar to one described by a commenter on the blog post:
INQUIRY:                [HL-DT-ST][DVDRAM GMA-4082N][ED01]
 Mounted Media:         1Bh, DVD+R
 Current Write Speed:   8.0x1385=11080KB/s
 Write Speed #0:        8.0x1385=11080KB/s
 Write Speed #1:        4.0x1385=5540KB/s
 Write Performance:     3.3x1385=4584KB/s@0 -> 8.0x1385=11092KB/s@2299967
 Speed Descriptor#0:    02/2295103 R@3.3x1385=4584KB/s W@8.0x1385=11080KB/s
 Speed Descriptor#1:    02/2295103 R@3.3x1385=4584KB/s W@4.0x1385=5540KB/s
 Media Book Type:       00h, DVD-ROM book [revision 0]
 Media ID:              MCC/004
 Legacy lead-out at:    2295104*2KB=4700372992
 Disc status:           appendable
 Number of Sessions:    1
 State of Last Session: incomplete
 "Next" Track:          1
 Number of Tracks:      2
 Track State:           partial/complete
 Track Start Address:   0*2KB
 Next Writable Address: 0*2KB
 Free Blocks:           15872*2KB
 Track Size:            15872*2KB
 Track State:           invisible
 Track Start Address:   15888*2KB
 Next Writable Address: 1115840*2KB
 Free Blocks:           1179264*2KB
 Track Size:            2279216*2KB
 ROM Compatibility LBA: 266544
READ CAPACITY:          0*2048=0
Only two tracks and all of the information in the second one. The first step was to extract the information from the second track using the "dd" command, as explained by Flay:
dd bs=2048 skip=15888 count=1099952 if=/dev/dvd of=track2
Well, actually I have to admit I was a bad boy and didn't record the exact "dd" command I used, and I see that I ended up with an output file of size 1099945*2KiB and not 1099952*2KiB. I don't think it's that important; anyway, I didn't expect to get every last second of recorded video off the last track which was recording at the time of the power outage.

The output file is not recognized as video, and I knew that somewhere in it are actually 5 different video streams. My assumption was that the DVD recorder merely records the video streams one after the other and later, when the DVD is finalized, it also generates a file system which divides the blocks of that long track into different files containing the separate streams. After a little research with Wikipedia and a finalized DVD generated by the same recorder, I discovered that the "track2" file contained 5 strings of bytes which looked like VOB file headers. The magic header string has character codes: 0, 0, 1, 186, 68, 0, 4, 0, 4.

Actually, it was a bit more complicated than just that, because the string searching script found an extra location which could be identified as a false alarm, because the file offset wasn't a multiple of 32768.

The following Python scripts (supplied under any OSI-approved open-source license of your choice, including but not limited to all version of the GPL, MIT, or BSD licenses)  are useful tools for extracting files from such a predicament. The first finds a list of offsets for headers within a file:
#! /usr/bin/python

# Find locations of a header string within a file.
# Outputs the offsets as a Python list to standard output.

import sys
from optparse import OptionParser

parser = OptionParser()
                  dest = "header_chars",
                  help = "the header string as a comma delimited string of character codes")

(options, args) = parser.parse_args()

target = "".join([chr(int(x)) for x in options.header_chars.split(',')])
input_filename = args[0]

fh = open(input_filename, "rb")

i = 0
blocksize = 10000 * 1024
overlap = 1024

data =

offsets = []
while (len(data) > overlap):
    j = 0
    idx = data.find(target, j)
    while (idx >= 0):
        offsets.append(idx + i + j)
        j = idx + 1
        idx = data.find(target, j)
    data = data[-overlap:] + - overlap)
    i = i + blocksize - overlap

print offsets
 To filter the offset list (for my particular  problem):
#! /usr/bin/python

# Eliminate bad header string locations found by "".
# Input read from standard input as a Python list.
# Outputs the filtered offsets as a Python list to standard output.
# You will have to adapt the filtering criteria for your particular problem.

import sys

offsets_string =
offsets = eval(offsets_string)

filtered_offsets = [x
                    for x in offsets
                    if (x % 2048*16) == 0]

print filtered_offsets
 And to chop up the file based on the filtered offset list:
#! /usr/bin/python

# Chop up a given file based on a list of offsets.
# Input (list of offsets) read from standard input as a Python list.

import sys
from optparse import OptionParser

parser = OptionParser()
                  dest = "output_template",
                  default = "%d.dat",
                  help = "a template for the output file names")

(options, args) = parser.parse_args()

input_filename = args[0]

fh = open(input_filename, "rb")

offsets_string =
offsets = eval(offsets_string)

blocksize = 10000 * 1024

for (i, offset) in enumerate(offsets):
    output_file = open(options.output_template % i, "wb")
    size = None
        size = offsets[i + 1] - offset

    print "Copying from offset", offset
    if (size is not None):
        print "     size =", size
    print "Output file is", options.output_template % i

    if (size is None):
        data =
        while (len(data) > 0):
            data =
        data =
        remaining = size
        while ((len(data) > 0) and (remaining > 0)):
            if (len(data) > remaining):
                output_file.write(data[0 : remaining])
                remaining = 0
                remaining = remaining - len(data)
                data =
 And finally, here is an example of using these scripts from the command line to extract VOB files:
./ --magic=0,0,1,186,68,0,4,0,4 track2 | ./ | ./ --output=%d.vob track2