| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebM 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 19 matching lines...) Expand all Loading... |
| 30 | 30 |
| 31 void usage_exit() { | 31 void usage_exit() { |
| 32 exit(EXIT_FAILURE); | 32 exit(EXIT_FAILURE); |
| 33 } | 33 } |
| 34 | 34 |
| 35 // Denoiser states, for temporal denoising. | 35 // Denoiser states, for temporal denoising. |
| 36 enum denoiserState { | 36 enum denoiserState { |
| 37 kDenoiserOff, | 37 kDenoiserOff, |
| 38 kDenoiserOnYOnly, | 38 kDenoiserOnYOnly, |
| 39 kDenoiserOnYUV, | 39 kDenoiserOnYUV, |
| 40 kDenoiserOnYUVAggressive // Aggressive mode not implemented currently. | 40 kDenoiserOnYUVAggressive, |
| 41 kDenoiserOnAdaptive |
| 41 }; | 42 }; |
| 42 | 43 |
| 43 static int mode_to_num_layers[12] = {1, 2, 2, 3, 3, 3, 3, 5, 2, 3, 3, 3}; | 44 static int mode_to_num_layers[12] = {1, 2, 2, 3, 3, 3, 3, 5, 2, 3, 3, 3}; |
| 44 | 45 |
| 45 // For rate control encoding stats. | 46 // For rate control encoding stats. |
| 46 struct RateControlMetrics { | 47 struct RateControlMetrics { |
| 47 // Number of input frames per layer. | 48 // Number of input frames per layer. |
| 48 int layer_input_frames[VPX_TS_MAX_LAYERS]; | 49 int layer_input_frames[VPX_TS_MAX_LAYERS]; |
| 49 // Total (cumulative) number of encoded frames per layer. | 50 // Total (cumulative) number of encoded frames per layer. |
| 50 int layer_tot_enc_frames[VPX_TS_MAX_LAYERS]; | 51 int layer_tot_enc_frames[VPX_TS_MAX_LAYERS]; |
| (...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 572 } | 573 } |
| 573 // No spatial layers in this encoder. | 574 // No spatial layers in this encoder. |
| 574 cfg.ss_number_layers = 1; | 575 cfg.ss_number_layers = 1; |
| 575 | 576 |
| 576 // Initialize codec. | 577 // Initialize codec. |
| 577 if (vpx_codec_enc_init(&codec, encoder->codec_interface(), &cfg, 0)) | 578 if (vpx_codec_enc_init(&codec, encoder->codec_interface(), &cfg, 0)) |
| 578 die_codec(&codec, "Failed to initialize encoder"); | 579 die_codec(&codec, "Failed to initialize encoder"); |
| 579 | 580 |
| 580 if (strncmp(encoder->name, "vp8", 3) == 0) { | 581 if (strncmp(encoder->name, "vp8", 3) == 0) { |
| 581 vpx_codec_control(&codec, VP8E_SET_CPUUSED, -speed); | 582 vpx_codec_control(&codec, VP8E_SET_CPUUSED, -speed); |
| 582 vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, kDenoiserOnYOnly); | 583 vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, kDenoiserOnYOnly); |
| 583 } else if (strncmp(encoder->name, "vp9", 3) == 0) { | 584 } else if (strncmp(encoder->name, "vp9", 3) == 0) { |
| 584 vpx_codec_control(&codec, VP8E_SET_CPUUSED, speed); | 585 vpx_codec_control(&codec, VP8E_SET_CPUUSED, speed); |
| 585 vpx_codec_control(&codec, VP9E_SET_AQ_MODE, 3); | 586 vpx_codec_control(&codec, VP9E_SET_AQ_MODE, 3); |
| 586 vpx_codec_control(&codec, VP9E_SET_FRAME_PERIODIC_BOOST, 0); | 587 vpx_codec_control(&codec, VP9E_SET_FRAME_PERIODIC_BOOST, 0); |
| 587 vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, 0); | 588 vpx_codec_control(&codec, VP8E_SET_NOISE_SENSITIVITY, 0); |
| 588 if (vpx_codec_control(&codec, VP9E_SET_SVC, 1)) { | 589 if (vpx_codec_control(&codec, VP9E_SET_SVC, 1)) { |
| 589 die_codec(&codec, "Failed to set SVC"); | 590 die_codec(&codec, "Failed to set SVC"); |
| 590 } | 591 } |
| 591 } | 592 } |
| 592 vpx_codec_control(&codec, VP8E_SET_STATIC_THRESHOLD, 1); | 593 vpx_codec_control(&codec, VP8E_SET_STATIC_THRESHOLD, 1); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 if (vpx_codec_destroy(&codec)) | 668 if (vpx_codec_destroy(&codec)) |
| 668 die_codec(&codec, "Failed to destroy codec"); | 669 die_codec(&codec, "Failed to destroy codec"); |
| 669 | 670 |
| 670 // Try to rewrite the output file headers with the actual frame count. | 671 // Try to rewrite the output file headers with the actual frame count. |
| 671 for (i = 0; i < cfg.ts_number_layers; ++i) | 672 for (i = 0; i < cfg.ts_number_layers; ++i) |
| 672 vpx_video_writer_close(outfile[i]); | 673 vpx_video_writer_close(outfile[i]); |
| 673 | 674 |
| 674 vpx_img_free(&raw); | 675 vpx_img_free(&raw); |
| 675 return EXIT_SUCCESS; | 676 return EXIT_SUCCESS; |
| 676 } | 677 } |
| OLD | NEW |