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

Side by Side Diff: webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc

Issue 2541163007: VP8DecoderImpl: Fix uninitialized memory crash (Closed)
Patch Set: Created 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 Release(); 1015 Release();
1016 } 1016 }
1017 1017
1018 int VP8DecoderImpl::InitDecode(const VideoCodec* inst, int number_of_cores) { 1018 int VP8DecoderImpl::InitDecode(const VideoCodec* inst, int number_of_cores) {
1019 int ret_val = Release(); 1019 int ret_val = Release();
1020 if (ret_val < 0) { 1020 if (ret_val < 0) {
1021 return ret_val; 1021 return ret_val;
1022 } 1022 }
1023 if (decoder_ == NULL) { 1023 if (decoder_ == NULL) {
1024 decoder_ = new vpx_codec_ctx_t; 1024 decoder_ = new vpx_codec_ctx_t;
1025 memset(decoder_, 0, sizeof(*decoder_));
1025 } 1026 }
1026 if (inst && inst->codecType == kVideoCodecVP8) { 1027 if (inst && inst->codecType == kVideoCodecVP8) {
1027 feedback_mode_ = inst->VP8().feedbackModeOn; 1028 feedback_mode_ = inst->VP8().feedbackModeOn;
1028 } 1029 }
1029 vpx_codec_dec_cfg_t cfg; 1030 vpx_codec_dec_cfg_t cfg;
1030 // Setting number of threads to a constant value (1) 1031 // Setting number of threads to a constant value (1)
1031 cfg.threads = 1; 1032 cfg.threads = 1;
1032 cfg.h = cfg.w = 0; // set after decode 1033 cfg.h = cfg.w = 0; // set after decode
1033 1034
1034 vpx_codec_flags_t flags = 0; 1035 vpx_codec_flags_t flags = 0;
1035 #if !defined(WEBRTC_ARCH_ARM) && !defined(WEBRTC_ARCH_ARM64) && \ 1036 #if !defined(WEBRTC_ARCH_ARM) && !defined(WEBRTC_ARCH_ARM64) && \
1036 !defined(ANDROID) 1037 !defined(ANDROID)
1037 flags = VPX_CODEC_USE_POSTPROC; 1038 flags = VPX_CODEC_USE_POSTPROC;
1038 #endif 1039 #endif
1039 1040
1040 if (vpx_codec_dec_init(decoder_, vpx_codec_vp8_dx(), &cfg, flags)) { 1041 if (vpx_codec_dec_init(decoder_, vpx_codec_vp8_dx(), &cfg, flags)) {
1042 delete decoder_;
1043 decoder_ = nullptr;
1041 return WEBRTC_VIDEO_CODEC_MEMORY; 1044 return WEBRTC_VIDEO_CODEC_MEMORY;
1042 } 1045 }
1043 1046
1044 // Save VideoCodec instance for later; mainly for duplicating the decoder. 1047 // Save VideoCodec instance for later; mainly for duplicating the decoder.
1045 if (&codec_ != inst) 1048 if (&codec_ != inst)
1046 codec_ = *inst; 1049 codec_ = *inst;
1047 propagation_cnt_ = -1; 1050 propagation_cnt_ = -1;
1048 1051
1049 inited_ = true; 1052 inited_ = true;
1050 1053
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 return -1; 1279 return -1;
1277 } 1280 }
1278 if (vpx_codec_control(copy->decoder_, VP8_SET_REFERENCE, ref_frame_) != 1281 if (vpx_codec_control(copy->decoder_, VP8_SET_REFERENCE, ref_frame_) !=
1279 VPX_CODEC_OK) { 1282 VPX_CODEC_OK) {
1280 return -1; 1283 return -1;
1281 } 1284 }
1282 return 0; 1285 return 0;
1283 } 1286 }
1284 1287
1285 } // namespace webrtc 1288 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698