webrtc/video/frame_dumping_encoder.h
Markus Handell 411639ede8 Introduce a frame dumping encoder wrapper.
Expose new function MaybeCreateFrameDumpingEncoderWrapper that
wraps another passed encoder and dumps its encoded frames out
into a unique IVF file into the directory specified by the
"WebRTC-EncoderDataDumpDirectory" field trial. If the passed
encoder is nullptr, or the field trial is not setup, the function
just returns the passed encoder. The directory specified by the
field trial parameter should be delimited by ';'.

The new function is wired up in VideoStreamEncoder.

Bug: b/296242528
Change-Id: I6143adf899f78fcc03d4239a86c68dcbab483f1c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/317200
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40600}
2023-08-22 15:45:32 +00:00

34 lines
1.3 KiB
C++

/*
* Copyright (c) 2023 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 VIDEO_FRAME_DUMPING_ENCODER_H_
#define VIDEO_FRAME_DUMPING_ENCODER_H_
#include <memory>
#include "api/field_trials_view.h"
#include "api/video_codecs/video_encoder.h"
namespace webrtc {
// Creates an encoder that wraps another passed encoder and dumps its encoded
// frames out into a unique IVF file into the directory specified by the
// "WebRTC-EncoderDataDumpDirectory" field trial. Each file generated is
// suffixed by the simulcast index of the encoded frames. If the passed encoder
// is nullptr, or the field trial is not setup, the function just returns the
// passed encoder. The directory specified by the field trial parameter should
// be delimited by ';'.
std::unique_ptr<VideoEncoder> MaybeCreateFrameDumpingEncoderWrapper(
std::unique_ptr<VideoEncoder> encoder,
const FieldTrialsView& field_trials);
} // namespace webrtc
#endif // VIDEO_FRAME_DUMPING_ENCODER_H_