Detach RtpFrameReferenceFinder from RtpGenericFrameDescriptor

To allow to use the RtpFrameReferenceFinder with
an updated version of the frame descriptor extension

Bug: webrtc:10342
Change-Id: Ib60a505a714993862a008300aa64d0bb835c3377
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167361
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30407}
This commit is contained in:
Danil Chapovalov
2020-01-29 11:21:38 +01:00
committed by Commit Bot
parent 73a5e916a9
commit 26b4cb3fc5
2 changed files with 13 additions and 17 deletions

View File

@ -98,9 +98,8 @@ void RtpFrameReferenceFinder::HandOffFrame(
RtpFrameReferenceFinder::FrameDecision
RtpFrameReferenceFinder::ManageFrameInternal(RtpFrameObject* frame) {
absl::optional<RtpGenericFrameDescriptor> generic_descriptor =
frame->GetGenericFrameDescriptor();
if (generic_descriptor) {
if (const absl::optional<RTPVideoHeader::GenericDescriptorInfo>&
generic_descriptor = frame->GetRtpVideoHeader().generic) {
return ManageFrameGeneric(frame, *generic_descriptor);
}
@ -183,20 +182,18 @@ void RtpFrameReferenceFinder::UpdateLastPictureIdWithPadding(uint16_t seq_num) {
RtpFrameReferenceFinder::FrameDecision
RtpFrameReferenceFinder::ManageFrameGeneric(
RtpFrameObject* frame,
const RtpGenericFrameDescriptor& descriptor) {
int64_t frame_id = generic_frame_id_unwrapper_.Unwrap(descriptor.FrameId());
frame->id.picture_id = frame_id;
frame->id.spatial_layer = descriptor.SpatialLayer();
const RTPVideoHeader::GenericDescriptorInfo& descriptor) {
frame->id.picture_id = descriptor.frame_id;
frame->id.spatial_layer = descriptor.spatial_index;
rtc::ArrayView<const uint16_t> diffs = descriptor.FrameDependenciesDiffs();
if (EncodedFrame::kMaxFrameReferences < diffs.size()) {
if (EncodedFrame::kMaxFrameReferences < descriptor.dependencies.size()) {
RTC_LOG(LS_WARNING) << "Too many dependencies in generic descriptor.";
return kDrop;
}
frame->num_references = diffs.size();
for (size_t i = 0; i < diffs.size(); ++i)
frame->references[i] = frame_id - diffs[i];
frame->num_references = descriptor.dependencies.size();
for (size_t i = 0; i < descriptor.dependencies.size(); ++i)
frame->references[i] = descriptor.dependencies[i];
return kHandOff;
}