From 0dba7205e5609a9e7835d963f6d270ffd7f99bed Mon Sep 17 00:00:00 2001 From: Dimiden Date: Mon, 6 Jan 2025 12:55:17 +0900 Subject: [PATCH] Organized source codes --- src/projects/publishers/srt/srt_stream.cpp | 82 +++++++++++++--------- src/projects/publishers/srt/srt_stream.h | 4 ++ 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/src/projects/publishers/srt/srt_stream.cpp b/src/projects/publishers/srt/srt_stream.cpp index e96b62aaf..97a16dc80 100644 --- a/src/projects/publishers/srt/srt_stream.cpp +++ b/src/projects/publishers/srt/srt_stream.cpp @@ -48,6 +48,33 @@ namespace pub logad("SrtStream has been terminated finally"); } + bool SrtStream::IsSupportedCodec(cmn::MediaCodecId codec_id) + { + switch (codec_id) + { + case cmn::MediaCodecId::H264: + [[fallthrough]]; + case cmn::MediaCodecId::Aac: + return true; + + default: + return false; + } + } + +#define SRT_SET_TRACK(from, to, supported, message, ...) \ + if (to == nullptr) \ + { \ + if (supported) \ + { \ + to = from; \ + } \ + else \ + { \ + logai("SrtStream - " message, ##__VA_ARGS__); \ + } \ + } + bool SrtStream::Start() { if (GetState() != Stream::State::CREATED) @@ -82,39 +109,30 @@ namespace pub for (const auto &[id, track] : GetTracks()) { - if (mpegts::Packetizer::IsSupportedCodec(track->GetCodecId())) + switch (track->GetMediaType()) { - if ((first_video_track == nullptr) && (track->GetMediaType() == cmn::MediaType::Video)) - { - first_video_track = track; - } - else if ((first_audio_track == nullptr) && (track->GetMediaType() == cmn::MediaType::Audio)) - { - first_audio_track = track; - } - } - else if (track->GetMediaType() == cmn::MediaType::Data) - { - // mpegts::Packetizer only supports ID3v2 format for data track - if (track->GetOriginBitstream() == cmn::BitstreamFormat::ID3v2) - { - if (first_data_track == nullptr) - { - first_data_track = track; - } - } - else - { - logai("SrtStream - Ignore unsupported bitstream format(%s)", - GetBitstreamFormatString(track->GetOriginBitstream()).CStr()); - } - } - else - { - logai("SrtStream - Ignore unsupported codec(%s)", - StringFromMediaCodecId(track->GetCodecId()).CStr()); - - continue; + case cmn::MediaType::Video: + SRT_SET_TRACK(track, first_video_track, + IsSupportedCodec(track->GetCodecId()), + "Ignore unsupported video codec (%s)", StringFromMediaCodecId(track->GetCodecId()).CStr()); + break; + + case cmn::MediaType::Audio: + SRT_SET_TRACK(track, first_audio_track, + IsSupportedCodec(track->GetCodecId()), + "Ignore unsupported audio codec (%s)", StringFromMediaCodecId(track->GetCodecId()).CStr()); + break; + + case cmn::MediaType::Data: + // mpegts::Packetizer only supports ID3v2 format for data track + SRT_SET_TRACK(track, first_data_track, + (track->GetOriginBitstream() == cmn::BitstreamFormat::ID3v2), + "Ignore unsupported data bitstream format (%s)", GetBitstreamFormatString(track->GetOriginBitstream()).CStr()); + break; + + default: + logad("SrtStream - Ignore unsupported media type(%s)", GetMediaTypeString(track->GetMediaType()).CStr()); + continue; } } diff --git a/src/projects/publishers/srt/srt_stream.h b/src/projects/publishers/srt/srt_stream.h index 047ee83ad..7deddea83 100644 --- a/src/projects/publishers/srt/srt_stream.h +++ b/src/projects/publishers/srt/srt_stream.h @@ -27,6 +27,8 @@ namespace pub uint32_t worker_count); ~SrtStream() override final; + static bool IsSupportedCodec(cmn::MediaCodecId codec_id); + //-------------------------------------------------------------------- // Overriding of Stream //-------------------------------------------------------------------- @@ -53,6 +55,8 @@ namespace pub bool Start() override; bool Stop() override; + void SetTrack(const std::shared_ptr &from, std::shared_ptr *to); + void EnqueuePacket(const std::shared_ptr &media_packet); void BroadcastIfReady(const std::vector> &packets);