Spec-Zone.ru › OpenJDK 21

Интерфейс DataLine

Все суперинтерфейсы:
AutoCloseable, Line
Все известные подинтерфейсы:
Clip, SourceDataLine, TargetDataLine
public interface DataLine extends Line
DataLine добавляет функциональность, связанную со средствами массовой информации, к своему суперинтерфейсу, Line. Эта функциональность включает методы управления транспортом, которые запускают, останавливают, сбрасывают и очищают аудиоданные, проходящие через линию. Линия данных также может сообщать о текущем положении, громкости и формате аудиоданных. Линии данных используются для вывода звука с помощью подинтерфейсов SourceDataLine или Clip, которые позволяют прикладному программному обеспечению записывать данные. Аналогично, ввод аудио обрабатывается подинтерфейсом TargetDataLine, который позволяет считывать данные.

Линия данных имеет внутренний буфер, в котором входящие или исходящие аудиоданные очереди. Метод drain() блокируется до тех пор, пока этот внутренний буфер не станет пустым, обычно потому, что все данные очереди были обработаны. Метод flush() отбрасывает любые доступные данные очереди из внутреннего буфера.

Линия данных генерирует события START и STOP всякий раз, когда она начинает или прекращает активное представление или захват данных. Эти события могут быть сгенерированы в ответ на конкретные запросы или в результате менее прямых изменений состояния. Например, если метод start() вызывается на неактивной линии данных, и данные доступны для захвата или воспроизведения, событие START будет сгенерировано вскоре, когда воспроизведение или захват данных фактически начнутся. Или, если поток данных на активной линии данных ограничен так, что возникает разрыв в представлении данных, генерируется событие STOP.

Микшеры часто поддерживают синхронизированное управление несколькими линиями данных. Синхронизацию можно установить с помощью метода synchronize интерфейса Mixer. Более полное описание см. в описании интерфейса Mixer.

С:
1.3
См. также:
  • LineEvent

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static class  DataLine.Info
Помимо информации о классе, унаследованной от своего суперкласса, DataLine.Info предоставляет дополнительную информацию, специфичную для линий данных.

Краткое описание методов

Модификатор и тип Метод Описание
int available()
Получает количество байтов данных, в настоящее время доступных для обработки приложением во внутреннем буфере линии данных.
void drain()
Сбрасывает данные очереди из линии, продолжая ввод/вывод данных до тех пор, пока внутренний буфер линии данных не будет очищен.
void flush()
Очищает данные очереди из линии.
int getBufferSize()
Получает максимальное количество байтов данных, которые поместятся во внутренний буфер линии данных.
AudioFormat getFormat()
Получает текущий формат (кодирование, частоту дискретизации, количество каналов и т. д.) аудиоданных линии данных.
int getFramePosition()
Получает текущее положение в аудиоданных в кадрах.
float getLevel()
Получает текущий уровень громкости для линии.
long getLongFramePosition()
Получает текущее положение в аудиоданных в кадрах.
long getMicrosecondPosition()
Получает текущее положение в аудиоданных в микросекундах.
boolean isActive()
Указывает, участвует ли линия в активном вводе/выводе (например, воспроизведение или захват).
boolean isRunning()
Указывает, работает ли линия.
void start()
Позволяет линии участвовать во вводе/выводе данных.
void stop()
Останавливает линию.

Методы, объявленные в интерфейсе javax.sound.sampled.Line

addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener

Подробное описание методов

drain

void drain()
Осуществляет сброс данных из очереди линии, продолжая ввод/вывод данных до тех пор, пока внутренний буфер линии данных не будет пустым. Этот метод блокируется до завершения сброса. Поскольку это блокирующий метод, его следует использовать с осторожностью. Если drain() вызывается для остановленной линии, имеющей данные в очереди, метод будет заблокирован до тех пор, пока линия не запустится, а очередь данных не станет пустой. Если drain() вызывается одной нитью, а другая продолжает заполнять очередь данных, операция не завершится. Этот метод всегда возвращает значение, когда линия данных закрыта.
См. также:
  • flush()

flush

void flush()
Очищает данные из очереди линии. Очищенные данные отбрасываются. В некоторых случаях не все данные очереди могут быть отброшены. Например, микшер может очистить данные из буфера для определенной входной линии, но любые невоспроизведённые данные, уже находящиеся в выходном буфере (результат микширования), всё равно будут воспроизводиться. Вы можете вызвать этот метод после приостановки линии (обычный случай), если хотите пропустить «устаревшие» данные при возобновлении воспроизведения или захвата. (Допустимо очищать линию, которая не остановлена, но выполнение этого действия на активной линии, вероятно, приведёт к разрыву данных, что вызовет ощутимый щелчок.)
См. также:
  • stop()
  • drain()

start

void start()
Позволяет линии участвовать во вводе/выводе данных. Если вызов осуществляется для линии, которая уже работает, этот метод ничего не делает. Если данные в буфере не были очищены, линия возобновляет ввод/вывод, начиная с первого кадра, который не был обработан в момент остановки линии. При запуске аудиозахвата или воспроизведения генерируется событие START.
См. также:
  • stop()
  • isRunning()
  • LineEvent

stop

void stop()
Останавливает линию. Остановленная линия должна прекратить активность ввода/вывода. Однако, если линия открыта и работает, она должна сохранить ресурсы, необходимые для возобновления активности. Остановленная линия должна сохранить любые аудиоданные в своём буфере, вместо того, чтобы отбрасывать их, чтобы при возобновлении ввод/вывод мог продолжиться с того места, где он остановился, если это возможно. (Это не гарантирует, что никогда не будет разрывов, выходящих за пределы текущего буфера; если состояние остановки сохраняется слишком долго, входные или выходные образцы могут быть потеряны.) При необходимости сохранённые данные можно удалить, вызвав метод flush. При остановке аудиозахвата или воспроизведения генерируется событие STOP.
См. также:
  • start()
  • isRunning()
  • flush()
  • LineEvent

isRunning

boolean isRunning()
Указывает, работает ли линия. По умолчанию false. Открытая линия начинает работать, когда первые данные представлены в ответ на вызов метода start, и продолжает работу до тех пор, пока представление не прекратится в ответ на вызов stop или из-за завершения воспроизведения.
Возвращает:
true если линия работает, в противном случае false
См. также:
  • start()
  • stop()

isActive

boolean isActive()
Указывает, участвует ли линия в активном вводе/выводе (например, воспроизведение или захват). Когда неактивная линия становится активной, она отправляет событие START своим слушателям. Аналогично, когда активная линия становится неактивной, она отправляет событие STOP.
Возвращает:
true если линия активно захватывает или воспроизводит звук, в противном случае false
См. также:
  • Line.isOpen()
  • Line.addLineListener(javax.sound.sampled.LineListener)
  • Line.removeLineListener(javax.sound.sampled.LineListener)
  • LineEvent
  • LineListener

getFormat

AudioFormat getFormat()
Получает текущий формат (кодирование, частоту дискретизации, количество каналов и т. д.) аудиоданных линии данных.

Если линия не открыта и никогда не открывалась, возвращает формат по умолчанию. Формат по умолчанию — это формат звука, специфичный для реализации, или, если объект DataLine.Info, который использовался для извлечения этого DataLine, указывает по крайней мере один полностью квалифицированный аудиоформат, последний из них будет использоваться в качестве формата по умолчанию. Открытие линии со специфическим аудиоформатом (например, SourceDataLine.open(AudioFormat)) переопределит формат по умолчанию.

Возвращает:
текущий формат аудиоданных
См. также:
  • AudioFormat

getBufferSize

int getBufferSize()
Получает максимальное количество байтов данных, которые поместятся во внутренний буфер линии данных. Для линии исходных данных это размер буфера, в который могут быть записаны данные. Для линии целевых данных это размер буфера, из которого данные могут быть считаны. Обратите внимание, что единицы измерения — байты, но они всегда соответствуют целому числу образцов аудиоданных.
Возвращает:
размер буфера в байтах

available

int available()
Получает количество байтов данных, в настоящее время доступных для обработки приложением во внутреннем буфере линии данных. Для линии исходных данных это количество данных, которое может быть записано в буфер без блокировки. Для линии целевых данных это количество данных, доступных для чтения приложением. Для клипа это значение всегда равно 0, так как аудиоданные загружаются в буфер при открытии клипа и сохраняются без изменений до закрытия клипа.

Обратите внимание, что единицы измерения — байты, но они всегда соответствуют целому числу образцов аудиоданных.

Приложение гарантируется, что операция чтения или записи, вплоть до количества байтов, возвращаемых из available(), не заблокируется; однако, нет гарантии, что попытки чтения или записи большего количества данных не заблокируются.

Возвращает:
количество доступных данных в байтах

getFramePosition

int getFramePosition()
Получает текущую позицию в аудиоданных в образцах. Позиция кадра измеряет количество образцов, захваченных или сгенерированных линией с момента её открытия. Это возвращаемое значение будет циклически повторяться после 2^31 кадров. Рекомендуется использовать getLongFramePosition вместо этого.
Возвращает:
количество кадров, уже обработанных с момента открытия линии
См. также:
  • getLongFramePosition()

getLongFramePosition

long getLongFramePosition()
Получает текущую позицию в аудиоданных в образцах. Позиция кадра измеряет количество образцов, захваченных или сгенерированных линией с момента её открытия.
Возвращает:
количество кадров, уже обработанных с момента открытия линии
С:
1.5

getMicrosecondPosition

long getMicrosecondPosition()
Получает текущую позицию в аудиоданных в микросекундах. Позиция микросекунд измеряет время, соответствующее количеству образцов, захваченных или сгенерированных линией с момента её открытия. Уровень точности не гарантируется. Например, реализация может вычислить позицию микросекунд из текущей позиции кадра и частоты дискретизации аудиообразца. Точность в микросекундах затем будет ограничена количеством микросекунд на образец.
Возвращает:
количество микросекунд обработанных данных с момента открытия линии

getLevel

float getLevel()
Получает текущий уровень громкости для линии. Этот уровень — это мера текущей амплитуды сигнала и не следует путать с текущим значением регулятора усиления. Диапазон от 0,0 (тишина) до 1,0 (максимально возможная амплитуда звуковой формы). Единицы измерения — линейная амплитуда, а не децибелы.
Возвращает:
текущая амплитуда сигнала в этой линии или AudioSystem.NOT_SPECIFIED

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/sound/sampled/DataLine.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API