diff options
Diffstat (limited to '')
-rw-r--r-- | third_party/libwebrtc/modules/video_coding/include/video_coding_defines.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/third_party/libwebrtc/modules/video_coding/include/video_coding_defines.h b/third_party/libwebrtc/modules/video_coding/include/video_coding_defines.h new file mode 100644 index 0000000000..cbd420732c --- /dev/null +++ b/third_party/libwebrtc/modules/video_coding/include/video_coding_defines.h @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#ifndef MODULES_VIDEO_CODING_INCLUDE_VIDEO_CODING_DEFINES_H_ +#define MODULES_VIDEO_CODING_INCLUDE_VIDEO_CODING_DEFINES_H_ + +#include <stddef.h> +#include <stdint.h> + +#include "absl/types/optional.h" +#include "api/video/video_content_type.h" +#include "api/video/video_frame.h" +#include "api/video/video_timing.h" +#include "api/video_codecs/video_decoder.h" + +namespace webrtc { + +// Error codes +#define VCM_FRAME_NOT_READY 3 +#define VCM_MISSING_CALLBACK 1 +#define VCM_OK 0 +#define VCM_GENERAL_ERROR -1 +#define VCM_PARAMETER_ERROR -4 +#define VCM_NO_CODEC_REGISTERED -8 +#define VCM_JITTER_BUFFER_ERROR -9 + +enum { + // Timing frames settings. Timing frames are sent every + // `kDefaultTimingFramesDelayMs`, or if the frame is at least + // `kDefaultOutlierFrameSizePercent` in size of average frame. + kDefaultTimingFramesDelayMs = 200, + kDefaultOutlierFrameSizePercent = 500, + // Maximum number of frames for what we store encode start timing information. + kMaxEncodeStartTimeListSize = 150, +}; + +enum VCMVideoProtection { + kProtectionNack, + kProtectionNackFEC, +}; + +// Callback class used for passing decoded frames which are ready to be +// rendered. +class VCMReceiveCallback { + public: + virtual int32_t FrameToRender(VideoFrame& videoFrame, // NOLINT + absl::optional<uint8_t> qp, + TimeDelta decode_time, + VideoContentType content_type, + VideoFrameType frame_type) = 0; + + virtual void OnDroppedFrames(uint32_t frames_dropped); + + // Called when the current receive codec changes. + virtual void OnIncomingPayloadType(int payload_type); + virtual void OnDecoderInfoChanged( + const VideoDecoder::DecoderInfo& decoder_info); + + protected: + virtual ~VCMReceiveCallback() {} +}; + +// Callback class used for telling the user about what frame type needed to +// continue decoding. +// Typically a key frame when the stream has been corrupted in some way. +class VCMFrameTypeCallback { + public: + virtual int32_t RequestKeyFrame() = 0; + + protected: + virtual ~VCMFrameTypeCallback() {} +}; + +// Callback class used for telling the user about which packet sequence numbers +// are currently +// missing and need to be resent. +// TODO(philipel): Deprecate VCMPacketRequestCallback +// and use NackSender instead. +class VCMPacketRequestCallback { + public: + virtual int32_t ResendPackets(const uint16_t* sequenceNumbers, + uint16_t length) = 0; + + protected: + virtual ~VCMPacketRequestCallback() {} +}; + +} // namespace webrtc + +#endif // MODULES_VIDEO_CODING_INCLUDE_VIDEO_CODING_DEFINES_H_ |