template <typename LocalOutput>

class CodecAdapterSW

Defined at line 47 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

Protected Members

BlockingMpscQueue input_queue_
BlockingMpscQueue free_output_packets_
BufferPool output_buffer_pool_
std::map<CodecPacket *, LocalOutput> in_use_by_client_
vector staged_output_buffers_
uint64_t input_format_details_version_ordinal_
Loop input_processing_loop_
thrd_t input_processing_thread_
bool output_reconfig_pending_
bool stream_active_
condition_variable reconfig_cond_

Public Methods

void CodecAdapterSW<LocalOutput> (std::mutex & lock, CodecAdapterEvents * codec_adapter_events)

Defined at line 49 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void ~CodecAdapterSW<LocalOutput> ()

Defined at line 57 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

bool IsCoreCodecRequiringOutputConfigForFormatDetection ()

Defined at line 59 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

bool IsCoreCodecMappedBufferUseful (CodecPort port)

Defined at line 61 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

bool IsCoreCodecHwBased (CodecPort port)

Defined at line 63 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecInit (const fuchsia::media::FormatDetails & initial_input_format_details)

Defined at line 65 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecAddBuffer (CodecPort port, const CodecBuffer * buffer)

Defined at line 86 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecConfigureBuffers (CodecPort port, const std::vector<std::unique_ptr<CodecPacket>> & packets)

Defined at line 94 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecStartStream ()

Defined at line 110 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecQueueInputFormatDetails (const fuchsia::media::FormatDetails & per_stream_override_format_details)

Defined at line 133 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecQueueInputPacket (const CodecPacket * packet)

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

void CoreCodecQueueInputEndOfStream ()

Defined at line 148 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecStopStream ()

Defined at line 152 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecRecycleOutputPacket (CodecPacket * packet)

Defined at line 178 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecEnsureBuffersNotConfigured (CodecPort port)

Defined at line 201 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecMidStreamOutputBufferReConfigPrepare ()

Defined at line 229 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void CoreCodecMidStreamOutputBufferReConfigFinish ()

Defined at line 233 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

std::unique_ptr<const fuchsia::media::StreamOutputConstraints> CoreCodecBuildNewOutputConstraints (uint64_t stream_lifetime_ordinal, uint64_t new_output_buffer_constraints_version_ordinal, bool buffer_constraints_action_required)

Defined at line 242 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

fuchsia::media::StreamOutputFormat CoreCodecGetOutputFormat (uint64_t stream_lifetime_ordinal, uint64_t new_output_format_details_version_ordinal)

Defined at line 260 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

Protected Methods

void ProcessInputLoop ()

Processes input in a loop. Should only execute on input_processing_thread_.

Loops for the lifetime of a stream.

void CleanUpAfterStream ()

Releases any resources from the just-ended stream.

std::pair<fuchsia::media::FormatDetails, size_t> OutputFormatDetails ()

Returns the format details of the output and the bytes needed to store each

output packet.

Subclasses can assume this is only called after the stream's format details

have been processed on `input_processing_thread_` and before

`CleanUpAfterStream()` resets per-stream format state. When reached through

`CoreCodecGetOutputFormat()` in production,

`CodecImpl::onCoreCodecOutputPacket()` calls this synchronously on

`input_processing_thread_`. Implementations must still acquire `lock_` when

reading per-stream format state (such as `codec_params_` or `context_`) so

that direct callers (such as unit tests) and any future off-thread callers

are safe.

void WaitForInputProcessingLoopToEnd ()

Defined at line 274 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h

void LoadStagedOutputBuffers ()

We don't give the codec any buffers in its output pool until

configuration is finished or a stream starts. Until finishing

configuration we stage all the buffers. Here we load all the staged

buffers so the codec can make output.

Defined at line 303 of file ../../src/media/codec/codecs/sw/codec_adapter_sw.h