blob: fee3ec6d423ecea13fb8738c061ebbceff72d26b [file] [log] [blame]
Niels Möllerbe682d42018-03-27 08:31:45 +02001/*
2 * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "api/video_codecs/video_decoder.h"
12
Erik Språngc12f6252021-01-13 21:49:59 +010013#include "rtc_base/strings/string_builder.h"
14
Niels Möllerbe682d42018-03-27 08:31:45 +020015namespace webrtc {
16
17int32_t DecodedImageCallback::Decoded(VideoFrame& decodedImage,
18 int64_t decode_time_ms) {
19 // The default implementation ignores custom decode time value.
20 return Decoded(decodedImage);
21}
22
23void DecodedImageCallback::Decoded(VideoFrame& decodedImage,
Danil Chapovalov0bc58cf2018-06-21 13:32:56 +020024 absl::optional<int32_t> decode_time_ms,
25 absl::optional<uint8_t> qp) {
Niels Möllerbe682d42018-03-27 08:31:45 +020026 Decoded(decodedImage, decode_time_ms.value_or(-1));
27}
28
Erik Språngc12f6252021-01-13 21:49:59 +010029VideoDecoder::DecoderInfo VideoDecoder::GetDecoderInfo() const {
30 DecoderInfo info;
31 info.implementation_name = ImplementationName();
32 return info;
33}
34
Niels Möllerbe682d42018-03-27 08:31:45 +020035bool VideoDecoder::PrefersLateDecoding() const {
36 return true;
37}
38
39const char* VideoDecoder::ImplementationName() const {
40 return "unknown";
41}
42
Erik Språngc12f6252021-01-13 21:49:59 +010043std::string VideoDecoder::DecoderInfo::ToString() const {
44 char string_buf[2048];
45 rtc::SimpleStringBuilder oss(string_buf);
46
47 oss << "DecoderInfo { "
48 << "prefers_late_decoding = "
49 << "implementation_name = '" << implementation_name << "', "
50 << "is_hardware_accelerated = "
51 << (is_hardware_accelerated ? "true" : "false") << " }";
52 return oss.str();
53}
54
55bool VideoDecoder::DecoderInfo::operator==(const DecoderInfo& rhs) const {
56 return is_hardware_accelerated == rhs.is_hardware_accelerated &&
57 implementation_name == rhs.implementation_name;
58}
59
Niels Möllerbe682d42018-03-27 08:31:45 +020060} // namespace webrtc