Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: webrtc/modules/video_coding/codec_database.h

Issue 1428293003: Add VideoCodec::PreferDecodeLate (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 18 matching lines...) Expand all
29 bool require_key_frame); 29 bool require_key_frame);
30 30
31 rtc::scoped_ptr<VideoCodec> settings; 31 rtc::scoped_ptr<VideoCodec> settings;
32 int number_of_cores; 32 int number_of_cores;
33 bool require_key_frame; 33 bool require_key_frame;
34 }; 34 };
35 35
36 struct VCMExtDecoderMapItem { 36 struct VCMExtDecoderMapItem {
37 public: 37 public:
38 VCMExtDecoderMapItem(VideoDecoder* external_decoder_instance, 38 VCMExtDecoderMapItem(VideoDecoder* external_decoder_instance,
39 uint8_t payload_type, 39 uint8_t payload_type);
40 bool internal_render_timing);
41 40
42 uint8_t payload_type; 41 uint8_t payload_type;
43 VideoDecoder* external_decoder_instance; 42 VideoDecoder* external_decoder_instance;
44 bool internal_render_timing;
45 }; 43 };
46 44
47 class VCMCodecDataBase { 45 class VCMCodecDataBase {
48 public: 46 public:
49 VCMCodecDataBase(VideoEncoderRateObserver* encoder_rate_observer, 47 VCMCodecDataBase(VideoEncoderRateObserver* encoder_rate_observer,
50 VCMEncodedFrameCallback* encoded_frame_callback); 48 VCMEncodedFrameCallback* encoded_frame_callback);
51 ~VCMCodecDataBase(); 49 ~VCMCodecDataBase();
52 50
53 // Sender Side 51 // Sender Side
54 // Returns the default settings for the codec with type |codec_type|. 52 // Returns the default settings for the codec with type |codec_type|.
(...skipping 28 matching lines...) Expand all
83 bool DeregisterExternalEncoder(uint8_t payload_type, bool* was_send_codec); 81 bool DeregisterExternalEncoder(uint8_t payload_type, bool* was_send_codec);
84 82
85 VCMGenericEncoder* GetEncoder(); 83 VCMGenericEncoder* GetEncoder();
86 84
87 bool SetPeriodicKeyFrames(bool enable); 85 bool SetPeriodicKeyFrames(bool enable);
88 86
89 // Deregisters an external decoder object specified by |payload_type|. 87 // Deregisters an external decoder object specified by |payload_type|.
90 bool DeregisterExternalDecoder(uint8_t payload_type); 88 bool DeregisterExternalDecoder(uint8_t payload_type);
91 89
92 // Registers an external decoder object to the payload type |payload_type|. 90 // Registers an external decoder object to the payload type |payload_type|.
93 // |internal_render_timing| is set to true if the |external_decoder| has
94 // built in rendering which is able to obey the render timestamps of the
95 // encoded frames.
96 void RegisterExternalDecoder(VideoDecoder* external_decoder, 91 void RegisterExternalDecoder(VideoDecoder* external_decoder,
97 uint8_t payload_type, 92 uint8_t payload_type);
98 bool internal_render_timing);
99 93
100 bool DecoderRegistered() const; 94 bool DecoderRegistered() const;
101 95
102 bool RegisterReceiveCodec(const VideoCodec* receive_codec, 96 bool RegisterReceiveCodec(const VideoCodec* receive_codec,
103 int number_of_cores, 97 int number_of_cores,
104 bool require_key_frame); 98 bool require_key_frame);
105 99
106 bool DeregisterReceiveCodec(uint8_t payload_type); 100 bool DeregisterReceiveCodec(uint8_t payload_type);
107 101
108 // Get current receive side codec. Relevant for internal codecs only. 102 // Get current receive side codec. Relevant for internal codecs only.
109 bool ReceiveCodec(VideoCodec* current_receive_codec) const; 103 bool ReceiveCodec(VideoCodec* current_receive_codec) const;
110 104
111 // Get current receive side codec type. Relevant for internal codecs only. 105 // Get current receive side codec type. Relevant for internal codecs only.
112 VideoCodecType ReceiveCodec() const; 106 VideoCodecType ReceiveCodec() const;
113 107
114 // Returns a decoder specified by |payload_type|. The decoded frame callback 108 // Returns a decoder specified by |payload_type|. The decoded frame callback
115 // of the encoder is set to |decoded_frame_callback|. If no such decoder 109 // of the encoder is set to |decoded_frame_callback|. If no such decoder
116 // already exists an instance will be created and initialized. 110 // already exists an instance will be created and initialized.
117 // NULL is returned if no encoder with the specified payload type was found 111 // NULL is returned if no encoder with the specified payload type was found
118 // and the function failed to create one. 112 // and the function failed to create one.
119 VCMGenericDecoder* GetDecoder( 113 VCMGenericDecoder* GetDecoder(
120 const VCMEncodedFrame& frame, 114 const VCMEncodedFrame& frame,
121 VCMDecodedFrameCallback* decoded_frame_callback); 115 VCMDecodedFrameCallback* decoded_frame_callback);
122 116
123 // Deletes the memory of the decoder instance |decoder|. Used to delete 117 // Deletes the memory of the decoder instance |decoder|. Used to delete
124 // deep copies returned by CreateDecoderCopy(). 118 // deep copies returned by CreateDecoderCopy().
125 void ReleaseDecoder(VCMGenericDecoder* decoder) const; 119 void ReleaseDecoder(VCMGenericDecoder* decoder) const;
126 120
127 // Returns true if the currently active decoder supports render scheduling, 121 // Returns true if the currently active decoder prefer to decode frames late.
128 // that is, it is able to render frames according to the render timestamp of 122 // That means that frames must be decoded near the render times stamp.
129 // the encoded frames. 123 bool PrefersLateDecoding() const;
130 bool SupportsRenderScheduling() const;
131 124
132 bool MatchesCurrentResolution(int width, int height) const; 125 bool MatchesCurrentResolution(int width, int height) const;
133 126
134 private: 127 private:
135 typedef std::map<uint8_t, VCMDecoderMapItem*> DecoderMap; 128 typedef std::map<uint8_t, VCMDecoderMapItem*> DecoderMap;
136 typedef std::map<uint8_t, VCMExtDecoderMapItem*> ExternalDecoderMap; 129 typedef std::map<uint8_t, VCMExtDecoderMapItem*> ExternalDecoderMap;
137 130
138 VCMGenericDecoder* CreateAndInitDecoder(const VCMEncodedFrame& frame, 131 VCMGenericDecoder* CreateAndInitDecoder(const VCMEncodedFrame& frame,
139 VideoCodec* new_codec) const; 132 VideoCodec* new_codec) const;
140 133
(...skipping 24 matching lines...) Expand all
165 VCMEncodedFrameCallback* const encoded_frame_callback_; 158 VCMEncodedFrameCallback* const encoded_frame_callback_;
166 rtc::scoped_ptr<VCMGenericEncoder> ptr_encoder_; 159 rtc::scoped_ptr<VCMGenericEncoder> ptr_encoder_;
167 VCMGenericDecoder* ptr_decoder_; 160 VCMGenericDecoder* ptr_decoder_;
168 DecoderMap dec_map_; 161 DecoderMap dec_map_;
169 ExternalDecoderMap dec_external_map_; 162 ExternalDecoderMap dec_external_map_;
170 }; // VCMCodecDataBase 163 }; // VCMCodecDataBase
171 164
172 } // namespace webrtc 165 } // namespace webrtc
173 166
174 #endif // WEBRTC_MODULES_VIDEO_CODING_CODEC_DATABASE_H_ 167 #endif // WEBRTC_MODULES_VIDEO_CODING_CODEC_DATABASE_H_
OLDNEW
« no previous file with comments | « talk/app/webrtc/java/jni/androidmediadecoder_jni.cc ('k') | webrtc/modules/video_coding/codec_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698