---
title: "compression_stream_init(_:_:_:)"
framework: compression
role: symbol
role_heading: Function
path: "compression/compression_stream_init(_:_:_:)"
---

# compression_stream_init(_:_:_:)

Initializes a compression stream for either compression or decompression.

## Declaration

```swift
func compression_stream_init(_ stream: UnsafeMutablePointer<compression_stream>, _ operation: compression_stream_operation, _ algorithm: compression_algorithm) -> compression_status
```

## Parameters

- `stream`: Pointer to an allocated doc://com.apple.compression/documentation/Compression/compression_stream structure.
- `operation`: A constant of type doc://com.apple.compression/documentation/Compression/compression_stream_operation used to indicate the stream operation.
- `algorithm`: A constant of type doc://com.apple.compression/documentation/Compression/compression_algorithm that specifies the compression algorithm.

## Return Value

Return Value A value of type compression_status, interpreted as follows: COMPRESSION_STATUS_OK means the stream object was successfully initialized. COMPRESSION_STATUS_ERROR means an error occurred. Discussion After success of this function, set the dst_ptr, dst_size, src_ptr, and src_size fields of the stream structure to their respective values. You can then pass stream structure to the compression_stream_process(_:_:) function.

## See Also

### Multiple-step compression

- [compression_stream](compression/compression_stream.md)
- [compression_stream_process(_:_:)](compression/compression_stream_process(_:_:).md)
- [compression_stream_destroy(_:)](compression/compression_stream_destroy(_:).md)
- [compression_status](compression/compression_status.md)
- [compression_stream_flags](compression/compression_stream_flags.md)
- [compression_stream_operation](compression/compression_stream_operation.md)
- [compression_algorithm](compression/compression_algorithm.md)
