template <typename CodecParams>

class CodecAdapterSWImpl

Defined at line 19 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

Protected Members

std::optional<CodecParams> codec_params_
optional min_output_buffer_size_

Public Methods

void CodecAdapterSWImpl<CodecParams> (std::mutex & lock, CodecAdapterEvents * codec_adapter_events)

Defined at line 35 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

void ~CodecAdapterSWImpl<CodecParams> ()

Defined at line 37 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

fuchsia_sysmem2::BufferCollectionConstraints CoreCodecGetBufferCollectionConstraints2 (CodecPort port, const fuchsia::media::StreamBufferConstraints & stream_buffer_constraints, const fuchsia::media::StreamBufferPartialSettings & partial_settings)

Defined at line 39 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

void CoreCodecSetBufferCollectionInfo (CodecPort port, const fuchsia_sysmem2::BufferCollectionInfo & buffer_collection_info)

Defined at line 72 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

Protected Methods

InputLoopStatus ProcessFormatDetails (const fuchsia::media::FormatDetails & format_details)

Processes format details and initializes appropriate internal configurations based

on it.

`codec_params_` should be initialized in this method, followed by calling

`InitChunkInputStream()` so that `chunk_input_stream_` and `min_output_buffer_size_` are

initialized.

int ProcessInputChunkData (const uint8_t * input_data, size_t input_data_size, uint8_t * output_buffer, size_t output_buffer_size)

Processes the data from input data. If processing was successful, returns the number

of output data bytes produced. If an error occurred, it returns -1.

For encoder, this method encodes the input data. For decoder, it decodes the input data.

The method manipulates the output buffer.

size_t InputChunkSize ()

The minimum frame size (number of input data bytes that can be processed) is 1 byte.

For convenience and intuition, we enforce the same for `ChunkInputStream::InputBlock`.

size_t MinOutputBufferSize ()

Returns the minimum number of bytes required to hold output data that is produced from

processing a single input chunk.

`codec_params_` is guaranteed to be populated when `CodecAdapterSWImpl` calls this method.

Implementations of `BufferCollectionConstraints(kOutputPort)` should read

`min_output_buffer_size_` rather than calling this method if the size depends on

`codec_params_`.

fuchsia::sysmem::BufferCollectionConstraints BufferCollectionConstraints (CodecPort port)

Returns the constraints to use for `CodecAdapter::CoreCodecGetBufferCollectionConstraints2`

depending on the port. The fields used are:

- fuchsia::sysmem::BufferCollectionConstraints.min_buffer_count_for_camping

- fuchsia::sysmem::BufferCollectionConstraints.buffer_memory_constraints.min_size_bytes

- fuchsia::sysmem::BufferCollectionConstraints.buffer_memory_constraints.max_size_bytes

For `kOutputPort`, once `ProcessFormatDetails()` has succeeded at least once, this method may

be called even after `CleanUpAfterStream()` (where `ResetCodecParams()` has reset

`codec_params_`) before a subsequent stream runs `ProcessFormatDetails()`. Implementations

must not assume `codec_params_.has_value()` here and should use `min_output_buffer_size_` if

the minimum output buffer size depends on stream format details.

TimestampExtrapolator CreateTimestampExtrapolator (const fuchsia::media::FormatDetails & format_details)
void ProcessInputLoop ()

Defined at line 77 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

void InitChunkInputStream (const fuchsia::media::FormatDetails & format_details)

Defined at line 143 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

void CleanUpAfterStream ()

Defined at line 244 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

void ResetCodecParams ()

Reset codec params. Default behaviour is to reset it to null option.

Defined at line 308 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

Enumerations

enum InputLoopStatus
Name Value Comments
kOk 0

Indicates the loop should continue.

kShouldTerminate 1

Indicates the loop should break/terminate.

Defined at line 21 of file ../../src/media/codec/codecs/sw/codec_adapter_sw_impl.h

Records