Skip to content

Commit

Permalink
Merge branch 'release/18.10.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
voluntas committed Nov 16, 2018
2 parents b3b7a73 + dbc2691 commit 49f732c
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 20 deletions.
10 changes: 10 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@

## develop

## 18.10.1

- [UPDATE] 利用している libwebrtc のライブラリを M71 にする
- [FIX] --metadata を Sora のみのオプションにする
- [FIX] P2P のオプションに --document-root を追加する
- [FIX] P2P モードで Web サーバが立ち上がった場合カレントディレクトリを晒さないようにする
- [FIX] --auido-bitrate を指定した場合に、--auido-bitrate に指定したビットレートがビデオのビットレートとして扱われる問題を修正

## 18.10.1-rc0

- [UPDATE] websocketpp と civietweb を Boost.beast に置き換える

## 18.10.0
Expand Down
4 changes: 2 additions & 2 deletions build/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BUILD_NUMBER=$(shell date +"%Y%m%d%H%M%S")
WEBRTC_VERSION=70
MOMO_VERSION=18.10.1-rc0
WEBRTC_VERSION=71
MOMO_VERSION=18.10.1

TARGET=$@

Expand Down
8 changes: 4 additions & 4 deletions hwenc_il/il_h264_encoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ int32_t ILH264Encoder::Encode(

encoded_image_._encodedWidth = frame_buffer->width();
encoded_image_._encodedHeight = frame_buffer->height();
encoded_image_._timeStamp = input_frame.timestamp();
encoded_image_.SetTimestamp(input_frame.timestamp());
encoded_image_.ntp_time_ms_ = input_frame.ntp_time_ms();
encoded_image_.capture_time_ms_ = input_frame.render_time_ms();
encoded_image_.rotation_ = input_frame.rotation();
Expand Down Expand Up @@ -671,11 +671,11 @@ int32_t ILH264Encoder::DrainEncodedData()
size_t required_size = 0;
size_t writtenSize = 0;
uint64_t buf_time = (((((uint64_t)out->nTimeStamp.nHighPart << 32) & 0xFFFFFFFF00000000) + (uint64_t)out->nTimeStamp.nLowPart)) / 1000ll;
if (buf_time != encoded_image_._timeStamp)
if (buf_time != encoded_image_.Timestamp())
{
RTC_LOG(LS_ERROR) << "Error timestamp is not match. timestamp:" << encoded_image_._timeStamp << " buf_time:" << buf_time;
RTC_LOG(LS_ERROR) << "Error timestamp is not match. timestamp:" << encoded_image_.Timestamp() << " buf_time:" << buf_time;
}
if (buf_time < encoded_image_._timeStamp)
if (buf_time < encoded_image_.Timestamp())
{
RTC_LOG(LS_ERROR) << "buf_time is yanger than timestamp. retry get buffer.";
out->nFilledLen = 0;
Expand Down
7 changes: 4 additions & 3 deletions src/connection_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ struct ConnectionSettings
int framerate = 0;
std::string priority = "BALANCE";

nlohmann::json metadata;

std::string sora_signaling_host = "wss://example.com/signaling";
std::string sora_channel_id;
bool sora_auto_connect = false;
nlohmann::json sora_metadata;

int p2p_port = 8080;
std::string p2p_document_root;

int getWidth() {
if (resolution == "QVGA") {
Expand Down Expand Up @@ -73,11 +73,12 @@ struct ConnectionSettings
os << "resolution: " << cs.resolution << "\n";
os << "framerate: " << cs.framerate << "\n";
os << "priority: " << cs.priority << "\n";
os << "metadata: " << cs.metadata << "\n";
os << "sora_signaling_host: " << cs.sora_signaling_host << "\n";
os << "sora_channel_id: " << cs.sora_channel_id << "\n";
os << "sora_auto_connect: " << (cs.sora_auto_connect ? "true" : "false") << "\n";
os << "sora_metadata: " << cs.sora_metadata << "\n";
os << "p2p_port: " << cs.p2p_port << "\n";
os << "p2p_document_root: " << cs.p2p_document_root << "\n";
return os;
}
};
Expand Down
39 changes: 30 additions & 9 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,24 @@ struct JsonValue : public CLI::Validator {
}
};

// ディレクトリが存在するか確認するバリデータ
struct DirectoryExists : public CLI::Validator {
DirectoryExists() {
tname = "Directory";
func = [](std::string input) {
auto path = boost::filesystem::path(input);
auto st = boost::filesystem::status(path);
if (!boost::filesystem::exists(st)) {
return "Path " + input + " not exists";
}
if (!boost::filesystem::is_directory(st)) {
return "Path " + input + " is not directory";
}

return std::string();
};
}
};

int main(int argc, char* argv[])
{
Expand All @@ -94,25 +112,26 @@ int main(int argc, char* argv[])
app.add_option("--video-codec", cs.video_codec, "ビデオコーデック")->check(Enum({"VP8", "VP9", "H264"}));
app.add_option("--audio-codec", cs.audio_codec, "オーディオコーデック")->check(Enum({"OPUS", "PCMU"}));
app.add_option("--video-bitrate", cs.video_bitrate, "ビデオのビットレート")->check(CLI::Range(1, 30000));
app.add_option("--audio-bitrate", cs.video_bitrate, "オーディオのビットレート")->check(CLI::Range(6, 510));
app.add_option("--audio-bitrate", cs.audio_bitrate, "オーディオのビットレート")->check(CLI::Range(6, 510));
app.add_option("--resolution", cs.resolution, "解像度")->check(Enum({"QVGA", "VGA", "HD", "FHD", "4K"}));
app.add_option("--framerate", cs.framerate, "フレームレート")->check(CLI::Range(1, 60));
app.add_option("--priority", cs.priority, "優先設定 (Experimental)")->check(Enum({"BALANCE", "FRAMERATE", "RESOLUTION"}));
app.add_flag("--daemon", is_daemon, "デーモン化する");
app.add_flag("--version", version, "バージョン情報の表示");
app.add_option("--log-level", log_level, "ログレベル")->check(CLI::Range(0, 5));
// 隠しオプション
std::string metadata;
app.add_option("--metadata", metadata, "メタデータ")->group("")->check(JsonValue());

auto p2p_app = app.add_subcommand("p2p", "P2P");
auto sora_app = app.add_subcommand("sora", "WebRTC SFU Sora");

p2p_app->add_option("--port", cs.p2p_port, "ポート番号")->check(CLI::Range(0, 65535));
p2p_app->add_option("--document-root", cs.p2p_document_root, "配信ディレクトリ")->check(DirectoryExists());

sora_app->add_option("SIGNALING-URL", cs.sora_signaling_host, "シグナリングホスト")->required();
sora_app->add_option("CHANNEL-ID", cs.sora_channel_id, "チャンネルID")->required();
sora_app->add_flag("--auto", cs.sora_auto_connect, "自動接続する");
// 隠しオプション
std::string sora_metadata;
sora_app->add_option("--metadata", sora_metadata, "メタデータ")->group("")->check(JsonValue());

try {
app.parse(argc, argv);
Expand All @@ -121,8 +140,12 @@ int main(int argc, char* argv[])
}

// メタデータのパース
if (!metadata.empty()) {
cs.metadata = json::parse(metadata);
if (!sora_metadata.empty()) {
cs.sora_metadata = json::parse(sora_metadata);
}

if (cs.p2p_document_root.empty()) {
cs.p2p_document_root = boost::filesystem::current_path().string();
}

if (version) {
Expand Down Expand Up @@ -162,8 +185,6 @@ int main(int argc, char* argv[])

std::unique_ptr<RTCManager> rtc_manager(new RTCManager(cs));

std::string currentPath = boost::filesystem::path(boost::filesystem::current_path()).string();

{
boost::asio::io_context ioc{1};

Expand All @@ -179,7 +200,7 @@ int main(int argc, char* argv[])

if (p2p_app->parsed()) {
const boost::asio::ip::tcp::endpoint endpoint{boost::asio::ip::make_address("0.0.0.0"), static_cast<unsigned short>(cs.p2p_port)};
std::make_shared<P2PServer>(ioc, endpoint, std::make_shared<std::string>(currentPath), rtc_manager.get(), cs)->run();
std::make_shared<P2PServer>(ioc, endpoint, std::make_shared<std::string>(cs.p2p_document_root), rtc_manager.get(), cs)->run();
}

ioc.run();
Expand Down
4 changes: 2 additions & 2 deletions src/sora/sora_websocket_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,8 +253,8 @@ void SoraWebsocketClient::doSendConnect()
{"channel_id", conn_settings_.sora_channel_id},
};

if (!conn_settings_.metadata.is_null()) {
json_message["metadata"] = conn_settings_.metadata;
if (!conn_settings_.sora_metadata.is_null()) {
json_message["metadata"] = conn_settings_.sora_metadata;
}

json_message["video"]["codec_type"] = conn_settings_.video_codec;
Expand Down

0 comments on commit 49f732c

Please sign in to comment.