| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.commons.sanselan.formats.jpeg.segments; |
| |
| import java.io.PrintWriter; |
| |
| import org.apache.commons.sanselan.common.BinaryFileParser; |
| |
| public abstract class Segment extends BinaryFileParser |
| { |
| public final int marker; |
| public final int length; |
| |
| public Segment(int marker, int length) |
| { |
| // super(); |
| |
| this.marker = marker; |
| this.length = length; |
| } |
| |
| public void dump(PrintWriter pw) |
| { |
| } |
| |
| public abstract String getDescription(); |
| |
| @Override |
| public String toString() |
| { |
| return "[Segment: " + getDescription() + "]"; |
| } |
| |
| public String getSegmentType() |
| { |
| |
| switch (marker) |
| { |
| case 0xffc0 : |
| return "Start Of Frame, Baseline Dct, Huffman coding"; |
| case 0xffc1 : |
| return "Start Of Frame, Extended sequential Dct, Huffman coding"; |
| case 0xffc2 : |
| return "Start Of Frame, Progressive Dct, Huffman coding"; |
| case 0xffc3 : |
| return "Start Of Frame, Lossless (sequential), Huffman coding"; |
| |
| case 0xffc5 : |
| return "Start Of Frame, Differential sequential Dct, Huffman coding"; |
| case 0xffc6 : |
| return "Start Of Frame, Differential progressive Dct, Huffman coding"; |
| case 0xffc7 : |
| return "Start Of Frame, Differential lossless (sequential), Huffman coding"; |
| |
| case 0xffc8 : |
| return "Start Of Frame, Reserved for JPEG extensions, arithmetic coding"; |
| case 0xffc9 : |
| return "Start Of Frame, Extended sequential Dct, arithmetic coding"; |
| case 0xffca : |
| return "Start Of Frame, Progressive Dct, arithmetic coding"; |
| case 0xffcb : |
| return "Start Of Frame, Lossless (sequential), arithmetic coding"; |
| |
| case 0xffcd : |
| return "Start Of Frame, Differential sequential Dct, arithmetic coding"; |
| case 0xffce : |
| return "Start Of Frame, Differential progressive Dct, arithmetic coding"; |
| case 0xffcf : |
| return "Start Of Frame, Differential lossless (sequential), arithmetic coding"; |
| |
| case 0xffc4 : |
| return "Define Huffman table(s)"; |
| case 0xffcc : |
| return "Define arithmetic coding conditioning(s)"; |
| |
| case 0xffd0 : |
| return "Restart with modulo 8 count 0"; |
| case 0xffd1 : |
| return "Restart with modulo 8 count 1"; |
| case 0xffd2 : |
| return "Restart with modulo 8 count 2"; |
| case 0xffd3 : |
| return "Restart with modulo 8 count 3"; |
| case 0xffd4 : |
| return "Restart with modulo 8 count 4"; |
| case 0xffd5 : |
| return "Restart with modulo 8 count 5"; |
| case 0xffd6 : |
| return "Restart with modulo 8 count 6"; |
| case 0xffd7 : |
| return "Restart with modulo 8 count 7"; |
| |
| case 0xffd8 : |
| return "Start of image"; |
| case 0xffd9 : |
| return "End of image"; |
| case 0xffda : |
| return "Start of scan"; |
| case 0xffdb : |
| return "Define quantization table(s)"; |
| case 0xffdc : |
| return "Define number of lines"; |
| case 0xffdd : |
| return "Define restart interval"; |
| case 0xffde : |
| return "Define hierarchical progression"; |
| case 0xffdf : |
| return "Expand reference component(s)"; |
| // case 0xffd8 : |
| // return "Reserved for application segments"; |
| // case 0xffd8 : |
| // return "Reserved for JPEG extensions"; |
| case 0xfffe : |
| return "Comment"; |
| case 0xff01 : |
| return "For temporary private use in arithmetic coding"; |
| // case 0xffd8 : |
| // return "Reserved"; |
| |
| default : |
| } |
| |
| if ((marker >= 0xff02) && (marker <= 0xffbf)) |
| return "Reserved"; |
| if ((marker >= 0xffe0) && (marker <= 0xffef)) |
| return "APP" + (marker - 0xffe0); |
| if ((marker >= 0xfff0) && (marker <= 0xfffd)) |
| return "JPG" + (marker - 0xffe0); |
| |
| return "Unknown"; |
| |
| } |
| |
| } |