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:
philipel
2017-12-12 13:58:31 +01:00
committed by Commit Bot
parent 00f934abc4
commit 1610f94ee3
5 changed files with 13 additions and 13 deletions

View File

@ -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;

View File

@ -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|.

View File

@ -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);

View File

@ -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

View File

@ -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);
}