A filter is both source and sink.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / Format.java
index a06889f..c9c9b08 100644 (file)
@@ -25,6 +25,15 @@ package net.pterodactylus.sonitus.data;
  */
 public class Format {
 
+       /** Constant for an unknown number of channels. */
+       public static final int UNKNOWN_CHANNELS = -1;
+
+       /** Constant for an unknown frequency. */
+       public static final int UNKNOWN_FREQUENCY = -1;
+
+       /** Constant for an unknown format. */
+       public static final String UNKNOWN_ENCODING = "UNKNOWN";
+
        /** The number of channels of this format. */
        private final int channels;
 
@@ -81,4 +90,27 @@ public class Format {
                return encoding;
        }
 
+       //
+       // OBJECT METHODS
+       //
+
+       @Override
+       public int hashCode() {
+               return (channels << 16) ^ frequency ^ encoding.hashCode();
+       }
+
+       @Override
+       public boolean equals(Object object) {
+               if ((object == null) || (getClass() != object.getClass())) {
+                       return false;
+               }
+               Format format = (Format) object;
+               return (format.channels == channels) && (format.frequency == frequency) && format.encoding.equals(encoding());
+       }
+
+       @Override
+       public String toString() {
+               return String.format("%d Channel%s, %d Hz, %s", channels, channels != 1 ? "s" : "", frequency, encoding);
+       }
+
 }