Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(506)

Unified Diff: webrtc/modules/video_coding/h264_sps_pps_tracker.cc

Issue 2565173009: Wire up H264 fmtp sprop-parameter-sets with H264SpsPpsTracker. (Closed)
Patch Set: uint16_t -> int16_t Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/video_coding/h264_sps_pps_tracker.h ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/video_coding/h264_sps_pps_tracker.cc
diff --git a/webrtc/modules/video_coding/h264_sps_pps_tracker.cc b/webrtc/modules/video_coding/h264_sps_pps_tracker.cc
index 7bcc2b7c5e47d0293fa903d2c93f0cff309487b3..d8eb20fb1a915e2fa7e7e67e1b3825750d248c39 100644
--- a/webrtc/modules/video_coding/h264_sps_pps_tracker.cc
+++ b/webrtc/modules/video_coding/h264_sps_pps_tracker.cc
@@ -11,10 +11,13 @@
#include "webrtc/modules/video_coding/h264_sps_pps_tracker.h"
#include <string>
+#include <utility>
#include "webrtc/base/checks.h"
#include "webrtc/base/logging.h"
#include "webrtc/common_video/h264/h264_common.h"
+#include "webrtc/common_video/h264/pps_parser.h"
+#include "webrtc/common_video/h264/sps_parser.h"
#include "webrtc/modules/video_coding/frame_object.h"
#include "webrtc/modules/video_coding/packet_buffer.h"
@@ -179,5 +182,33 @@ H264SpsPpsTracker::PacketAction H264SpsPpsTracker::CopyAndFixBitstream(
return kInsert;
}
+void H264SpsPpsTracker::InsertSpsPps(const std::vector<uint8_t>& sps,
+ const std::vector<uint8_t>& pps) {
+ rtc::Optional<SpsParser::SpsState> parsed_sps =
+ SpsParser::ParseSps(sps.data(), sps.size());
+ rtc::Optional<PpsParser::PpsState> parsed_pps =
+ PpsParser::ParsePps(pps.data(), pps.size());
+
+ if (!parsed_pps || !parsed_sps) {
+ LOG(LS_WARNING) << "Failed to parse SPS or PPS parameters.";
+ return;
+ }
+
+ SpsInfo sps_info;
+ sps_info.size = sps.size();
+ uint8_t* sps_data = new uint8_t[sps_info.size];
+ memcpy(sps_data, sps.data(), sps_info.size);
+ sps_info.data.reset(sps_data);
+ sps_data_[parsed_sps->id] = std::move(sps_info);
+
+ PpsInfo pps_info;
+ pps_info.size = pps.size();
+ pps_info.sps_id = parsed_pps->sps_id;
+ uint8_t* pps_data = new uint8_t[pps_info.size];
+ memcpy(pps_data, pps.data(), pps_info.size);
+ pps_info.data.reset(pps_data);
+ pps_data_[parsed_pps->id] = std::move(pps_info);
+}
+
} // namespace video_coding
} // namespace webrtc
« no previous file with comments | « webrtc/modules/video_coding/h264_sps_pps_tracker.h ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698