OLD | NEW |
---|---|
(Empty) | |
1 /* | |
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 #include "webrtc/modules/video_coding/h264_sprop_parameter_sets.h" | |
12 | |
13 #include "webrtc/base/base64.h" | |
14 #include "webrtc/base/bitbuffer.h" | |
15 #include "webrtc/base/bytebuffer.h" | |
16 #include "webrtc/base/logging.h" | |
17 | |
18 namespace webrtc { | |
19 | |
20 static bool DecodeAndConvert(const std::string& base64, | |
21 std::vector<uint8_t>* binary) { | |
sprang_webrtc
2016/12/06 18:23:18
Why static?
We usually just put these kind of hel
johan
2016/12/07 17:10:40
Well, old habit from plain c days. *In this place*
| |
22 static constexpr rtc::Base64::DecodeFlags flags = rtc::Base64::DO_STRICT; | |
23 // TODO(johan): Directly decode to std::vector<uint8_t> when available. | |
24 std::vector<char> tmp; | |
25 bool success = rtc::Base64::DecodeFromArray(base64.data(), base64.size(), | |
26 flags, &tmp, nullptr); | |
27 if (!success) { | |
sprang_webrtc
2016/12/06 18:23:18
Don't need this temporary, just if (!DecodeFromArr
johan
2016/12/07 17:10:40
Done.
sprang_webrtc
2016/12/08 10:08:37
Seems to still be there?
| |
28 return false; | |
29 } | |
30 const uint8_t* data = reinterpret_cast<uint8_t*>(tmp.data()); | |
31 binary->assign(data, data + tmp.size()); | |
32 return success; | |
33 } | |
34 | |
35 bool H264SpropParameterSets::DecodeSprop(const std::string& sprop) { | |
36 size_t separator_pos = sprop.find(','); | |
37 if ((separator_pos <= 0) || (separator_pos >= sprop.length() - 1)) { | |
38 LOG(LS_WARNING) << "Invalid seperator position " << separator_pos << " *" | |
39 << sprop << "*"; | |
40 return false; | |
41 } | |
42 std::string sps_str = sprop.substr(0, separator_pos); | |
43 std::string pps_str = sprop.substr(separator_pos + 1, std::string::npos); | |
44 bool success; | |
sprang_webrtc
2016/12/06 18:23:18
dito
johan
2016/12/07 17:10:40
Done.
| |
45 success = DecodeAndConvert(sps_str, &sps_); | |
46 if (!success) { | |
47 LOG(LS_WARNING) << "Failed to decode sps *" << sprop << "*"; | |
sprang_webrtc
2016/12/06 18:23:18
Should that be sps_str?
johan
2016/12/07 17:10:40
Actually I want to output the entire string in cas
| |
48 return false; | |
49 } | |
50 success = DecodeAndConvert(pps_str, &pps_); | |
51 if (!success) { | |
52 LOG(LS_WARNING) << "Failed to decode pps *" << sprop << "*"; | |
53 return false; | |
54 } | |
55 return true; | |
56 } | |
57 | |
58 } // namespace webrtc | |
OLD | NEW |