Cleanup VCMDecoderDataBase and neigbour VCMGenericDecoder classes
Remove private members that are no longer used or always have same value Use less allocations Bug: None Change-Id: I5430c2356f0039212baf8b248b92775e8852ce1b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227765 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34665}
This commit is contained in:

committed by
WebRTC LUCI CQ

parent
5c3c103c41
commit
7b78a3142d
@ -11,43 +11,31 @@
|
||||
#ifndef MODULES_VIDEO_CODING_DECODER_DATABASE_H_
|
||||
#define MODULES_VIDEO_CODING_DECODER_DATABASE_H_
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <map>
|
||||
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/video_codecs/video_decoder.h"
|
||||
#include "modules/video_coding/encoded_frame.h"
|
||||
#include "modules/video_coding/generic_decoder.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
struct VCMDecoderMapItem {
|
||||
public:
|
||||
VCMDecoderMapItem(VideoCodec* settings, int number_of_cores);
|
||||
~VCMDecoderMapItem();
|
||||
|
||||
std::unique_ptr<VideoCodec> settings;
|
||||
int number_of_cores;
|
||||
};
|
||||
|
||||
struct VCMExtDecoderMapItem {
|
||||
public:
|
||||
VCMExtDecoderMapItem(VideoDecoder* external_decoder_instance,
|
||||
uint8_t payload_type);
|
||||
|
||||
uint8_t payload_type;
|
||||
VideoDecoder* external_decoder_instance;
|
||||
};
|
||||
|
||||
class VCMDecoderDataBase {
|
||||
public:
|
||||
VCMDecoderDataBase();
|
||||
~VCMDecoderDataBase();
|
||||
VCMDecoderDataBase() = default;
|
||||
VCMDecoderDataBase(const VCMDecoderDataBase&) = delete;
|
||||
VCMDecoderDataBase& operator=(const VCMDecoderDataBase&) = delete;
|
||||
~VCMDecoderDataBase() = default;
|
||||
|
||||
bool DeregisterExternalDecoder(uint8_t payload_type);
|
||||
void RegisterExternalDecoder(VideoDecoder* external_decoder,
|
||||
uint8_t payload_type);
|
||||
void RegisterExternalDecoder(uint8_t payload_type,
|
||||
VideoDecoder* external_decoder);
|
||||
bool IsExternalDecoderRegistered(uint8_t payload_type) const;
|
||||
|
||||
bool RegisterReceiveCodec(uint8_t payload_type,
|
||||
const VideoCodec* receive_codec,
|
||||
const VideoCodec& receive_codec,
|
||||
int number_of_cores);
|
||||
bool DeregisterReceiveCodec(uint8_t payload_type);
|
||||
|
||||
@ -61,23 +49,19 @@ class VCMDecoderDataBase {
|
||||
VCMDecodedFrameCallback* decoded_frame_callback);
|
||||
|
||||
private:
|
||||
typedef std::map<uint8_t, VCMDecoderMapItem*> DecoderMap;
|
||||
typedef std::map<uint8_t, VCMExtDecoderMapItem*> ExternalDecoderMap;
|
||||
struct DecoderSettings {
|
||||
VideoCodec settings;
|
||||
int number_of_cores;
|
||||
};
|
||||
|
||||
std::unique_ptr<VCMGenericDecoder> CreateAndInitDecoder(
|
||||
const VCMEncodedFrame& frame,
|
||||
VideoCodec* new_codec) const;
|
||||
void CreateAndInitDecoder(const VCMEncodedFrame& frame);
|
||||
|
||||
const VCMDecoderMapItem* FindDecoderItem(uint8_t payload_type) const;
|
||||
|
||||
const VCMExtDecoderMapItem* FindExternalDecoderItem(
|
||||
uint8_t payload_type) const;
|
||||
|
||||
uint8_t current_payload_type_; // Corresponding to receive_codec_.
|
||||
VideoCodec receive_codec_;
|
||||
std::unique_ptr<VCMGenericDecoder> ptr_decoder_;
|
||||
DecoderMap dec_map_;
|
||||
ExternalDecoderMap dec_external_map_;
|
||||
absl::optional<uint8_t> current_payload_type_;
|
||||
absl::optional<VCMGenericDecoder> current_decoder_;
|
||||
// Initialization paramaters for decoders keyed by payload type.
|
||||
std::map<uint8_t, DecoderSettings> decoder_settings_;
|
||||
// Decoders keyed by payload type.
|
||||
std::map<uint8_t, VideoDecoder*> decoders_;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
Reference in New Issue
Block a user