# SsaParser

Artifact: [androidx.media3:media3-extractor](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/extractor/text/ssa/SsaParser.java+class:androidx.media3.extractor.text.ssa.SsaParser)

*** ** * ** ***


```
@UnstableApi
class SsaParser : SubtitleParser
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser` for SSA/ASS.

## Summary

| ### Constants |
|---|---|
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/Format.CueReplacementBehavior https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/ssa/SsaParser#CUE_REPLACEMENT_BEHAVIOR() = 1` The `https://developer.android.com/reference/kotlin/androidx/media3/common/Format.CueReplacementBehavior` for consecutive `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` emitted by this implementation. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/ssa/SsaParser#SsaParser()()` |
| `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/ssa/SsaParser#SsaParser(java.util.List<byte[]>)(initializationData: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!>?)` Constructs an instance with optional format and header info. |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/Format.CueReplacementBehavior https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/ssa/SsaParser#getCueReplacementBehavior()()` Returns the `https://developer.android.com/reference/kotlin/androidx/media3/common/Format.CueReplacementBehavior` for consecutive `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` emitted by this implementation. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/ssa/SsaParser#parse(byte[],int,int,androidx.media3.extractor.text.SubtitleParser.OutputOptions,java.util.function.Consumer<androidx.media3.extractor.text.CuesWithTiming>)( data: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!, offset: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, length: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, outputOptions: https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser.OutputOptions!, output: https://developer.android.com/reference/java/util/function/Consumer.html<https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming!>! )` Parses `data` (and any data stored from previous invocations) and emits any resulting complete `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` instances via `output`. |

### Inherited functions

From [androidx.media3.extractor.text.SubtitleParser](https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser#parse(byte[],androidx.media3.extractor.text.SubtitleParser.OutputOptions,java.util.function.Consumer<androidx.media3.extractor.text.CuesWithTiming>)(
data: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!,
outputOptions: https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser.OutputOptions!,
output: https://developer.android.com/reference/java/util/function/Consumer.html<https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming!>!
)`

Parses `data` (and any data stored from previous invocations) and emits resulting `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` instances.
`https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/Subtitle!` `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser#parseToLegacySubtitle(byte[],int,int)(data: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!, offset: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, length: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Parses `data` to a legacy `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/Subtitle` instance.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser#reset()()`

Clears any data stored inside this parser from previous `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser#parse(byte[],androidx.media3.extractor.text.SubtitleParser.OutputOptions,java.util.function.Consumer<androidx.media3.extractor.text.CuesWithTiming>)` calls.

## Constants

### CUE_REPLACEMENT_BEHAVIOR

```
@Format.CueReplacementBehavior
const val CUE_REPLACEMENT_BEHAVIOR = 1: Int
```

The `https://developer.android.com/reference/kotlin/androidx/media3/common/Format.CueReplacementBehavior` for consecutive `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` emitted by this implementation.

## Public constructors

### SsaParser

```
SsaParser()
```

### SsaParser

```
SsaParser(initializationData: (Mutable)List<ByteArray<Byte>!>?)
```

Constructs an instance with optional format and header info.

| Parameters |
|---|---|
| `initializationData: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!>?` | Optional initialization data for the parser. If not null or empty, the initialization data must consist of two byte arrays. The first must contain an SSA format line. The second must contain an SSA header that will be assumed common to all samples. The header is everything in an SSA file before the `[Events]` section (i.e. `[Script Info]` and optional `[V4+ Styles]` section. |

## Public functions

### getCueReplacementBehavior

```
@Format.CueReplacementBehavior
fun getCueReplacementBehavior(): Int
```

Returns the `https://developer.android.com/reference/kotlin/androidx/media3/common/Format.CueReplacementBehavior` for consecutive `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` emitted by this implementation.

A given instance must always return the same value from this method.

### parse

```
fun parse(
    data: ByteArray<Byte>!,
    offset: Int,
    length: Int,
    outputOptions: SubtitleParser.OutputOptions!,
    output: Consumer<CuesWithTiming!>!
): Unit
```

Parses `data` (and any data stored from previous invocations) and emits any resulting complete `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` instances via `output`.

Any samples not used from `data` will be persisted and used during subsequent calls to this method.

`https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming#startTimeUs()` in an emitted instance is derived only from the provided sample data, so has to be considered together with any relevant `https://developer.android.com/reference/kotlin/androidx/media3/common/Format#subsampleOffsetUs()`. If the provided sample doesn't contain any timing information then at most one `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` instance will be emitted, with `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming#startTimeUs()` set to `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()`, in which case `https://developer.android.com/reference/kotlin/androidx/media3/common/Format#subsampleOffsetUs()`**must** be `https://developer.android.com/reference/kotlin/androidx/media3/common/Format#OFFSET_SAMPLE_RELATIVE()`.

| Parameters |
|---|---|
| `data: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-byte/index.html>!` | The subtitle data to parse. This must contain only complete samples. For subtitles muxed inside a media container, a sample is usually defined by the container. For subtitles read from a text file, a sample is usually the entire contents of the text file. |
| `offset: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index in `data` to start reading from (inclusive). |
| `length: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The number of bytes to read from `data`. |
| `outputOptions: https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser.OutputOptions!` | Options to control how instances are emitted to `output`. |
| `output: https://developer.android.com/reference/java/util/function/Consumer.html<https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming!>!` | A consumer for `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/CuesWithTiming` instances emitted by this method. All calls will be made on the thread that called this method, and will be completed before this method returns. |