Abstract:
Methods, systems, and apparatus are disclosed which enable flexible insertion of forensic watermarks into a digital content signal using a common customization function. The common customization function flexibly employs a range of different marking techniques that are applicable to a wide range of forensic marking schemes. These customization functions are also applicable to pre-processing and post-processing operations that may be necessary for enhancing the security and transparency of the embedded marks, as well as improving the computational efficiency of the marking process. The common customization function supports a well-defined set of operations specific to the task of forensic mark customization that can be carried out with a modest and preferably bounded effort on a wide range of devices. This is accomplished through the use of a generic transformation technique for use as a “customization” step for producing versions of content forensically marked with any of a multiplicity of mark messages.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a continuation of, and claims the benefit of priority to, U.S. patent application Ser. No. 14/038,621, filed on Sep. 26, 2013, which is a continuation of U.S. patent application Ser. No. 13/220,526, filed on Aug. 29, 2011, now U.S. Pat. No. 8,549,307, which is a continuation of U.S. patent application Ser. No. 11/479,958, filed on Jun. 30, 2006, now U.S. Pat. No. 8,020,004, which claims the benefit of U.S. Provisional Application Ser. No. 60/696,146, filed on Jul. 1, 2005. The disclosure of the prior applications are considered part of (and are incorporated by reference in) the disclosure of this application. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    The present invention relates generally to systems, methods and apparatus for providing forensic markings for media content. Forensic marking is the practice of creating individual copies of information content that are substantially identical for most practical purposes, but that can in fact be distinguished from one another in order to ascertain information about their chain-of-custody subsequent to their distribution. For example, intentionally introduced errors in logarithmic tables were used in previous centuries to prove that certain publications of those tables had been copied from a particular source without authorization from the table&#39;s creator. In the modem era, forensic marking is widely viewed as an important technique for protection of valuable media information content such as movies, music, programming, documents, and other digital information content such as software and data files and has convincingly demonstrated its commercial efficacy. Forensic marking is typically intended to assist in locating a point in the chain-of-custody where an unauthorized use of the content occurred. 
         [0003]    A wide range of schemes have been proposed for introducing identifiable marks into content and for subsequently identifying their presence. The broad class of techniques commonly known as “watermarking”, wherein auxiliary data is imperceptibly embedded into the content, are most commonly associated with this task, however a range of different approaches are possible. An exemplary methodology that does not incorporate watermarking is to simultaneously capture one or more scenes in a film production by employing two cameras at different locations and using these similar recordings as alternately selectable versions of content for the purpose of distinguishing copies. Another approach that can be employed with video content is to superimpose a figure or graphic onto the image that is either brief and unnoticeable (such as the “cap coding” dots that are reported to be employed in commercial film production) or that is innocuous (such as superimposing an additional face in a crowd or changing the color of a chair). 
         [0004]    Various forensic marking schemes offering differing performance and capabilities with respect to: the types of content to which they are applicable (e.g., video, audio, textual, images, executable program instructions, data, etc.); the degree of transparency or interference of the marking with respect to primary intended purpose of the content; the payload capacity of the marking (e.g., number of uniquely marked copies that can be generated and the amount of the marked content necessary to identify the mark); the effort required to apply or identify the mark (e.g., the computational complexity of insertion or detection of the forensic mark); the recoverability of the mark following incidental use and modification of the content (“robustness”); or the resistance of the mark to attempts to interfere with its use (“security”) through forgery, modification, eavesdropping, and erasure. 
         [0005]    In many practical circumstances, the marking must be performed under tight constraints. For example, when a high volume of individually marked copies of content must be created, it is desirable that each should be made as effortlessly as possible to minimize time, expense or resource usage. Additionally, when a copy of content must be marked at the time of its delivery or use, it is typically important that the marking occur with minimal effort so as not to delay the delivery or interfere with other simultaneous actions associated with the event. For example, on a computer server system that provides copies of content in response to requests received over a network, the effort required to supply a distinctly marked copy in response to individual requests may substantially increase the amount of processing and/or storage required to respond to a given number of requests, versus simply providing the same copy of the content in response to each, as is more typically done. Similarly, if the marking must be applied using digital electronics embedded within a consumer device such as a personal computer, portable music player, or multimedia-enabled cellular telephone, it is important that the process of customizing individual copies does not interfere with or limit other device functions, including in the areas of computing processor utilization, power consumption, or user-interface response time. 
         [0006]    A valuable approach to minimizing the effort in forensic marking is to divide the forensic marking activity into two steps. The first step performs a “pre-processing” of the content that only needs to be performed once and may require substantial effort in order to produce one or more versions of the content and possibly also to analyze data that can be used in a subsequent “customization” step of reduced effort that is repeated with minor variations to produce the forensically marked copies of the content. While the customization step of a two-step forensic marking scheme is not inherently limited to any particular operation, some examples of common functions that may be typically included in such an arrangement include splicing of regions of content together, replacement of certain regions of content with regions taken from other content, mathematical addition of regions of content, mathematical additional of a region taken from content with the mathematical multiplication of two other content regions, and the like. This approach is generally employed in an arrangement where the pre-processing and customization steps are performed on separate physical devices and at different stages of the chain of production, distribution, and consumption of content. 
         [0007]    Another critical consideration in forensic marking is the vulnerability of marking techniques to subversion through various avenues of attack by individuals seeking to thwart identification of the forensic mark. Such attacks may by implemented by a variety of means, but typically involve transforming the content such that the mark is altered or obscured. 
         [0008]    It is generally advantageous to an attacker making an attack on a marking technique if they have knowledge of the details of the marking technique employed, and for this reason it is desirable for the efficacy of the system that as much information about the marking techniques employed for any particular content instance be unavailable to them. Generally, in order to avoid exposure of marking methods, tamper-resistant implementation techniques are employed in order to protect devices that perform marking and information stored internally from reverse engineering. However, a particular advantage of the two-step forensic marking approach for environments where marking is performed in a device that may be attacked is that it is possible for many of the sensitive technologies to be employed during the pre-processing step, which can be retained under the control of the content distributor, and the information regarding the marking scheme that needs to be present in the device that performs customization can be much more limited. Furthermore, cryptographic techniques may be used to enhance the security of the forensic marking system. For example, the information that is delivered to a particular customization device, including all alternate versions of the original content signal plus functions and parameters that are necessary to effect the marking, may be encrypted and the particular customization device may be required to request the delivery of proper decryption keys upon the exchange of proper identification and authentication information. Further, through encryption of alternate versions of the content with different keys and by providing the customization function with only the decryption keys associated with the versions of content that are used to form mark messages that the device is authorized to render, the security impact of a compromised customization device may be substantially diminished. In such a scenario, the attacker may be unable to access any content elements other than those that are specifically accessible to the compromised device. 
         [0009]    Nevertheless, a number of factors may still frustrate efforts to keep secret information out of an attacker&#39;s hands. Attackers may be able to learn about particular marking technologies from any of many different sources, including leaks of confidential information, from information included in patent filings, from reverse engineering of devices that perform marking or mark detection functions, or from analysis of marked content (including, in particular, comparative analysis or combined processing of differently marked versions of the same content, the so called “collusion” attacks). 
         [0010]    If only a single marking technique is employed, then the emergence of a successful attack may be immediate and catastrophic. Thus, it may be advantageous to employ a multiplicity of marking techniques across a range of content and devices at any given point in time. Further, if the marking technique employed is fixed, its resistance to attack will only diminish over time as information on its function is slowly gleaned by attackers. Thus it may be advantageous to be able to change marking techniques employed on a time schedule that is responsive to progress made by attackers over time. 
         [0011]    There are additional practical considerations related to the use of forensic marking schemes. It may be desirable for the manufacturer of some product that processes content to facilitate the forensic marking of the content using a variety of different schemes. For example, the various owners or distributors of different content processed by the device might want different schemes to be used in connection with particular content which they provide for use on the device, and those wishes might change over time due to purely commercial considerations. Additionally, different types of content (such as 3 minute popular music songs versus 8 hour audiobooks) might introduce entirely different marking requirements because of their duration, bandwidth, attack threat model, commercial value, sales volume, or some other consideration. For the manufacturer of such a device, it may be impractical, burdensome, or even impossible to include sufficient capability to support all desired forensic marking schemes and a capability to update the devices functions over time, even if the marking schemes permit separate pre-processing and customization such that the device need only perform the customization steps of the various forensic marking schemes. 
         [0012]    Clearly, if the customization step is carried out on a general-purpose programmable device, such a device may be reprogrammed at various times to apply different forensic marking techniques. Such reprogramming might be performed or even provided in conjunction with each particular piece of content, if programming instructions are provided along with the content. However, if the marking must be performed on a variety of different types of programmable devices, it may be impractical or burdensome to provide instructions for each different programmable device. 
         [0013]    It has been proposed that a desirable method of flexibly applying forensic marking is through inclusion of a common programmable capability or so-called “virtual machine” that can execute arbitrary data processing functions expressed in program code delivered with content, including those that customize pre-processed, encrypted content in order to achieve forensic marking. This approach places a substantial burden of complexity on the device that performs customization, which must implement the virtual machine and be capable of executing the arbitrary program instructions. Additionally, it places a burden on the content producer and forensic scheme technology developer for devising program instructions and ensuring their correctness, tasks that are generally difficult, expensive, and error-prone. 
         [0014]    Another proposed approach to the flexible application of forensic marking in a diverse range of devices is the creation of a standardized, common function that can perform a complete forensic marking operation on content in response to marking instructions provided with the content. This approach employs a set of common, fixed data processing primitives with adjustable parameters that are believed to support a range of commercially useful forensic watermark embedding schemes. This approach provides reduced complexity with respect to the development and testing of marking instruction streams in comparison with an approach that employs a generic “virtual machine,” but has several other significant drawbacks. First, the range of marking techniques that such a device can support will be inherently limited by the scope of the available primitives. As pointed out herein, a very wide range of methods have been proposed for watermarking, not to mention forensic marking generally, and diversity in the area of marking techniques is of benefit to mark security and commercial acceptability. The limitation of the fundamental method of forensic marking to a finite set that can be incorporated in a standardized specification substantially limits the efficacy and practicality of the system. 
         [0015]    Also, the amount of processing required for many practical forensic watermarking techniques is substantial, and inclusion of the complete forensic mark application within the device responsible for content customization may have a significant negative impact on the cost and/or performance of such devices. For example, the embedding function in many practical watermarking schemes rely on perceptual modeling of the content being marked to constrain the amplitude of modifications to an amount that results in an acceptable level of perceptual distortion. Such modeling may be difficult to express in a generic messaging language, may require substantial processing and memory resources, and may introduce significant processing latency. This impact may make such an approach unsuitable for large classes of devices, such as portable media players, cellular phones, optical media players, handheld recording devices, and the like. 
         [0016]    It would be advantageous to provide flexible forensic watermarking methods, systems and apparatus which are designed to overcome various deficiencies of the prior art systems. More specifically, it would be advantageous to be able to flexibly employ a range of different marking techniques in different instances that all rely on a common customization function that is applicable to a wide range of forensic marking schemes (and consequently, a wide range of pre-processing methods), but that support a well-defined set of functions specific to the task of forensic mark customization that can be carried out with a modest and preferably bounded effort on a wide range of devices. Because a very wide range of techniques are used for marking content, there has previously been no practical way to address these challenges. The present invention achieves such desirable features through the use of a generic transformation technique for use as a “customization” step for producing versions of content forensically marked with any of a multiplicity of mark messages, wherein the customization function is responsive to instructions provided along with pre-processed content that enable its compatibility with a range of different forensic marking schemes. 
         [0017]    The methods, systems and apparatus of the present invention provide the foregoing and other advantages. 
       SUMMARY OF THE INVENTION 
       [0018]    The present invention provides methods, systems, and apparatus which enable flexible insertion of forensic watermarks into a digital content signal by using a common customization function. 
         [0019]    In an example embodiment of the present invention, a method for producing a distinctly marked content is provided. A plurality of tributaries and customization information are received (e.g., at a client device, a user location, a discrete processing element at the same location, or the like). The tributaries and customization information are processed using a common customization function adapted to accept a mark message in order to produce a distinctly marked content. 
         [0020]    The plurality of tributaries and the customization information may be produced by pre-processing original content. Alternatively, the plurality of tributaries and the customization information may be produced by pre-processing the original content with at least one alternate content element. The tributaries may be derived from the alternate content elements. 
         [0021]    The pre-processing function may comprise embedding at least a logical value in a portion said original content. The tributaries may be synthesized during the pre-processing. 
         [0022]    The tributaries may comprise instructions for generating at least one alternate version of the original content or an alternate content element. 
         [0023]    The method may further comprise analyzing the tributaries and customization information to obtain validation information. The validation information may comprise resource allocation profiles. Further, the validation information may represent compatibility profiles. 
         [0024]    The processing of the tributaries and customization information may comprise selecting a subset of the tributaries, generating rendering information in accordance with the customization information and the mark message, and rendering the selected tributaries in accordance with the rendering information to form the distinctly marked content. 
         [0025]    The selecting may be conducted in accordance with the customization information and the mark message. The selecting may also be conducted in accordance with a set of nexus resolution instructions. 
         [0026]    The rendering may comprise assembling the selected tributaries in accordance with the rendering information. Assembling the tributaries may comprises at least one of adding, multiplying, splicing or blending of the selected tributaries. The rendering may be conducted in accordance with a set of assembly instructions. These assembly instructions may correspond to at least one of a PDF, XML, MXF, AAF, ASF, BWF, and Mobile XMF encoding formats. The rendering may comprises post-processing operations to enhance the security of the distinctly marked content. The rendering may further comprises post-processing operations to enhance the transparency of the embedded marks within the distinctly marked content. 
         [0027]    The mark message may be encoded in accordance with at least one of an error correction coding, a channel coding, a data security protocol, or the like. The encoding of the mark message may be conducted using a look-up table. 
         [0028]    In a further example embodiment of the present invention, an apparatus for producing a distinctly marked content is provided. The apparatus comprises means for receiving a plurality of tributaries and customization information produced by a pre-processing function and processing means for processing the tributaries and customization information using a common customization function adapted to accept a mark message in order to produce a distinctly marked content. 
         [0029]    In another example embodiment of the present invention, a method for enabling the production of a distinctly marked content is provided. In such an embodiment, an original content is received (e.g., by transmission over a wired or wireless network, from a storage element, from another device or functional element, or the like). This original content, once received, is then pre-processed to produce a plurality of tributaries and customization information. The tributaries and customization information enable the production of a distinctly marked content (e.g., using a common customization function as discussed in the above-described embodiments). 
         [0030]    The plurality of tributaries and the customization information may be produced by pre-processing the original content with at least one alternate content element. The tributaries may be derived from the alternate content elements. 
         [0031]    Methods, apparatus, and systems corresponding to the foregoing example embodiments, and to combinations of the foregoing example embodiments, are encompassed by the present invention. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0032]    The present invention will hereinafter be described in conjunction with the appended drawing figures, wherein like reference numerals denote like elements, and: 
           [0033]      FIG. 1  illustrates a general block diagram overview of the forensic marking system in accordance with an example embodiment of the invention; 
           [0034]      FIG. 2  shows a block diagram describing elements of the common customization function of  FIG. 1  in accordance with an example embodiment of the invention; 
           [0035]      FIG. 3  illustrates various elements of the composition function of  FIG. 2  in accordance with an example embodiment of the invention; and 
           [0036]      FIG. 4  illustrates various elements of the rendering function of  FIG. 2  in accordance with an example embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0037]    The ensuing detailed description provides exemplary embodiments only, and is not intended to limit the scope, applicability, or configuration of the invention. Rather, the ensuing detailed description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing an embodiment of the invention. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims. 
         [0038]      FIG. 1  illustrates a high-level block diagram of the forensic marking technique of the present invention. The original content  100  is pre-processed by a pre-processing function  104 , optionally in combination with alternate content elements  102 , to obtain a multiplicity of tributaries  106  and associated customization information  108 . The tributaries  106  and customization information  108  are utilized by a common customization function  114  to produce distinctly marked content  118  that carries any of a multiplicity of identifiable mark messages  116 . The original content  100  and alternate content elements  102  may be any type of data, signal, or information; however typical embodiments will for practical reasons be limited in applicability to a limited set of data or information types. The tributaries  106  and customization information  108  are represented in a well-defined format that permits independent validation of its compliance with various protocol requirements by a validation function  110 , if desired, prior to its application to the common customization function  114 . The relationship between the pre-processing function  104 , validation function  110  (when present), and common customization function  114  is illustrated in  FIG. 1 . 
         [0039]    It should be appreciated that while  FIG. 1  and the other figures may accurately represent the physical relationships between various components for an example apparatus of the present invention, it is understood that these figures may also illustrate conceptual or logical relationships between various elements of the invention. For example, boxes may correspond to functions, which may be either discretely implemented or integrated with other functions, and arrows may correspond to the flow of information, either by value or by reference. Other relationships, functions, and data paths may also be present in the device which are not shown in the figures including, for example, connectivity to external information sources for control or recording of device activities and access to content-specific information such as encryption and decryption keys. 
       Pre-Processing 
       [0040]    The pre-processing function  104  performs operations on the original content and, optionally, alternate content elements  102 , to obtain tributaries  106  and customization information  108 . The pre-processing function  104  may include all or a portion of any of a wide variety of forensic marking techniques, but its essential characteristic is that its output should be designed such that the processing of its output by a pre-defined common customization function  114  will result in the production of content that has been forensically marked with any of a multiplicity of mark messages  116 . 
         [0041]    Original content  100  is the content that would serve as the basis for all copies being produced, but for the use of a forensic marking scheme. Alternate content elements  102  are versions of all or a portion of the original content  100  that are distinguishable from the original content  100 , but may be employed to modify or replace all or a portion of the original content  100  for purposes of forensic marking. The term “tributary” is used in this context to mean data that can be combined in various ways to produce distinctly marked versions of the original content  100  using methods provided by the common customization function  114 . Tributaries  106  may be derived from the original content  100  or alternate content elements  102 , synthesized by the pre-processing function  104 , they may be an encrypted or encoded representation of content, or may comprise a method or instructions for generating an alternate version of the original content or alternate content elements. In addition, the tributaries may be produced from any combination of the aforementioned methods. Additionally, tributaries  106  may be distinguished from one another either physically (for example, as separate data structures in a storage medium) or logically (for example, as regions of a continuous data structure that may be distinguished with the use of ancillary data such as markers, pointers, formulae or other explicit and implicit means). 
         [0042]    The customization information  108  represents instructions to the common customization function  114  as to how the tributaries  106  should be combined for various mark data values that comprise the mark message  116 . One of the benefits of the present invention is that the pre-processing function  104  is not in any way fixed and could implement a multitude of marking schemes in current existence or to be created in the future. The only limitation is that the marking schemes associated with the pre-processing function  104  must be compatible with a customization technique within the capabilities of the common customization function  114 . Thus, the scope of the present invention with respect to operations performed by the pre-processing function  104  is considered to encompass any operation for which there exists a complementary processing capability in the common customization function  114 , as described herein (e.g., the selection and application of appropriate compression of tributaries  106  for decompression by the common customization function  114 , etc.). 
       Customization 
       [0043]    The marking techniques in accordance with the present invention involve the use of a common customization function  114  whose processing behavior in a given instance is controlled by specified customization information  108 . The range of valid customization information  108  and the processing behavior of the common customization function  114  in response to the customization information  108  is primarily fixed and well-defined. The capability of using a range of different customization information  108  enables a common customization method to be employed with a variety of different forensic marking schemes. The limited set of functions performed by the common customization function  114  permits its operation to be reasonably bounded and efficient. This configuration permits the common customization function  114  to be implemented in a fixed device and correctly perform the customization step on appropriately pre-processed information for a range of different forensic marking schemes. 
         [0044]    An exemplary block diagram of the common customization function  114  in accordance with the present invention is described in  FIG. 2 . The common customization function  114  performs the acts of ‘Composition’  120 , which is the process of determining the manner in which available tributaries  106  are combined, and ‘Rendering’  126 , which is the process wherein the formation occurs to produce a distinctly marked content  118 . While it is not necessary for these two steps to be either physically or logically distinct, they are considered separately herein in order to facilitate understanding and for ease of explanation. 
       Composition 
       [0045]    The primary functions of composition function  120  is to provide a set of selected tributaries  122 , in accordance with the customization information  108 , to be used for producing a particular instance of distinctly marked content  118 , and to determine the rendering information  124  necessary to guide its production. The composition function  120  may also include the act of mark encoding, which maps the mark message  116  into an alternate sequence of symbols (the “mark sequence”) that represent the mark message  116  as it is embodied within the distinctly marked content  118 . An exemplary diagram of the relationship between the elements of the composition function is provided in  FIG. 3 . 
       Nexus Resolution 
       [0046]    As shown in  FIG. 3 , the essential operation involved in composition  120  is the selection process, which is referred to herein as nexus resolution  132 . The term “nexus” is used in this context to mean the information associated with all of the potential selections among the various alternative versions of content that may be rendered to embody a symbol in a mark sequence  136 . An exemplary nexus may comprise an association between each mark sequence  136  symbol value and instructions for rendering specific tributaries whenever those symbol values exist in the mark sequence  136 . Nexus resolution  132 , then, is the process whereby a particular nexus (or, more generally, a multiplicity of nexuses associated with elements of a mark sequence  136 , which is referred to herein as a nexus sequence  128 ) is evaluated to provide the selected tributaries  122  and rendering information  124  necessary to forensically mark the content with the elements of a specific mark sequence  136 . As shown in  FIG. 4 , the rendering information  124 , for example, may comprise the information necessary to assemble the selected tributaries  122  (i.e., the assembly information  138 ), the information necessary for post processing the assembled content  142  (i.e., the post-processing information  140 ), and the like. The nexus sequence  128 , which may be part of the customization information  108  produced by the pre-processing function  104 , may be expressed explicitly, such as in an enumerated list within a data structure (i.e., a ‘nexus list’), or implicitly, for example by specifying a pattern of nexuses according to an algorithmic or formulaic expression. Note that for practical purposes, it may be desirable to permit the specification of nexuses, which correspond to a tributary that is selected for rendering, independent of any mark sequence value and therefore common among all versions of the content (i.e. a “unary nexus”). 
       Mark Encoding 
       [0047]    Mark encoding  134  performs a mapping between a mark message  116 , which is the information carried by the mark that is used to distinguish the marked copy of the content from other copies of distinctly marked content, and the mark sequence  136 , which is the sequence of symbols that is actually incorporated into the content. The mark encoding function  134  may provide capabilities that support any of the myriad channel coding techniques known in the art of communication and watermark technology. By way of example and not by limitation, these include the incorporation of error correction codes and synchronization symbols, interleaving and encryption of the mark message  116 , as well as mapping the mark message  116  into pre-defined mark sequences using look-up tables or mapping functions. 
         [0048]    Because it is desirable that a common customization function  114  provide compatibility with a range of forensic marking schemes, it may be useful for the mark encoding function  134  to provide a range of common channel coding techniques that may be employed in any instance according to a particular mark encoding protocol, which may be specified via customization information  108 . Additionally, it may be useful for the mark encoding function  134  to provide additional data communications message formation functions, such as encryption, hashing, or digital signature formation, as directed by mark encoding protocol  130 . The mark encoding protocols  130  may be communicated to the mark encoding function  134  as part of the customization information  108  produced by the pre-processing function  104 . In a simple exemplary embodiment, the mark encoding protocol  130  may be implemented as a look-up table that maps the incoming mark message  116  symbols into pre-defined mark sequences  136  in accordance with any combination of the above described channel coding and security protocols. This way, the need to incorporate any specific channel coding and/or security protocols within the mark encoding function  134  is eliminated. Furthermore, the look-up table may be readily updated to reflect new security, robustness or economic requirements of the marking system. 
       Rendering 
       [0049]    An exemplary diagram of the relationship between the elements of the rendering function  126  of  FIG. 2  is provided in  FIG. 4 . The rendering function  126  assembles the selected tributaries  122  in accordance with rendering information  124  provided by the composition function  120  to produce a distinctly marked content signal  118 . In some embodiments, it may also be useful for the rendering function  126  to provide a capability of applying post-processing  144  to the assembled content  142  in accordance with the post-processing information  140  that is provided by the composition function  120 . The post-processing function  144  may comprise a plurality of operations that serve to, for example, mask the presence of the embedded mark, change the content resolution, change the sampling rate, or otherwise modify the assembled content  142  to place it in a suitable output format as dictated by the post-processing information  140  or system interface requirements. 
       Assembly 
       [0050]    The rendering function  126  provides support for one or more methods of producing assembled content  142  by assembly function  146  under the direction of the assembly information  138  provided as part of the rendering information  124 . Examples of general methods of assembly that may be supported include splicing, replacement (with or without masking of various kinds), addition, multiplication, blending (e.g. linear combination), or combinations of methods such as these. In general, the assembly information  138  may express (and the assembly function  146  may support) the interpretation and execution of a range of typical content processing functions as might be found in existing systems that perform rendering of content from a collection of production elements in accordance with an expression of assembly information. Well-known content encoding formats of this type include Adobe Portable Document Format, Microsoft Word XML document schema, MXF, Advanced Authoring Format, Advanced Systems Format, Broadcast Wave Format, and Mobile XMF. Many of the techniques for expression and processing of rendering information expressions that are known in the art are considered to be useful in conjunction with the present invention. 
         [0051]    Selection of the particular methods of assembly supported by a common customization function  114  will largely define the types of forensic marking schemes with which it will be compatible, so the methods selected should be chosen based on techniques that are expected to be useful in practical marking schemes. This selection will also dictate the operational burden placed on devices that implement the assembly function  146 , so the range of assembly methods supported should be influenced by their value and generality. 
       Post-Processing 
       [0052]    The rendering function  126  may optionally support the application of one or more post-processing functions  144  on the assembled content  142  in accordance with the post-processing information  140 . While some post-processing operations may be utilized to further differentiate the distinctly marked content  118  from the original content  100 , other operations may be used to enhance the security of the embedded marks, to enhance the transparency of the embedded marks, or to perform signal conditioning operations that facilitate subsequent storage, presentation or transmission of the marked content. By way of example and not by limitation, some post-processing operations include applying masking and anti-collusion measures, signal saturation/clipping prevention techniques, application of dither, application of special artistic/aesthetic effects, gamma correction, color correction, cryptographic operations, and the like. 
       Validation 
       [0053]    The validation function  110  ( FIG. 1 ) evaluates and analyzes the information output from the pre-processing function  104  in order to obtain validation information  112 . The validation information  112  is predictive of what will occur when certain information (e.g., customization information) are provided to a common customization function  114 . For example, as shown in  FIG. 1 , the validation function  110  may determine whether a given expression of tributaries  106  and customization information  108  contains any deviations from a specific protocol associated with a common customization function  114 . 
         [0054]    The validation function  110  may also measure certain aspects of an instance of tributaries  106  and customization information  108 , such as the amount of processing, memory, or latency necessary for a common customization function  114  to evaluate those instances (‘execution profiling’), given certain assumptions about the mark message  116 . Validation functions may be employed at different parts of the content distribution chain. For example, it may be desirable to perform a validation function in conjunction with pre-processing in order to select from alternative possible expressions of tributaries and customization information based on measurable characteristics of their performance or to ensure their compatibility with the common customization functions supported by a specific class of devices. Additionally, they may be employed on a standalone basis by a content distributor who wants to ensure that content that they distribute is compatible with a common customization function performed by certain specific devices to which they distribute materials. Validation functions may also exist in any environments where common customization functions reside, and be employed prior to content customization in order to determine a priori the results of performing forensic mark customization. 
         [0055]    Techniques that may be employed for performing validation functions, such as specification compliance verification and execution profiling, are generally well-known in the art. 
       Exemplary Embodiment 
       [0056]    To illustrate the most basic elements of the present invention, as a first example a simple embodiment of the invention is described. This example embodiment is described with specific, limited detail for the purpose of providing clear and concrete examples of the concepts, but is not intended in any way to limit or fix the scope of the present invention. Nevertheless, this simple example has substantial flexibility and is, as is demonstrated below, compatible with many of the forensic marking schemes known in the art. 
       Exemplary Common Customization Function 
       [0057]    In this embodiment, a common customization function  114  may be defined specifically for use with schemes for the forensic marking of audio content with a 40-bit mark message  116 . The common customization function  114  (including all component functions described herein) may be embodied in a stored program on a hard-disk in a computer system located in the projection booth of a commercial movie theater. The computer system may be one among many connected to a wide-area network over which digital audio and video are distributed to multiple similar computer systems in multiple similar projection booths in multiple movie theaters. An additional function of the computer system is to access content at the time when a movie is to be shown in the theater, process it with the common customization function  114  in order to obtain a distinctly marked content  118 , and output the distinctly marked content  118  sequentially for playback to the movie theater audience. Each such computer system may have a stored unique serial number and an internal clock, from which the common customization function  114  may derive a 40-bit mark message  116  to be forensically marked into the audio of each movie presentation output from the computer system. 
         [0058]    The implementation of the present invention in this particular environment enables the manufacturer of the computer system to only incorporate a single common customization function  114  to provide a playback environment that is compatible with a range of forensic marking schemes. In addition, any one of a variety of forensic marking schemes may be used for a particular movie content at the discretion of the movie producer or distributor, and such schemes will be compatible with any device that employs the common customization function  114 , regardless of any other playback device characteristics. 
         [0059]    In an exemplary movie screening scenario, prior to playback, pre-processed audio content may be securely delivered from another computer system at a movie distributor to the computer system in the projection booth over the wide area network in the form of a computer file that contains both tributaries  106  and customization information  108 . (The associated video content is provided as well, and may also be pre-processed for handling by a common customization function  114 , but for simplicity of exposition in this example, only the audio portion of the content is considered.) Such an audio file may be compliant with, for example, the Broadcast Wave format. Two types of data chunks exist within the file that contain the customization information  108 , the nexus sequence  128  and mark encoding protocol  130 , respectively, which may be provided in big-endian format. Tributaries  106  may be stored in audio chunks, with one tributary per audio chunk. Tributaries  106  may be encoded as eight channel PCM audio at a 48 kHz sampling rate. The exemplary nexus sequence and post-processing grammar may be defined as shown in Table 1 and the exemplary mark encoding protocol grammar may be shown as defined in Table 2 below, using a data format conforming to the Extended Backus-Naur form grammars. 
         [0000]    
       
         
               
             
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 EXEMPLARY NEXUS SEQUENCE AND POST PROCESSING 
               
               
                 GRAMMAR 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 1 
                 nexus-list = post-processing-information* nexus 
               
               
                 2 
                  (nexus | post-processing-information)* nexus-list-end-instruction 
               
               
                 3 
                 nexus := single-nexus | repeating-nexus 
               
               
                 4 
                 single-nexus := ‘0x01’, nexus-element 
               
               
                 5 
                 repeating-nexus := ‘0x02’, repetition-count nexus-element 
               
               
                 6 
                 repetition-count := “32-bit unsigned integer” 
               
               
                 7 
                 nexus-element := unary-nexus | binary-nexus 
               
               
                 8 
                 nexus-list-end-instruction := end-nexus-list | repeat-nexus-list 
               
               
                 9 
                 end-nexus-list = ‘0x00’ 
               
               
                 10 
                 repeat-nexus-list = ‘0x01’ absolute-marker 
               
               
                 11 
                 unary-nexus := ‘0x00’ tributary-index assembly-information 
               
               
                 12 
                 binary-nexus := 
               
               
                 13 
                  ‘0x01’ zero-value-output one-value-output 
               
               
                 14 
                 zero-value-output := assembly-information 
               
               
                 15 
                 one-value-output := assembly-information 
               
               
                 16 
                 tributary-index := “16-bit unsigned integer” 
               
               
                 17 
                 assembly-information := 
               
               
                 18 
                  tributary-index 
               
               
                 19 
                  tributary-start-marker tributary-duration 
               
               
                 20 
                  fade-information fade-information 
               
               
                 21 
                  render-start-marker 
               
               
                 22 
                  assembly-type 
               
               
                 23 
                 tributary-start-marker := absolute-marker | register-marker 
               
               
                 24 
                 tributary-duration := absolute-marker 
               
               
                 25 
                 render-start-marker := absolute-marker | register-marker 
               
               
                 26 
                 absolute-marker := ‘0x00’ “32-bit unsigned integer” 
               
               
                 27 
                 register-marker:= ‘0x01’ register-mod-type register-mod-amount 
               
               
                 28 
                 register-mod-type := offset | offset-update | offset-clear | 
               
               
                 29 
                  random-offset | random-offset-update | random-clear 
               
               
                 30 
                 register-mod-amount := “32-bit signed integer” 
               
               
                 31 
                 offset := ‘0x00’ 
               
               
                 32 
                 offset-update := ‘0x01’ 
               
               
                 33 
                 offset-clear := ‘0x02’ 
               
               
                 34 
                 random-offset := ‘0x03’ 
               
               
                 35 
                 random-offset-update := ‘0x04’ 
               
               
                 36 
                 random-offset-clear := ‘0x05’ 
               
               
                 37 
                 assembly-type := replace | add 
               
               
                 38 
                 replace := ‘0x00’ 
               
               
                 39 
                 add := ‘0x01’ 
               
               
                 40 
                 fade-information := no-fade | linear-fade 
               
               
                 41 
                 no-fade := ‘0x00’ 
               
               
                 42 
                 linear-fade := ‘0x01’ fade-duration 
               
               
                 43 
                 fade-duration := absolute-marker 
               
               
                 44 
                 post-processing-info := ‘0x03’ limiting-type 
               
               
                 45 
                 limiting-type := hard-clipping | soft-clipping 
               
               
                 46 
                 hard-clipping := ‘0x00’ 
               
               
                 47 
                 soft-clipping := ‘0x01’ 
               
               
                   
               
             
          
         
       
     
         [0000]    
       
         
               
             
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                 EXEMPLARY MARK ENCODING PROTOCOL GRAMMAR 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 1 
                 mark-encoding-protocol := mark-encoding+ 
               
               
                 2 
                 mark-encoding := constant-bit | mark-message-bit | xor-mark- 
               
               
                   
                 message-bit | mapping 
               
               
                 3 
                 constant-bit := ‘0x00’ binary-value 
               
               
                 4 
                 mark-message-bit := ‘0x01’ 
               
               
                 5 
                 xor-mark-message-bit := ‘0x02’ binary-value 
               
               
                 6 
                 mapping := ‘0x03’ input-count output-count mapping-table 
               
               
                 7 
                 binary-value := ‘0x00’ | ‘0x01’ 
               
               
                 8 
                 mapping-table := 
               
               
                 9 
                  “row-first matrix of binary values with 2{circumflex over ( )}(input-count) rows and 
               
               
                 10 
                  (output-count) columns” 
               
               
                   
               
             
          
         
       
     
         [0060]    For this example, it is assumed that the computer server does not impose tight constraints on the processing, memory, and latency of the customization function. It should be recognized, however, that such constraints will exist in many practical cases. There would be no guarantee that all content expressible in this format would meet a particular set of constraints, and careful design of the particular expression of content (in addition to the use of a validation function for measurement of these parameters) might be needed for different classes of devices with common customization functions. 
       Exemplary Nexus Resolution 
       [0061]    In the exemplary embodiment shown in Table 1 above, the nexus resolution function  132  is carried out by sequentially processing the nexuses in the nexus sequence  128  in accordance with the specified grammar of Table 1. Each nexus may be expressed either as a “single nexus” which is evaluated one time, or as a “repeating nexus” which is repeatedly evaluated a specified number of times in succession. In the processing of unary nexuses, an associated tributary index (which identifies the candidate tributaries) is selected. Assembly information  138  is provided as output of the composition function  120  for rendering. In the processing of binary nexuses, a mark sequence value is received from the mark encoding function  134 , and used to select one of two tributary index and assembly information  138  pairs in the nexus for output. Post-processing information  140 , when present, is provided in the same data stream as the nexus sequence  128  and is time-multiplexed. Post-processing information  140  is output directly to the post-processing function  144  without modification. Assembly information  138  is provided to the assembly function  146 , along with the associated tributary index value obtained from each nexus. When all nexuses from the nexus sequence  128  have been evaluated, the nexus resolution function  132  is either completed or it repeats from the start of the nexus list (in which case a counter is supplied for the total number of nexuses to be processed prior to completion of nexus resolution) according to information provided at the end of the nexus list. 
       Exemplary Mark Encoding 
       [0062]    The mark encoding function  134  is carried out by sequentially processing the elements of the mark encoding protocol  130  in accordance with the grammar that is shown in Table 2 above. Processing consists of retrieving, processing, and outputting mark sequence values, in accordance with the specified mark encoding protocol  130 . The “constant bit” expression in Table 2 indicates the output of a fixed mark sequence bit value, independent of the values of the mark message  116 . The “mark message bit” expression indicates the output of a mark sequence bit that is equal to the corresponding bit value in the mark message  116 . The “XOR mark message bit” expression indicates the output of a mark sequence bit value that results from a logical XOR between a value provided by the mark encoding protocol  130  and a value taken from the mark message  116 . The “mapping” expression indicates the output of a sequence of mark sequence bit values taken from a table stored in the mark encoding protocol  130 . The table is stored in the form of a table of output sequences (in rows), with the row that is output from the table selected by the value of the binary word expressed by a sequence of bits taken from the mark message  116 . For example, if the input count is 3 and the output count is 4, then a table of output values that is 8 (2 3 ) rows by 4 columns is provided. Three bits from the mark message  116  are read, and their binary value (0-7) is used to select a row from the table. The mark sequence output  136  generated by the mark encoding function  134  is then the set of values stored in that row of the table. 
         [0063]    When all elements of the mark encoding protocol  130  have been processed, the mark encoding function  134  returns to the beginning of the mark encoding protocol  130  and continues its processing as if the mark encoding protocol  130  were repeated serially. Similarly, if the mark encoding function  134  reaches the end of the mark message  116 , its operations continue from the start of the mark message  116 , as if values were repeated serially. The mark encoding function  134  continues to operate in this way, so long as the nexus resolution function  132  continues to require additional mark sequence values  136 . 
       Exemplary Assembly Function 
       [0064]    The assembly function  146  is carried out by sequentially processing the output of the nexus resolution function  132 , which consists of a sequence of tributary index/assembly information element pairs. Table 1 above provides examples of such assembly information  138  that include multiple fields. Markers specify indices of the start and duration of the tributaries that are selected for composition (“tributary segment”), which may be computed from a stored tributary marker register, and an expression may also indicate modification of the register in one of several ways following its use. A fading characteristic may be specified for application to the start and end of the tributary segment (i.e. a gradual amplitude fade with a specified duration and curve shape for each endpoint of the tributary segment) prior to composition. Expressions are provided for determining an index for the starting point in the output stream where the tributary segment should be placed based on a stored output marker register, and an expression may also direct modification of the register in one of several ways following its use. An additional information field is provided that specifies how the tributary segment should be composed with other segments that may overlap in time in the assembled content (i.e. whether the data from the earlier segment in the sequence should be replaced by the latter or whether the two segments should be added together). Processing of the assembly information  138  consists of performing the retrieval, alignment, and composition of the selected tributary segments  122  to form assembled content  142  in accordance with the assembly information expressions. 
       Exemplary Post-Processing 
       [0065]    The post-processing function  144  is carried out by sequentially processing the elements of post-processing information  140  as described in the exemplary grammar listing of Table 1, lines 44 through 47. Parsing consists of lexical analysis of the data in the post-processing information  140  in accordance with the nexus sequence grammar defined in the listing of Table 1. Evaluation consists of applying a function to the assembled content  142  in accordance with settings dictated by the post-processing information  140 . In the case of hard clipping, the assembled content  142  is evaluated to determine whether any of the values of the content samples have exceeded the dynamic range supported by the output device. Any samples that have exceeded that dynamic range are set to the nearest value that is within the dynamic range of the output device. 
         [0066]    In the case of soft clipping, the entirety of the assembled content  142  is processed through the non-linear function, such as the one specified by: 
         [0000]    
       
         
           
             
               
                 
                   y 
                   = 
                   
                     { 
                     
                       
                         
                           
                             
                               
                                 x 
                                  
                                 
                                   ( 
                                   
                                     1 
                                     - 
                                     
                                       0.08192 
                                        
                                       
                                           
                                       
                                        
                                       
                                         x 
                                         4 
                                       
                                     
                                   
                                   ) 
                                 
                               
                               , 
                             
                           
                           
                             
                               
                                 for 
                                  
                                 
                                     
                                 
                                  
                                 
                                    
                                   x 
                                    
                                 
                               
                               &lt; 
                               1.25 
                             
                           
                         
                         
                           
                             
                               sign 
                                
                               
                                 ( 
                                 x 
                                 ) 
                               
                             
                           
                           
                             
                               
                                 for 
                                  
                                 
                                     
                                 
                                  
                                 
                                    
                                   x 
                                    
                                 
                               
                               ≥ 
                               1.25 
                             
                           
                         
                       
                       , 
                     
                   
                 
               
               
                 
                   Equation 
                    
                   
                       
                   
                    
                   
                     ( 
                     1 
                     ) 
                   
                 
               
             
           
         
       
     
         [0000]    where x is the value of the assembled content, y is the value of the soft-limited content, and [−1,1] is the normalized range of the output device. 
       Exemplary Forensic Marking Schemes Using Exemplary Embodiment 
       [0067]    To illustrate certain benefits of the exemplary embodiment, its use in conjunction with a forensic marking scheme previously known in the art is described. 
       Exemplary Forensic Marking Scheme 
       [0068]    In the first embodiment described in the U.S. Pat. No. 6,612,315 an arrangement is employed whereby original audio content is pre-processed to generate two alternate versions, each embedded with a synchronous stream of watermark data. The first version is embedded with a watermark sequence comprised entirely of a first logical value, such as the binary value “0” and the second version is embedded with a watermark sequence comprised entirely of a second logical value, such as the binary value “1.” A customization method is employed whereby distinct content carrying a watermark data stream with an arbitrary mark sequence is produced by splicing sequential segments selected from one of the two alternate versions in accordance with the values of a mark sequence. To avoid introducing discontinuities through the splicing function, selected segments are taken with a short, overlapping transition regions and the segments are blended via cross-fade. For purposes of this example, it is assumes that the bits are embedded in audio segments that are 5.33 ms in duration (256 samples at 48 kHz sampling rate) and that the cross-fade region is 0.33 ms in duration (16 samples at 48 kHz). it is also assumed, for purposes of this example, that the mark encoding protocol simply prepends the frame synchronization sequence ‘0111’ to the mark message to form the mark sequence, and repeatedly transmits this sequence throughout the duration of the content. 
         [0069]    Adaptation of the pre-processing step associated with the scheme described above to one that generates tributaries and customization information compatible with the common customization function  114  described in the exemplary embodiment of the present invention is straightforward. The original content is pre-processed to obtain the versions embedded with logical values (e.g., “0” and “1” watermark data sequences, respectively) at pre-processing function  104  and the two versions are stored in two tributaries (“tributary 0” and “tributary 1”). A nexus list is produced as shown in Table 3 below. 
         [0000]    
       
         
               
             
               
               
             
               
               
               
             
               
               
             
               
               
               
               
             
               
               
             
               
               
               
               
             
               
               
             
               
               
               
               
             
               
               
             
           
               
                 TABLE 3 
               
               
                   
               
               
                 EXAMPLE NEXUS LIST 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 1 
                 ; Post processing info 
               
             
          
           
               
                 2 
                 03 00 
                  ; Use hard clipping 
               
             
          
           
               
                 3 
                 ; First nexus, only used for first element 
               
             
          
           
               
                 4 
                 01 01 
                 ; 
                 Single, binary nexus 
               
               
                 5 
                  00 00 
                 ; 
                  Zero-value output, use tributary 0 
               
               
                 6 
                   01 01 
                 ; 
                   For tributary start, use register with offset update 
               
               
                 7 
                   00 00 00 F0 
                 ; 
                    to 256−16=240, leaving marker at start of next fadein 
               
               
                 8 
                   00 00 01 10 
                 ; 
                   Tributary duration is 256+16 (bit plus fadeout) 
               
               
                 9 
                   00 
                 ; 
                   No fade in 
               
               
                 10 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadeout 
               
               
                 11 
                  01 01 
                 ; 
                   For render start, use register with offset update 
               
               
                 12 
                   00 00 00 F0 
                 ; 
                    to 256−16=240, leaving marker at start of next fadein 
               
               
                 13 
                  00 
                 ; 
                  Assemble by replacement 
               
               
                 14 
                 00 01 
                 ; 
                  One-value output, use tributary 1 
               
               
                 15 
                  01 01 
                 ; 
                   For tributary start, use register with offset update 
               
               
                 16 
                   00 00 00 F0 
                 ; 
                    to 256−16=240, leaving marker at start of next fadein 
               
               
                 17 
                  00 00 01 00 
                 ; 
                   Tributary duration is 256+16 (bit plus fadeout) 
               
               
                 18 
                   00 
                 ; 
                   No fade in 
               
               
                 19 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadeout 
               
               
                 20 
                  01 01 
                 ; 
                   For render start, use register with offset update 
               
               
                 21 
                   00 00 00 F0 
                 ; 
                    to 256−16=240, leaving marker at start of next fadein 
               
               
                 22 
                  00 
                 ; 
                  Assemble by replacement 
               
             
          
           
               
                 23 
                 ; Repeated nexus for elements 2-674,999 
               
             
          
           
               
                 24 
                 02 00 0A 4C B6 01 
                 ; 
                 Binary nexus, repeated 674,998 times (2 hours total) 
               
               
                 25 
                  00 00 
                 ; 
                  Zero-value output, use tributary 0 
               
               
                 25 
                   01 01 
                 ; 
                   For tributary start, use input register with update 
               
               
                 27 
                    00 00 01 00 
                 ; 
                    by 256, leaving marker at start of next bit&#39;s fadein 
               
               
                 28 
                   00 00 01 20 
                 ; 
                   Tributary duration is 16+256+16 (fadein+bit+fadeout) 
               
               
                 29 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadein 
               
               
                 30 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadeout 
               
               
                 31 
                   01 01 
                 ; 
                   For render start, use output register with offset update 
               
               
                 32 
                    00 00 01 00 
                 ; 
                    by 256, leaving marker at start of next bit&#39;s fadein 
               
               
                 33 
                   01 
                 ; 
                  Assemble by addition 
               
               
                 34 
                  00 01 
                  ; 
                   One-value output, use tributary 1 
               
               
                 35 
                   01 01 
                 ; 
                   For tributary start, use register with offset update 
               
               
                 36 
                    00 00 01 00 
                 ; 
                    by 256, leaving marker at start of next bit&#39;s fadein 
               
               
                 37 
                   00 00 01 20 
                 ; 
                   Tributary duration is 16+256+16 (fadein+bit+fadeout) 
               
               
                 39 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadein 
               
               
                 40 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadeout 
               
               
                 41 
                   01 01 
                 ; 
                   For render start, use register with offset update 
               
               
                 42 
                    00 00 01 00 
                 ; 
                    to 256, leaving marker at start of next bit&#39;s fadein 
               
               
                 43 
                   01 
                 ; 
                  Assemble by addition 
               
             
          
           
               
                 44 
                 ; Single nexus used for last element only 
               
             
          
           
               
                 45 
                 01 01 
                  ; 
                  Single, binary nexus 
               
               
                 46 
                  00 00 
                 ; 
                  Zero-value output, use tributary 0 
               
               
                 47 
                   01 00 00 00 00 00 
                 ; 
                   For tributary start, use input register with no offset 
               
               
                 48 
                   00 00 01 10 
                 ; 
                   Tributary duration is 16+256 (fadein+bit) 
               
               
                 49 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadein 
               
               
                 50 
                   00 
                 ; 
                   No fadeout 
               
               
                 51 
                   01 00 
                 ; 
                   For render start, use output register with no offset 
               
               
                 52 
                    00 00 00 00 ; 
               
               
                 53 
                  01 
                 ; 
                  Assemble by addition 
               
               
                 54 
                 00 01 
                 ; 
                  One-value output, use tributary 1 
               
               
                 55 
                   01 00 00 00 00 00 
                 ; 
                   For tributary start, use register with no offset 
               
               
                 56 
                   00 00 01 10 
                 ; 
                   Tributary length is 16+256 (fadein+bit) 
               
               
                 57 
                   01 00 00 00 10 
                 ; 
                   Use 16 sample linear fadein 
               
               
                 58 
                   00 
                 ; 
                   No fadeout 
               
               
                 59 
                   01 00 
                 ; 
                   For render start, use register with no offset 
               
               
                 60 
                    00 00 00 00 
                 ; 
                    to 256, leaving marker at start of next fadein 
               
               
                 61 
                   01 
                 ; 
                  Assemble by addition 
               
             
          
           
               
                 62 
                 ; End nexus list 
               
               
                 63 
                 00 
               
               
                   
               
             
          
         
       
     
         [0070]    This nexus list shown in Table 3 comprises instructions for the first and last elements of the mark sequence  136  that are different from the instructions for the remaining elements of the sequence. A mark encoding protocol  130  is produced as shown in Table 4 below. 
         [0000]                              TABLE 4               EXAMPLE MARK ENCODING PROTOCOL                                    1 ; Output fixed synchronization sequence ‘1011’           2  00 01           3  00 00           4  00 01           5  00 01           6 ; Output 40 mark message bits           7  01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01           8  01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01                        
The original content in this case is presumed to be two hours (675,000 bits of 5.3 ms each).
 
         [0071]    Although his particular arrangement complies with the data format requirement of the exemplary embodiment and would be compatible with the described device, it should be appreciated that many different adaptations of the present invention may be made without departing from the scope of the invention. For example, it is noted that the tributaries described in this exemplary embodiment are large and the distance between alternate tributary segments employed in individual nexuses may introduce a significant memory usage requirement or alternately a random data access requirement on the common customization function. This approach may not be suitable for all devices that support the common customization, such as those with limited memory or only serial access to data. For such cases, an alternate expression might entail dividing each of the two versions of the content into many tributaries, each containing only a short segment of the content marked with “0” or “1” data symbols, and interleaving these shorter tributaries so that there is a greater locality of reference within the data stream. The nexus sequence and post-processing data might also be interleaved with the tributary data to achieve a similar advantage. By establishing requirements for processing utilization over time, memory, storage and data access, processing latency, etc., it becomes possible to design devices that implement a common customization function with a well-defined capability, and to design pre-processing and validation methodologies that enable the production of tributaries and customization information that can be reliably employed in conjunction with them to obtain forensically marked content in a range of practical environments. 
         [0072]    It should now be appreciated that the present invention provides advantageous methods, systems and apparatus for forensic watermarking using a common customization function. 
         [0073]    Although the invention has been described in connection with various illustrated embodiments, numerous modifications and adaptations may be made thereto without departing from the spirit and scope of the invention as set forth in the claims.