class RawVideoChunk implements VideoChunk {

    @Override
    public List<PropertyAccessor<VideoChunk, ?>> getPropertyAccessors(TimeSpan streamSpan)
    {
        List<PropertyAccessor<VideoChunk, ?>> accessors = New.list(2);

        TimeSpan span = streamSpan == null ? TimeSpan.get(myStartTime, myEndTime) : streamSpan;

        if (streamSpan != null && span.isBounded() && span.getDuration().compareTo(new Minutes(20)) > 0)
        {
            long startTime = span.getStart();
            while (startTime + ourMaxTableDuration < span.getEnd() && myStartTime >= startTime + ourMaxTableDuration)
            {
                startTime += ourMaxTableDuration;
            }

            long endTime = startTime + ourMaxTableDuration;
            if (endTime > span.getEnd())
            {
                endTime = span.getEnd();
            }

            span = TimeSpan.get(startTime, endTime);
        }

        accessors.add(new VideoChunkSpanAccessor(span));
        accessors.add(SerializableAccessor.getHomogeneousAccessor(VideoChunk.VIDEO_CHUNK_PROPERTY_DESCRIPTOR));
        return accessors;
    }

    public  RawVideoChunk(ListOfBytesOutputStream video, TLongList keyFrames, long startTime, long endTime);

}