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

FrameBodyCHAP

public class FrameBodyCHAP extends AbstractID3v2FrameBody implements ID3v2ChapterFrameBody
Chapter frame.

The purpose of this frame is to describe a single chapter within an audio file. There may be more than one frame of this type in a tag but each must have an Element ID that is unique with respect to any other "CHAP" frame or "CTOC" frame in the tag.

<ID3v2.3 or ID3v2.4 frame header, ID: "CHAP">  (10 bytes)
Element ID<text string> $00
Start time$xx xx xx xx
End time$xx xx xx xx
Start offset$xx xx xx xx
End offset$xx xx xx xx
<Optional embedded sub-frames>

The Element ID uniquely identifies the frame. It is not intended to be human readable and should not be presented to the end user.

The Start and End times are a count in milliseconds from the beginning of the file to the start and end of the chapter respectively.

The Start offset is a zero-based count of bytes from the beginning of the file to the first byte of the first audio frame in the chapter. If these bytes are all set to 0xFF then the value should be ignored and the start time value should be utilized.

The End offset is a zero-based count of bytes from the beginning of the file to the first byte of the audio frame following the end of the chapter. If these bytes are all set to 0xFF then the value should be ignored and the end time value should be utilized.

There then follows a sequence of optional frames that are embedded within the "CHAP" frame and which describe the content of the chapter (e.g. a "TIT2" frame representing the chapter name) or provide related material such as URLs and images. These sub-frames are contained within the bounds of the "CHAP" frame as signalled by the size field in the "CHAP" frame header. If a parser does not recognise "CHAP" frames it can skip them using the size field in the frame header. When it does this it will skip any embedded sub-frames carried within the frame.

For more details, please refer to the ID3 Chapter Frame specifications:

author
Marc Gimpel, Horizon Wimba S.A.
version
$Id: FrameBodyCHAP.java 832 2009-11-12 13:25:38Z paultaylor $

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

    
public FrameBodyCHAP(FrameBodyCHAP body)
Creates a new FrameBodyCHAP datatype.

param
body

        super(body);
    
public FrameBodyCHAP(String elementId, int startTime, int endTime, int startOffset, int endOffset)
Creates a new FrameBodyCHAP datatype.

param
elementId
param
startTime
param
endTime
param
startOffset
param
endOffset

        this.setObjectValue(DataTypes.OBJ_ELEMENT_ID, elementId);
        this.setObjectValue(DataTypes.OBJ_START_TIME, startTime);
        this.setObjectValue(DataTypes.OBJ_END_TIME, endTime);
        this.setObjectValue(DataTypes.OBJ_START_OFFSET, startOffset);
        this.setObjectValue(DataTypes.OBJ_END_OFFSET, endOffset);
    
public FrameBodyCHAP(ByteBuffer byteBuffer, int frameSize)
Creates a new FrameBodyAENC 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 ID3v2ChapterFrames.FRAME_ID_CHAPTER;
    
protected voidsetupObjectList()

        objectList.add(new StringNullTerminated(DataTypes.OBJ_ELEMENT_ID, this));
        objectList.add(new NumberFixedLength(DataTypes.OBJ_START_TIME, this, 4));
        objectList.add(new NumberFixedLength(DataTypes.OBJ_END_TIME, this, 4));
        objectList.add(new NumberFixedLength(DataTypes.OBJ_START_OFFSET, this, 4));
        objectList.add(new NumberFixedLength(DataTypes.OBJ_END_OFFSET, this, 4));