Spec-Zone.ru › OpenJDK 17

Интерфейс 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, 2021, 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/17/docs/api/java.desktop/javax/sound/sampled/DataLine.html

Spec-Zone.ru

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