Don't cast picture ids (of type int64_t) to int.
Also cleaned up a bit in RtpFrameReferenceFinder. Bug: chromium:762556 Change-Id: Ib08d2e7ce4b146b359ce9ba823f3aa15776c71bc Reviewed-on: https://webrtc-review.googlesource.com/32301 Reviewed-by: Stefan Holmer <stefan@webrtc.org> Commit-Queue: Philip Eliasson <philipel@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21282}
This commit is contained in:
@ -285,7 +285,7 @@ void FrameBuffer::UpdatePlayoutDelays(const FrameObject& frame) {
|
||||
timing_->set_max_playout_delay(playout_delay.max_ms);
|
||||
}
|
||||
|
||||
int FrameBuffer::InsertFrame(std::unique_ptr<FrameObject> frame) {
|
||||
int64_t FrameBuffer::InsertFrame(std::unique_ptr<FrameObject> frame) {
|
||||
TRACE_EVENT0("webrtc", "FrameBuffer::InsertFrame");
|
||||
RTC_DCHECK(frame);
|
||||
if (stats_callback_)
|
||||
@ -295,7 +295,7 @@ int FrameBuffer::InsertFrame(std::unique_ptr<FrameObject> frame) {
|
||||
|
||||
rtc::CritScope lock(&crit_);
|
||||
|
||||
int last_continuous_picture_id =
|
||||
int64_t last_continuous_picture_id =
|
||||
last_continuous_frame_it_ == frames_.end()
|
||||
? -1
|
||||
: last_continuous_frame_it_->first.picture_id;
|
||||
|
@ -47,7 +47,7 @@ class FrameBuffer {
|
||||
|
||||
// Insert a frame into the frame buffer. Returns the picture id
|
||||
// of the last continuous frame or -1 if there is no continuous frame.
|
||||
int InsertFrame(std::unique_ptr<FrameObject> frame);
|
||||
int64_t InsertFrame(std::unique_ptr<FrameObject> frame);
|
||||
|
||||
// Get the next frame for decoding. Will return at latest after
|
||||
// |max_wait_time_ms|.
|
||||
|
@ -291,7 +291,7 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8(
|
||||
if (frame->frame_type() == kVideoFrameKey) {
|
||||
frame->num_references = 0;
|
||||
layer_info_[codec_header.tl0PicIdx].fill(-1);
|
||||
UpdateLayerInfoVp8(frame);
|
||||
UpdateLayerInfoVp8(frame, codec_header);
|
||||
return kHandOff;
|
||||
}
|
||||
|
||||
@ -313,7 +313,7 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8(
|
||||
.first;
|
||||
frame->num_references = 1;
|
||||
frame->references[0] = layer_info_it->second[0];
|
||||
UpdateLayerInfoVp8(frame);
|
||||
UpdateLayerInfoVp8(frame, codec_header);
|
||||
return kHandOff;
|
||||
}
|
||||
|
||||
@ -322,7 +322,7 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8(
|
||||
frame->num_references = 1;
|
||||
frame->references[0] = layer_info_it->second[0];
|
||||
|
||||
UpdateLayerInfoVp8(frame);
|
||||
UpdateLayerInfoVp8(frame, codec_header);
|
||||
return kHandOff;
|
||||
}
|
||||
|
||||
@ -366,14 +366,13 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8(
|
||||
frame->references[layer] = layer_info_it->second[layer];
|
||||
}
|
||||
|
||||
UpdateLayerInfoVp8(frame);
|
||||
UpdateLayerInfoVp8(frame, codec_header);
|
||||
return kHandOff;
|
||||
}
|
||||
|
||||
void RtpFrameReferenceFinder::UpdateLayerInfoVp8(RtpFrameObject* frame) {
|
||||
rtc::Optional<RTPVideoTypeHeader> rtp_codec_header = frame->GetCodecHeader();
|
||||
RTC_DCHECK(rtp_codec_header);
|
||||
const RTPVideoHeaderVP8& codec_header = rtp_codec_header->VP8;
|
||||
void RtpFrameReferenceFinder::UpdateLayerInfoVp8(
|
||||
RtpFrameObject* frame,
|
||||
const RTPVideoHeaderVP8& codec_header) {
|
||||
uint8_t tl0_pic_idx = codec_header.tl0PicIdx;
|
||||
uint8_t temporal_index = codec_header.temporalIdx;
|
||||
auto layer_info_it = layer_info_.find(tl0_pic_idx);
|
||||
|
@ -99,7 +99,8 @@ class RtpFrameReferenceFinder {
|
||||
|
||||
// Updates necessary layer info state used to determine frame references for
|
||||
// Vp8.
|
||||
void UpdateLayerInfoVp8(RtpFrameObject* frame)
|
||||
void UpdateLayerInfoVp8(RtpFrameObject* frame,
|
||||
const RTPVideoHeaderVP8& codec_header)
|
||||
RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
||||
|
||||
// Find references for Vp9 frames
|
||||
|
@ -350,7 +350,7 @@ void VideoReceiveStream::RequestKeyFrame() {
|
||||
|
||||
void VideoReceiveStream::OnCompleteFrame(
|
||||
std::unique_ptr<video_coding::FrameObject> frame) {
|
||||
int last_continuous_pid = frame_buffer_->InsertFrame(std::move(frame));
|
||||
int64_t last_continuous_pid = frame_buffer_->InsertFrame(std::move(frame));
|
||||
if (last_continuous_pid != -1)
|
||||
rtp_video_stream_receiver_.FrameContinuous(last_continuous_pid);
|
||||
}
|
||||
|
Reference in New Issue
Block a user