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

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

Issue 1415693002: Remove VideoFrameType aliases for FrameType. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years, 2 months 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 774 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 for (size_t i = 0; i < key_frame_request_.size() && i < send_stream_.size(); 785 for (size_t i = 0; i < key_frame_request_.size() && i < send_stream_.size();
786 ++i) { 786 ++i) {
787 if (key_frame_request_[i] && send_stream_[i]) { 787 if (key_frame_request_[i] && send_stream_[i]) {
788 send_key_frame = true; 788 send_key_frame = true;
789 break; 789 break;
790 } 790 }
791 } 791 }
792 if (!send_key_frame && frame_types) { 792 if (!send_key_frame && frame_types) {
793 for (size_t i = 0; i < frame_types->size() && i < send_stream_.size(); 793 for (size_t i = 0; i < frame_types->size() && i < send_stream_.size();
794 ++i) { 794 ++i) {
795 if ((*frame_types)[i] == kKeyFrame && send_stream_[i]) { 795 if ((*frame_types)[i] == kVideoFrameKey && send_stream_[i]) {
796 send_key_frame = true; 796 send_key_frame = true;
797 break; 797 break;
798 } 798 }
799 } 799 }
800 } 800 }
801 // The flag modification below (due to forced key frame, RPS, etc.,) for now 801 // The flag modification below (due to forced key frame, RPS, etc.,) for now
802 // will be the same for all encoders/spatial layers. 802 // will be the same for all encoders/spatial layers.
803 // TODO(marpan/holmer): Allow for key frame request to be set per encoder. 803 // TODO(marpan/holmer): Allow for key frame request to be set per encoder.
804 bool only_predict_from_key_frame = false; 804 bool only_predict_from_key_frame = false;
805 if (send_key_frame) { 805 if (send_key_frame) {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 int bw_resolutions_disabled = 963 int bw_resolutions_disabled =
964 (encoders_.size() > 1) ? NumStreamsDisabled(send_stream_) : -1; 964 (encoders_.size() > 1) ? NumStreamsDisabled(send_stream_) : -1;
965 965
966 int stream_idx = static_cast<int>(encoders_.size()) - 1; 966 int stream_idx = static_cast<int>(encoders_.size()) - 1;
967 int result = WEBRTC_VIDEO_CODEC_OK; 967 int result = WEBRTC_VIDEO_CODEC_OK;
968 for (size_t encoder_idx = 0; encoder_idx < encoders_.size(); 968 for (size_t encoder_idx = 0; encoder_idx < encoders_.size();
969 ++encoder_idx, --stream_idx) { 969 ++encoder_idx, --stream_idx) {
970 vpx_codec_iter_t iter = NULL; 970 vpx_codec_iter_t iter = NULL;
971 int part_idx = 0; 971 int part_idx = 0;
972 encoded_images_[encoder_idx]._length = 0; 972 encoded_images_[encoder_idx]._length = 0;
973 encoded_images_[encoder_idx]._frameType = kDeltaFrame; 973 encoded_images_[encoder_idx]._frameType = kVideoFrameDelta;
974 RTPFragmentationHeader frag_info; 974 RTPFragmentationHeader frag_info;
975 // token_partitions_ is number of bits used. 975 // token_partitions_ is number of bits used.
976 frag_info.VerifyAndAllocateFragmentationHeader((1 << token_partitions_) 976 frag_info.VerifyAndAllocateFragmentationHeader((1 << token_partitions_)
977 + 1); 977 + 1);
978 CodecSpecificInfo codec_specific; 978 CodecSpecificInfo codec_specific;
979 const vpx_codec_cx_pkt_t *pkt = NULL; 979 const vpx_codec_cx_pkt_t *pkt = NULL;
980 while ((pkt = vpx_codec_get_cx_data(&encoders_[encoder_idx], 980 while ((pkt = vpx_codec_get_cx_data(&encoders_[encoder_idx],
981 &iter)) != NULL) { 981 &iter)) != NULL) {
982 switch (pkt->kind) { 982 switch (pkt->kind) {
983 case VPX_CODEC_CX_FRAME_PKT: { 983 case VPX_CODEC_CX_FRAME_PKT: {
(...skipping 10 matching lines...) Expand all
994 ++part_idx; 994 ++part_idx;
995 break; 995 break;
996 } 996 }
997 default: 997 default:
998 break; 998 break;
999 } 999 }
1000 // End of frame 1000 // End of frame
1001 if ((pkt->data.frame.flags & VPX_FRAME_IS_FRAGMENT) == 0) { 1001 if ((pkt->data.frame.flags & VPX_FRAME_IS_FRAGMENT) == 0) {
1002 // check if encoded frame is a key frame 1002 // check if encoded frame is a key frame
1003 if (pkt->data.frame.flags & VPX_FRAME_IS_KEY) { 1003 if (pkt->data.frame.flags & VPX_FRAME_IS_KEY) {
1004 encoded_images_[encoder_idx]._frameType = kKeyFrame; 1004 encoded_images_[encoder_idx]._frameType = kVideoFrameKey;
1005 rps_.EncodedKeyFrame(picture_id_[stream_idx]); 1005 rps_.EncodedKeyFrame(picture_id_[stream_idx]);
1006 } 1006 }
1007 PopulateCodecSpecific(&codec_specific, *pkt, stream_idx, 1007 PopulateCodecSpecific(&codec_specific, *pkt, stream_idx,
1008 input_image.timestamp(), 1008 input_image.timestamp(),
1009 only_predicting_from_key_frame); 1009 only_predicting_from_key_frame);
1010 break; 1010 break;
1011 } 1011 }
1012 } 1012 }
1013 encoded_images_[encoder_idx]._timeStamp = input_image.timestamp(); 1013 encoded_images_[encoder_idx]._timeStamp = input_image.timestamp();
1014 encoded_images_[encoder_idx].capture_time_ms_ = 1014 encoded_images_[encoder_idx].capture_time_ms_ =
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 if (last_frame_width_ * last_frame_height_ <= 640 * 360) { 1165 if (last_frame_width_ * last_frame_height_ <= 640 * 360) {
1166 ppcfg.post_proc_flag |= VP8_DEMACROBLOCK; 1166 ppcfg.post_proc_flag |= VP8_DEMACROBLOCK;
1167 } 1167 }
1168 // Strength of deblocking filter. Valid range:[0,16] 1168 // Strength of deblocking filter. Valid range:[0,16]
1169 ppcfg.deblocking_level = 3; 1169 ppcfg.deblocking_level = 3;
1170 vpx_codec_control(decoder_, VP8_SET_POSTPROC, &ppcfg); 1170 vpx_codec_control(decoder_, VP8_SET_POSTPROC, &ppcfg);
1171 #endif 1171 #endif
1172 1172
1173 // Always start with a complete key frame. 1173 // Always start with a complete key frame.
1174 if (key_frame_required_) { 1174 if (key_frame_required_) {
1175 if (input_image._frameType != kKeyFrame) 1175 if (input_image._frameType != kVideoFrameKey)
1176 return WEBRTC_VIDEO_CODEC_ERROR; 1176 return WEBRTC_VIDEO_CODEC_ERROR;
1177 // We have a key frame - is it complete? 1177 // We have a key frame - is it complete?
1178 if (input_image._completeFrame) { 1178 if (input_image._completeFrame) {
1179 key_frame_required_ = false; 1179 key_frame_required_ = false;
1180 } else { 1180 } else {
1181 return WEBRTC_VIDEO_CODEC_ERROR; 1181 return WEBRTC_VIDEO_CODEC_ERROR;
1182 } 1182 }
1183 } 1183 }
1184 // Restrict error propagation using key frame requests. Disabled when 1184 // Restrict error propagation using key frame requests. Disabled when
1185 // the feedback mode is enabled (RPS). 1185 // the feedback mode is enabled (RPS).
1186 // Reset on a key frame refresh. 1186 // Reset on a key frame refresh.
1187 if (!feedback_mode_) { 1187 if (!feedback_mode_) {
1188 if (input_image._frameType == kKeyFrame && input_image._completeFrame) { 1188 if (input_image._frameType == kVideoFrameKey &&
1189 input_image._completeFrame) {
1189 propagation_cnt_ = -1; 1190 propagation_cnt_ = -1;
1190 // Start count on first loss. 1191 // Start count on first loss.
1191 } else if ((!input_image._completeFrame || missing_frames) && 1192 } else if ((!input_image._completeFrame || missing_frames) &&
1192 propagation_cnt_ == -1) { 1193 propagation_cnt_ == -1) {
1193 propagation_cnt_ = 0; 1194 propagation_cnt_ = 0;
1194 } 1195 }
1195 if (propagation_cnt_ >= 0) { 1196 if (propagation_cnt_ >= 0) {
1196 propagation_cnt_++; 1197 propagation_cnt_++;
1197 } 1198 }
1198 } 1199 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 VPX_DL_REALTIME)) { 1232 VPX_DL_REALTIME)) {
1232 // Reset to avoid requesting key frames too often. 1233 // Reset to avoid requesting key frames too often.
1233 if (propagation_cnt_ > 0) { 1234 if (propagation_cnt_ > 0) {
1234 propagation_cnt_ = 0; 1235 propagation_cnt_ = 0;
1235 } 1236 }
1236 return WEBRTC_VIDEO_CODEC_ERROR; 1237 return WEBRTC_VIDEO_CODEC_ERROR;
1237 } 1238 }
1238 #endif 1239 #endif
1239 1240
1240 // Store encoded frame if key frame. (Used in Copy method.) 1241 // Store encoded frame if key frame. (Used in Copy method.)
1241 if (input_image._frameType == kKeyFrame && input_image._buffer != NULL) { 1242 if (input_image._frameType == kVideoFrameKey && input_image._buffer != NULL) {
1242 const uint32_t bytes_to_copy = input_image._length; 1243 const uint32_t bytes_to_copy = input_image._length;
1243 if (last_keyframe_._size < bytes_to_copy) { 1244 if (last_keyframe_._size < bytes_to_copy) {
1244 delete [] last_keyframe_._buffer; 1245 delete [] last_keyframe_._buffer;
1245 last_keyframe_._buffer = NULL; 1246 last_keyframe_._buffer = NULL;
1246 last_keyframe_._size = 0; 1247 last_keyframe_._size = 0;
1247 } 1248 }
1248 uint8_t* temp_buffer = last_keyframe_._buffer; // Save buffer ptr. 1249 uint8_t* temp_buffer = last_keyframe_._buffer; // Save buffer ptr.
1249 uint32_t temp_size = last_keyframe_._size; // Save size. 1250 uint32_t temp_size = last_keyframe_._size; // Save size.
1250 last_keyframe_ = input_image; // Shallow copy. 1251 last_keyframe_ = input_image; // Shallow copy.
1251 last_keyframe_._buffer = temp_buffer; // Restore buffer ptr. 1252 last_keyframe_._buffer = temp_buffer; // Restore buffer ptr.
(...skipping 13 matching lines...) Expand all
1265 if (ret != 0) { 1266 if (ret != 0) {
1266 // Reset to avoid requesting key frames too often. 1267 // Reset to avoid requesting key frames too often.
1267 if (ret < 0 && propagation_cnt_ > 0) 1268 if (ret < 0 && propagation_cnt_ > 0)
1268 propagation_cnt_ = 0; 1269 propagation_cnt_ = 0;
1269 return ret; 1270 return ret;
1270 } 1271 }
1271 if (feedback_mode_) { 1272 if (feedback_mode_) {
1272 // Whenever we receive an incomplete key frame all reference buffers will 1273 // Whenever we receive an incomplete key frame all reference buffers will
1273 // be corrupt. If that happens we must request new key frames until we 1274 // be corrupt. If that happens we must request new key frames until we
1274 // decode a complete key frame. 1275 // decode a complete key frame.
1275 if (input_image._frameType == kKeyFrame && !input_image._completeFrame) 1276 if (input_image._frameType == kVideoFrameKey && !input_image._completeFrame)
1276 return WEBRTC_VIDEO_CODEC_ERROR; 1277 return WEBRTC_VIDEO_CODEC_ERROR;
1277 // Check for reference updates and last reference buffer corruption and 1278 // Check for reference updates and last reference buffer corruption and
1278 // signal successful reference propagation or frame corruption to the 1279 // signal successful reference propagation or frame corruption to the
1279 // encoder. 1280 // encoder.
1280 int reference_updates = 0; 1281 int reference_updates = 0;
1281 if (vpx_codec_control(decoder_, VP8D_GET_LAST_REF_UPDATES, 1282 if (vpx_codec_control(decoder_, VP8D_GET_LAST_REF_UPDATES,
1282 &reference_updates)) { 1283 &reference_updates)) {
1283 // Reset to avoid requesting key frames too often. 1284 // Reset to avoid requesting key frames too often.
1284 if (propagation_cnt_ > 0) { 1285 if (propagation_cnt_ > 0) {
1285 propagation_cnt_ = 0; 1286 propagation_cnt_ = 0;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1407 return -1; 1408 return -1;
1408 } 1409 }
1409 if (vpx_codec_control(copy->decoder_, VP8_SET_REFERENCE, ref_frame_) 1410 if (vpx_codec_control(copy->decoder_, VP8_SET_REFERENCE, ref_frame_)
1410 != VPX_CODEC_OK) { 1411 != VPX_CODEC_OK) {
1411 return -1; 1412 return -1;
1412 } 1413 }
1413 return 0; 1414 return 0;
1414 } 1415 }
1415 1416
1416 } // namespace webrtc 1417 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc ('k') | webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698