2 * Copyright (c) 2022 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "MediaTransporterCallback.h"
20 #include "MediaTransporterLog.h"
22 using namespace tizen_media_transporter;
24 InvokablePtr CallbackFactory::createTrackAddedCallback(void* handle, mtprTrackAddedCallback cb, void* userdata)
26 return InvokablePtr(new TrackAddedCallback(handle, cb, userdata));
29 InvokablePtr CallbackFactory::createNoMoreTrackCallback(void* handle, mtprNoMoreTrackCallback cb, void* userdata)
31 return InvokablePtr(new NoMoreTrackCallback(handle, cb, userdata));
34 InvokablePtr CallbackFactory::createPacketCallback(void* handle, mtprMediaType type, mtprPacketCallback cb, void* userdata)
36 return InvokablePtr(new PacketCallback(handle, type, cb, userdata));
39 InvokablePtr CallbackFactory::createErrorCallback(void* handle, mtprErrorCallback cb, void* userdata)
41 return InvokablePtr(new ErrorCallback(handle, cb, userdata));
44 InvokablePtr CallbackFactory::createPacketSourceBufferStateCallback(void* handle, mtprPacketSourceBufferStateCallback cb, void* userdata)
46 return InvokablePtr(new PacketSourceBufferStateCallback(handle, cb, userdata));
49 InvokablePtr CallbackFactory::createConnectionStatsCallback(void* handle, mtprConnectionStatsCallback cb, void* userdata)
51 return InvokablePtr(new ConnectionStatsCallback(handle, cb, userdata));
54 TrackAddedCallback::TrackAddedCallback(void* handle, mtprTrackAddedCallback cb, void* userdata)
55 : AbstractCallback(handle, userdata), _callback(cb)
57 LOG_DEBUG(">>> callback[%p], handle[%p], user_data[%p] registered",
58 cb, handle, userdata);
61 void TrackAddedCallback::invoke(VariantData data1, VariantData data2)
63 auto mediaType = std::get<mtprMediaType>(data1);
64 auto trackId = std::get<unsigned int>(data2);
66 LOG_DEBUG(">>> callback[%p], mediaType[%d], trackId[%u], handle[%p], user_data[%p]",
67 _callback, mediaType, trackId, _handle, _userdata);
69 _callback(_handle, mediaType, trackId, _userdata);
72 NoMoreTrackCallback::NoMoreTrackCallback(void* handle, mtprNoMoreTrackCallback cb, void* userdata)
73 : AbstractCallback(handle, userdata), _callback(cb)
75 LOG_DEBUG(">>> callback[%p], handle[%p], user_data[%p] registered",
76 cb, handle, userdata);
79 void NoMoreTrackCallback::invoke()
81 LOG_DEBUG(">>> callback[%p], handle[%p], user_data[%p]",
82 _callback, _handle, _userdata);
84 _callback(_handle, _userdata);
87 PacketCallback::PacketCallback(void* handle, mtprMediaType type, mtprPacketCallback cb, void* userdata)
88 : AbstractCallback(handle, userdata), _type(type), _callback(cb)
90 LOG_DEBUG(">>> callback[%p], handle[%p], user_data[%p] registered",
91 cb, handle, userdata);
94 void PacketCallback::invoke(VariantData data1, VariantData data2)
96 auto trackId = std::get<unsigned int>(data1);
97 auto packet = std::get<media_packet_h>(data2);
99 LOG_VERBOSE(">>> callback[%p], handle[%p], type[%d], id[%d], packet[%p], user_data[%p]",
100 _callback, _handle, _type, trackId, packet, _userdata);
102 _callback(_handle, _type, trackId, packet, _userdata);
105 ErrorCallback::ErrorCallback(void* handle, mtprErrorCallback cb, void* userdata)
106 : AbstractCallback(handle, userdata), _callback(cb)
108 LOG_DEBUG(">>> callback[%p], handle[%p], user_data[%p] registered",
109 cb, handle, userdata);
112 void ErrorCallback::invoke(VariantData data)
114 auto error = std::get<mtprError>(data);
116 LOG_DEBUG(">>> callback[%p], handle[%p], error[%d], user_data[%p]",
117 _callback, _handle, error, _userdata);
119 _callback(_handle, error, _userdata);
122 PacketSourceBufferStateCallback::PacketSourceBufferStateCallback(void* handle, mtprPacketSourceBufferStateCallback cb, void* userdata)
123 : AbstractCallback(handle, userdata), _callback(cb)
125 LOG_DEBUG(">>> callback[%p], handle[%p], user_data[%p] registered",
126 cb, handle, userdata);
129 void PacketSourceBufferStateCallback::invoke(VariantData data1, VariantData data2)
131 auto sourceId = std::get<unsigned int>(data1);
132 auto state = std::get<mtprPacketSourceBufferState>(data2);
134 LOG_DEBUG(">>> callback[%p], handle[%p], sourcdId[%d], state[%d], user_data[%p]",
135 _callback, _handle, sourceId, state, _userdata);
137 _callback(sourceId, state, _userdata);
140 ConnectionStatsCallback::ConnectionStatsCallback(void* handle, mtprConnectionStatsCallback cb, void* userdata)
141 : AbstractCallback(handle, userdata), _callback(cb)
143 LOG_DEBUG(">>> callback[%p], handle[%p], user_data[%p] registered",
144 cb, handle, userdata);
147 bool ConnectionStatsCallback::invokeReturn(VariantData data)
149 auto prop = std::get<mtprConnectionStatsPropInfo>(data);
151 LOG_DEBUG(">>> callback[%p], handle[%p], prop[%p], user_data[%p]",
152 _callback, _handle, &prop, _userdata);
154 return _callback(_handle, &prop, _userdata);