summaryrefslogtreecommitdiff
path: root/chromium/content/common
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-09-28 18:37:14 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-09-29 07:47:06 +0000
commit0e8ff63a407fe323e215bb1a2c423c09a4747c8a (patch)
treee27e357e125d2d705bd504e1e3c8a3da1ed20f1d /chromium/content/common
parentc3d0bb5bb15d008606b18b865841e19cd9bb5847 (diff)
downloadqtwebengine-chromium-0e8ff63a407fe323e215bb1a2c423c09a4747c8a.tar.gz
BASELINE: Update chromium to 45.0.2454.101upstream-45
Also adds web_cache component Change-Id: I51238ceea8ee99854cc4989ae70a4fc2fc6bedcb Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Diffstat (limited to 'chromium/content/common')
-rw-r--r--chromium/content/common/gpu/media/h264_decoder.cc34
1 files changed, 18 insertions, 16 deletions
diff --git a/chromium/content/common/gpu/media/h264_decoder.cc b/chromium/content/common/gpu/media/h264_decoder.cc
index 9953ff21a59..6f9c9180482 100644
--- a/chromium/content/common/gpu/media/h264_decoder.cc
+++ b/chromium/content/common/gpu/media/h264_decoder.cc
@@ -362,9 +362,6 @@ void H264Decoder::ConstructReferencePicListsP(
dpb_.GetLongTermRefPicsAppending(&ref_pic_list_p0_);
std::sort(ref_pic_list_p0_.begin() + num_short_refs, ref_pic_list_p0_.end(),
LongTermPicNumAscCompare());
-
- // Cut off if we have more than requested in slice header.
- ref_pic_list_p0_.resize(slice_hdr->num_ref_idx_l0_active_minus1 + 1);
}
struct POCAscCompare {
@@ -436,12 +433,6 @@ void H264Decoder::ConstructReferencePicListsB(
std::equal(ref_pic_list_b0_.begin(), ref_pic_list_b0_.end(),
ref_pic_list_b1_.begin()))
std::swap(ref_pic_list_b1_[0], ref_pic_list_b1_[1]);
-
- // Per 8.2.4.2 it's possible for num_ref_idx_lX_active_minus1 to indicate
- // there should be more ref pics on list than we constructed.
- // Those superfluous ones should be treated as non-reference.
- ref_pic_list_b0_.resize(slice_hdr->num_ref_idx_l0_active_minus1 + 1);
- ref_pic_list_b1_.resize(slice_hdr->num_ref_idx_l1_active_minus1 + 1);
}
// See 8.2.4
@@ -489,25 +480,36 @@ static void ShiftRightAndInsert(H264Picture::Vector* v,
bool H264Decoder::ModifyReferencePicList(media::H264SliceHeader* slice_hdr,
int list,
H264Picture::Vector* ref_pic_listx) {
+ bool ref_pic_list_modification_flag_lX;
int num_ref_idx_lX_active_minus1;
media::H264ModificationOfPicNum* list_mod;
// This can process either ref_pic_list0 or ref_pic_list1, depending on
// the list argument. Set up pointers to proper list to be processed here.
if (list == 0) {
- if (!slice_hdr->ref_pic_list_modification_flag_l0)
- return true;
-
+ ref_pic_list_modification_flag_lX =
+ slice_hdr->ref_pic_list_modification_flag_l0;
+ num_ref_idx_lX_active_minus1 =
+ slice_hdr->num_ref_idx_l0_active_minus1;
list_mod = slice_hdr->ref_list_l0_modifications;
} else {
- if (!slice_hdr->ref_pic_list_modification_flag_l1)
- return true;
-
+ ref_pic_list_modification_flag_lX =
+ slice_hdr->ref_pic_list_modification_flag_l1;
+ num_ref_idx_lX_active_minus1 =
+ slice_hdr->num_ref_idx_l1_active_minus1;
list_mod = slice_hdr->ref_list_l1_modifications;
}
- num_ref_idx_lX_active_minus1 = ref_pic_listx->size() - 1;
+ // Resize the list to the size requested in the slice header.
+ // Note that per 8.2.4.2 it's possible for num_ref_idx_lX_active_minus1 to
+ // indicate there should be more ref pics on list than we constructed.
+ // Those superfluous ones should be treated as non-reference and will be
+ // initialized to nullptr, which must be handled by clients.
DCHECK_GE(num_ref_idx_lX_active_minus1, 0);
+ ref_pic_listx->resize(num_ref_idx_lX_active_minus1 + 1);
+
+ if (!ref_pic_list_modification_flag_lX)
+ return true;
// Spec 8.2.4.3:
// Reorder pictures on the list in a way specified in the stream.