[1.0.17][IMediaSourceBin] Add interface to get source id 64/287264/8
authorSeungbae Shin <seungbae.shin@samsung.com>
Thu, 26 Jan 2023 04:44:00 +0000 (13:44 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Fri, 27 Jan 2023 07:44:33 +0000 (16:44 +0900)
Change-Id: I74724cc6df4f4c65ebb0b5202e63e62d7ad661c1

include/MediaSourceBinBase.h
include/MediaTransporterSender.h
packaging/capi-media-transporter.spec
src/MediaSourceBinBase.cpp
src/MediaTransporterSender.cpp

index 5451e67..a48ad3a 100644 (file)
@@ -23,6 +23,7 @@
 #include <vector>
 #include <mutex>
 #include <tuple>
+#include <atomic>
 
 #include "MediaTransporter.h"
 #include "MediaTransporterParseIni.h"
@@ -40,14 +41,17 @@ class IMediaSourceBin
 public:
        virtual ~IMediaSourceBin() = default;
        virtual MediaSourceBinInfo generate() = 0;
+       virtual unsigned int sourceId() = 0;
 };
 
 class MediaSourceBinBase : public IMediaSourceBin
 {
 public:
-       MediaSourceBinBase() = default;
+       MediaSourceBinBase();
        ~MediaSourceBinBase() = default;
 
+       unsigned int sourceId() override;
+
        void setEncodingBitrate(int bitRate);
        int getEncodingBitrate();
 
@@ -55,6 +59,9 @@ protected:
        void setEncoderParam(gst::GstElements& elements, const param::encodingInfo& encInfo);
 
        param::encodingInfo _encInfo;
+       unsigned int _sourceId { 0 };
+
+       static std::atomic_uint _sourceIds;
 };
 
 } // namespace
index 32bf2c4..1574476 100644 (file)
@@ -34,14 +34,14 @@ public:
        MediaTransporterSender() = default;
        virtual ~MediaTransporterSender();
 
-       int addMediaSource(IMediaSourceBin* sourceBin);
+       unsigned int addMediaSource(IMediaSourceBin* sourceBin);
        void removeMediaSource(int id);
 
-       IMediaSourceBin* getMediaSource(int id);
+       IMediaSourceBin* getMediaSource(unsigned int id);
 
 protected:
        void linkMediaSourceToMuxer(GstElement* mux);
-       std::map<int, std::unique_ptr<IMediaSourceBin>> _mediaSources;
+       std::map<unsigned int, std::unique_ptr<IMediaSourceBin>> _mediaSources;
 };
 
 } // namespace
index 4a27867..515a5a3 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-transporter
 Summary:    A Media Transporter library in Tizen Native API
-Version:    1.0.16
+Version:    1.0.17
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index cb4caf5..bfa57b7 100644 (file)
@@ -31,6 +31,18 @@ extern "C" {
 
 using namespace tizen_media_transporter;
 
+std::atomic_uint MediaSourceBinBase::_sourceIds = 0;
+
+MediaSourceBinBase::MediaSourceBinBase()
+{
+       _sourceId = ++MediaSourceBinBase::_sourceIds;
+}
+
+unsigned int MediaSourceBinBase::sourceId()
+{
+       return _sourceId;
+}
+
 void MediaSourceBinBase::setEncoderParam(gst::GstElements& elements, const param::encodingInfo& encInfo)
 {
        GstElement* encoder = gst::_findEncoderElement(elements);
index 83fa345..55ced15 100644 (file)
@@ -28,12 +28,14 @@ MediaTransporterSender::~MediaTransporterSender()
 {
 }
 
-int MediaTransporterSender::addMediaSource(IMediaSourceBin* sourceBin)
+unsigned int MediaTransporterSender::addMediaSource(IMediaSourceBin* sourceBin)
 {
-       static int id = 0;
-       _mediaSources.insert(std::make_pair(id, std::unique_ptr<IMediaSourceBin>(sourceBin)));
-       LOG_INFO("media source id:%d has been added bin:%p", id, sourceBin);
-       return id++;
+       unsigned int sourceId = sourceBin->sourceId();
+
+       _mediaSources.insert(std::make_pair(sourceId, std::unique_ptr<IMediaSourceBin>(sourceBin)));
+       LOG_INFO("media source bin (%p, id:%u) added", sourceBin, sourceId);
+
+       return sourceId;
 }
 
 void MediaTransporterSender::removeMediaSource(int id)
@@ -44,7 +46,7 @@ void MediaTransporterSender::removeMediaSource(int id)
        LOG_INFO("media source id:%d has been removed", id);
 }
 
-IMediaSourceBin* MediaTransporterSender::getMediaSource(int id)
+IMediaSourceBin* MediaTransporterSender::getMediaSource(unsigned int id)
 {
        try {
                return _mediaSources.at(id).get();