/* * Copyright (C) 2010 Preston Lacey http://javaflacencoder.sourceforge.net/ * All Rights Reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package javaFlacEncoder; /** * BlockEncodeRequests are used to store a full block and necessary information * to encode such block. It is assumed member variables will be accessed * directly(for speed considerations). This Class simply gathers all values * into a single object, but handles no encoding logic itself. * @author Preston Lacey */ public class BlockEncodeRequest { /* Sample data, may be interleaved if multiple channels exist.*/ volatile int[] samples; /* Number of valid samples in this request */ volatile int count; /* Index of samples[] where the first valid sample exists */ volatile int start; /* Number of indices to skip between valid samples */ volatile int skip; /* Frame-number this block is assigned */ volatile long frameNumber; /* Location to store results to. For safety, use an empty element*/ volatile EncodedElement result; /* Stores whether the result should be valid */ volatile boolean valid; /* Number of elements actually encoded. */ volatile int encodedSamples; /** * Set all values, preparing this object to be sent to an encoder. Member * variable "valid" is set to false by this call. * * @param samples Sample data, interleaved if multiple channels are used * @param count Number of valid samples * @param start Index of first valid sample * @param skip Number of samples to skip between samples(this should be * equal to number-of-channels minus 1. * @param frameNumber Framenumber assigned to this block. * @param result Location to store result of encode. */ synchronized public void setAll(int[] samples, int count, int start, int skip, long frameNumber, EncodedElement result) { this.samples = samples; this.count = count; this.start = start; this.skip = skip; this.frameNumber = frameNumber; this.result = result; valid = false; this.encodedSamples = 0; } }