#include <vector>
#include <mutex>
#include <tuple>
+#include <atomic>
#include "MediaTransporter.h"
#include "MediaTransporterParseIni.h"
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();
void setEncoderParam(gst::GstElements& elements, const param::encodingInfo& encInfo);
param::encodingInfo _encInfo;
+ unsigned int _sourceId { 0 };
+
+ static std::atomic_uint _sourceIds;
};
} // namespace
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
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
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);
{
}
-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)
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();