Propagate the base QP value from frame header to Decoded callback in dav1d decoder.

Current version of the dav1d decoder does not propagate any QP value to the Decoded callback. This CL updates this such that the base QP gets propagated from the frame header.

Bug: None
Change-Id: Ib7624b7e27d2c973f1821df5688cbb444e4847a2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/359740
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Vardar (xWF) <vardar@google.com>
Cr-Commit-Position: refs/heads/main@{#42790}
This commit is contained in:
Emil Vardar 2024-08-16 08:43:00 +00:00 committed by WebRTC LUCI CQ
parent e630a3d7ad
commit 97ba6afb37

View File

@ -191,8 +191,15 @@ int32_t Dav1dDecoder::Decode(const EncodedImage& encoded_image,
.set_color_space(encoded_image.ColorSpace())
.build();
decode_complete_callback_->Decoded(decoded_frame, absl::nullopt,
absl::nullopt);
// Corresponds to QP_base in
// J. Han et al., "A Technical Overview of AV1," in Proceedings of the IEEE,
// vol. 109, no. 9, pp. 1435-1462, Sept. 2021,
// doi: 10.1109/JPROC.2021.3058584. keywords:
// {Encoding;Codecs;Decoding;Streaming media;Video compression;Media;Alliance
// of Open Media;AV1;video compression},
absl::optional<uint8_t> qp = dav1d_picture.frame_hdr->quant.yac;
decode_complete_callback_->Decoded(decoded_frame,
/*decode_time_ms=*/absl::nullopt, qp);
return WEBRTC_VIDEO_CODEC_OK;
}