MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ extract_stream_metadata()

void MayaFlux::IO::AudioStreamContext::extract_stream_metadata ( const FFmpegDemuxContext demux,
FileMetadata out 
) const

Populate stream-specific fields into an existing FileMetadata.

Appends codec name, channel layout, bit_rate, sample_rate, etc.

Parameters
demuxThe demux context that owns the format_context.
outMetadata struct to append into.

Definition at line 179 of file AudioStreamContext.cpp.

181{
182 if (!codec_context || stream_index < 0)
183 return;
184
185 out.attributes["codec"] = std::string(avcodec_get_name(codec_context->codec_id));
186 out.attributes["codec_long_name"] = std::string(codec_context->codec->long_name);
187 out.attributes["total_frames"] = total_frames;
188 out.attributes["sample_rate"] = sample_rate;
189 out.attributes["channels"] = channels;
190 out.attributes["bit_rate"] = codec_context->bit_rate;
191
192 char layout_desc[256] = {};
193 av_channel_layout_describe(&codec_context->ch_layout, layout_desc, sizeof(layout_desc));
194 out.attributes["channel_layout"] = std::string(layout_desc);
195
196 AVStream* stream = demux.get_stream(stream_index);
197 if (!stream)
198 return;
199
200 AVDictionaryEntry* tag = nullptr;
201 while ((tag = av_dict_get(stream->metadata, "", tag, AV_DICT_IGNORE_SUFFIX)))
202 out.attributes[std::string("stream_") + tag->key] = std::string(tag->value);
203}
AVCodecContext * codec_context
Owned; freed in destructor.

References MayaFlux::IO::FileMetadata::attributes, channels, codec_context, MayaFlux::IO::FFmpegDemuxContext::get_stream(), sample_rate, stream_index, and total_frames.

+ Here is the call graph for this function: