webrtc_m130/test/fake_decoder.h
Ilya Nikolaevskiy 2ebf523978 Reland "Copy video frames metadata between encoded and plain frames in one place"
Reland with fixes.

Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346

Bug: webrtc:10460
Change-Id: I98629589fa55ca1d74056033cf86faccfdf848cd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136582
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27930}
2019-05-13 14:51:11 +00:00

72 lines
1.9 KiB
C++

/*
* Copyright (c) 2013 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_FAKE_DECODER_H_
#define TEST_FAKE_DECODER_H_
#include <stdint.h>
#include "api/task_queue/task_queue_factory.h"
#include "api/video/encoded_image.h"
#include "api/video_codecs/video_codec.h"
#include "api/video_codecs/video_decoder.h"
#include "modules/video_coding/include/video_codec_interface.h"
#include "rtc_base/task_queue.h"
namespace webrtc {
namespace test {
class FakeDecoder : public VideoDecoder {
public:
FakeDecoder();
explicit FakeDecoder(TaskQueueFactory* task_queue_factory);
virtual ~FakeDecoder() {}
int32_t InitDecode(const VideoCodec* config,
int32_t number_of_cores) override;
int32_t Decode(const EncodedImage& input,
bool missing_frames,
int64_t render_time_ms) override;
int32_t RegisterDecodeCompleteCallback(
DecodedImageCallback* callback) override;
int32_t Release() override;
const char* ImplementationName() const override;
static const char* kImplementationName;
void SetDelayedDecoding(int decode_delay_ms);
private:
DecodedImageCallback* callback_;
int width_;
int height_;
std::unique_ptr<rtc::TaskQueue> task_queue_;
TaskQueueFactory* task_queue_factory_;
int decode_delay_ms_;
};
class FakeH264Decoder : public FakeDecoder {
public:
virtual ~FakeH264Decoder() {}
int32_t Decode(const EncodedImage& input,
bool missing_frames,
int64_t render_time_ms) override;
};
} // namespace test
} // namespace webrtc
#endif // TEST_FAKE_DECODER_H_