webrtc_m130/test/pc/e2e/api/video_quality_analyzer_interface.h
Artem Titov b6c6201b0f Introduce peer connection end-2-end quality test fixture interface.
Also introduce interface for video quality analyze and mock interface,
that then will be extended for audio quality analyze.

Bug: webrtc:10138
Change-Id: I0e3957fb2af1b12e796f154765580ddf562c7814
Reviewed-on: https://webrtc-review.googlesource.com/c/116500
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Yves Gerey <yvesg@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26157}
2019-01-08 14:36:46 +00:00

71 lines
3.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2018 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 TEST_PC_E2E_API_VIDEO_QUALITY_ANALYZER_INTERFACE_H_
#define TEST_PC_E2E_API_VIDEO_QUALITY_ANALYZER_INTERFACE_H_
#include <memory>
#include <string>
#include "absl/types/optional.h"
#include "api/video/encoded_image.h"
#include "api/video/video_frame.h"
#include "api/video_codecs/video_encoder.h"
namespace webrtc {
class VideoQualityAnalyzerInterface {
public:
virtual ~VideoQualityAnalyzerInterface() = default;
// Will be called by framework before test. |threads_count| is number of
// threads, that analyzer can use for heavy calculations. Analyzer can perform
// simple calculations on the calling thread in each method, but should
// remember, that is the same thread, that is used in video pipeline.
virtual void Start(uint16_t threads_count) {}
// Will be called when frame was generated from the input stream.
// Returns frame id, that will be set by framework to the frame.
virtual uint16_t OnFrameCaptured(std::string stream_label,
const VideoFrame& frame) = 0;
// Will be called before calling the real encoder.
virtual void OnFramePreEncode(const VideoFrame& frame) {}
// Will be called for each EncodedImage received from encoder. Single
// VideoFrame can produce multiple EncodedImages. Each encoded image will
// have id from VideoFrame.
virtual void OnFrameEncoded(uint16_t frame_id,
const EncodedImage& encoded_image) {}
// Will be called for each frame dropped by encoder.
virtual void OnFrameDropped(EncodedImageCallback::DropReason reason) {}
// Will be called before calling the real decoder.
virtual void OnFrameReceived(uint16_t frame_id,
const EncodedImage& encoded_image) {}
// Will be called after decoding the frame. |decode_time_ms| is a decode
// time provided by decoder itself. If decoder doesnt produce such
// information can be omitted.
virtual void OnFrameDecoded(const VideoFrame& frame,
absl::optional<int32_t> decode_time_ms,
absl::optional<uint8_t> qp) {}
// Will be called when frame will be obtained from PeerConnection stack.
virtual void OnFrameRendered(const VideoFrame& frame) {}
// Will be called if real encoder return not WEBRTC_VIDEO_CODEC_OK.
virtual void OnEncoderError(const VideoFrame& frame, int32_t error_code) {}
// Will be called if real decoder return not WEBRTC_VIDEO_CODEC_OK.
virtual void OnDecoderError(uint16_t frame_id, int32_t error_code) {}
// Tells analyzer, that analysis complete and it should calculate final
// statistics.
virtual void Stop() {}
};
} // namespace webrtc
#endif // TEST_PC_E2E_API_VIDEO_QUALITY_ANALYZER_INTERFACE_H_