FileDocCategorySizeDatePackage
FrameBodyCRM.javaAPI DocJaudiotagger 2.0.45085Wed Mar 30 16:12:02 BST 2011org.jaudiotagger.tag.id3.framebody

FrameBodyCRM

public class FrameBodyCRM extends AbstractID3v2FrameBody implements ID3v22FrameBody
Encrypted meta frame

This frame contains one or more encrypted frames. This enables protection of copyrighted information such as pictures and text, that people might want to pay extra for. Since standardisation of such an encryption scheme is beyond this document, all "CRM" frames begin with a terminated string with a URL [URL] containing an email address, or a link to a location where an email adress can be found, that belongs to the organisation responsible for this specific encrypted meta frame.

Questions regarding the encrypted frame should be sent to the indicated email address. If a $00 is found directly after the 'Frame size', the whole frame should be ignored, and preferably be removed. The 'Owner identifier' is then followed by a short content description and explanation as to why it's encrypted. After the 'content/explanation' description, the actual encrypted block follows.

When an ID3v2 decoder encounters a "CRM" frame, it should send the datablock to the 'plugin' with the corresponding 'owner identifier' and expect to receive either a datablock with one or several ID3v2 frames after each other or an error. There may be more than one "CRM" frames in a tag, but only one with the same 'owner identifier'.

Encrypted meta frame "CRM" Frame size $xx xx xx Owner identifier $00 (00) Content/explanation $00 (00) Encrypted datablock

Fields Summary
Constructors Summary
public FrameBodyCRM()
Creates a new FrameBodyCRM datatype.

        //        this.setObject(ObjectTypes.OBJ_OWNER, "");
        //        this.setObject(ObjectTypes.OBJ_DESCRIPTION, "");
        //        this.setObject("Encrypted datablock", new byte[0]);
    
public FrameBodyCRM(FrameBodyCRM body)

        super(body);
    
public FrameBodyCRM(String owner, String description, byte[] data)
Creates a new FrameBodyCRM datatype.

param
owner
param
description
param
data

        this.setObjectValue(DataTypes.OBJ_OWNER, owner);
        this.setObjectValue(DataTypes.OBJ_DESCRIPTION, description);
        this.setObjectValue(DataTypes.OBJ_ENCRYPTED_DATABLOCK, data);
    
public FrameBodyCRM(ByteBuffer byteBuffer, int frameSize)
Creates a new FrameBodyCRM datatype.

param
byteBuffer
param
frameSize
throws
InvalidTagException if unable to create framebody from buffer

        super(byteBuffer, frameSize);
    
Methods Summary
public java.lang.StringgetIdentifier()
The ID3v2 frame identifier

return
the ID3v2 frame identifier for this frame type

        return ID3v22Frames.FRAME_ID_V2_ENCRYPTED_FRAME;
    
public java.lang.StringgetOwner()

return

        return (String) getObjectValue(DataTypes.OBJ_OWNER);
    
public voidgetOwner(java.lang.String description)

param
description

        setObjectValue(DataTypes.OBJ_OWNER, description);
    
protected voidsetupObjectList()

        objectList.add(new StringNullTerminated(DataTypes.OBJ_OWNER, this));
        objectList.add(new StringNullTerminated(DataTypes.OBJ_DESCRIPTION, this));
        objectList.add(new ByteArraySizeTerminated(DataTypes.OBJ_ENCRYPTED_DATABLOCK, this));