OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2010 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 |
11 #include "vpx_config.h" | 11 #include "vpx_config.h" |
12 | 12 |
13 #if defined(_WIN32) || !CONFIG_OS_SUPPORT | 13 #if defined(_WIN32) || !CONFIG_OS_SUPPORT |
14 #define USE_POSIX_MMAP 0 | 14 #define USE_POSIX_MMAP 0 |
15 #else | 15 #else |
16 #define USE_POSIX_MMAP 1 | 16 #define USE_POSIX_MMAP 1 |
17 #endif | 17 #endif |
18 | 18 |
19 #include <stdio.h> | 19 #include <stdio.h> |
20 #include <stdlib.h> | 20 #include <stdlib.h> |
21 #include <stdarg.h> | 21 #include <stdarg.h> |
22 #include <string.h> | 22 #include <string.h> |
23 #include <limits.h> | 23 #include <limits.h> |
24 #include <assert.h> | 24 #include <assert.h> |
25 #include "vpx/vpx_encoder.h" | 25 #include "vpx/vpx_encoder.h" |
| 26 #if CONFIG_DECODERS |
26 #include "vpx/vpx_decoder.h" | 27 #include "vpx/vpx_decoder.h" |
| 28 #endif |
27 #if USE_POSIX_MMAP | 29 #if USE_POSIX_MMAP |
28 #include <sys/types.h> | 30 #include <sys/types.h> |
29 #include <sys/stat.h> | 31 #include <sys/stat.h> |
30 #include <sys/mman.h> | 32 #include <sys/mman.h> |
31 #include <fcntl.h> | 33 #include <fcntl.h> |
32 #include <unistd.h> | 34 #include <unistd.h> |
33 #endif | 35 #endif |
34 | 36 |
35 #if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER | 37 #if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER |
36 #include "vpx/vp8cx.h" | 38 #include "vpx/vp8cx.h" |
(...skipping 2130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2167 for (i = 0; i < stream->config.arg_ctrl_cnt; i++) { | 2169 for (i = 0; i < stream->config.arg_ctrl_cnt; i++) { |
2168 int ctrl = stream->config.arg_ctrls[i][0]; | 2170 int ctrl = stream->config.arg_ctrls[i][0]; |
2169 int value = stream->config.arg_ctrls[i][1]; | 2171 int value = stream->config.arg_ctrls[i][1]; |
2170 if (vpx_codec_control_(&stream->encoder, ctrl, value)) | 2172 if (vpx_codec_control_(&stream->encoder, ctrl, value)) |
2171 fprintf(stderr, "Error: Tried to set control %d = %d\n", | 2173 fprintf(stderr, "Error: Tried to set control %d = %d\n", |
2172 ctrl, value); | 2174 ctrl, value); |
2173 | 2175 |
2174 ctx_exit_on_error(&stream->encoder, "Failed to control codec"); | 2176 ctx_exit_on_error(&stream->encoder, "Failed to control codec"); |
2175 } | 2177 } |
2176 | 2178 |
| 2179 #if CONFIG_DECODERS |
2177 if (global->test_decode) { | 2180 if (global->test_decode) { |
2178 int width, height; | 2181 int width, height; |
2179 | 2182 |
2180 vpx_codec_dec_init(&stream->decoder, global->codec->dx_iface(), NULL, 0); | 2183 vpx_codec_dec_init(&stream->decoder, global->codec->dx_iface(), NULL, 0); |
2181 | 2184 |
2182 width = (stream->config.cfg.g_w + 15) & ~15; | 2185 width = (stream->config.cfg.g_w + 15) & ~15; |
2183 height = (stream->config.cfg.g_h + 15) & ~15; | 2186 height = (stream->config.cfg.g_h + 15) & ~15; |
2184 vpx_img_alloc(&stream->ref_enc.img, VPX_IMG_FMT_I420, width, height, 1); | 2187 vpx_img_alloc(&stream->ref_enc.img, VPX_IMG_FMT_I420, width, height, 1); |
2185 vpx_img_alloc(&stream->ref_dec.img, VPX_IMG_FMT_I420, width, height, 1); | 2188 vpx_img_alloc(&stream->ref_dec.img, VPX_IMG_FMT_I420, width, height, 1); |
2186 stream->ref_enc.frame_type = VP8_LAST_FRAME; | 2189 stream->ref_enc.frame_type = VP8_LAST_FRAME; |
2187 stream->ref_dec.frame_type = VP8_LAST_FRAME; | 2190 stream->ref_dec.frame_type = VP8_LAST_FRAME; |
2188 } | 2191 } |
| 2192 #endif |
2189 } | 2193 } |
2190 | 2194 |
2191 | 2195 |
2192 static void encode_frame(struct stream_state *stream, | 2196 static void encode_frame(struct stream_state *stream, |
2193 struct global_config *global, | 2197 struct global_config *global, |
2194 struct vpx_image *img, | 2198 struct vpx_image *img, |
2195 unsigned int frames_in) { | 2199 unsigned int frames_in) { |
2196 vpx_codec_pts_t frame_start, next_frame_start; | 2200 vpx_codec_pts_t frame_start, next_frame_start; |
2197 struct vpx_codec_enc_cfg *cfg = &stream->config.cfg; | 2201 struct vpx_codec_enc_cfg *cfg = &stream->config.cfg; |
2198 struct vpx_usec_timer timer; | 2202 struct vpx_usec_timer timer; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2271 fseeko(stream->file, currpos, SEEK_SET); | 2275 fseeko(stream->file, currpos, SEEK_SET); |
2272 } | 2276 } |
2273 } | 2277 } |
2274 | 2278 |
2275 (void) fwrite(pkt->data.frame.buf, 1, pkt->data.frame.sz, | 2279 (void) fwrite(pkt->data.frame.buf, 1, pkt->data.frame.sz, |
2276 stream->file); | 2280 stream->file); |
2277 } | 2281 } |
2278 stream->nbytes += pkt->data.raw.sz; | 2282 stream->nbytes += pkt->data.raw.sz; |
2279 | 2283 |
2280 *got_data = 1; | 2284 *got_data = 1; |
| 2285 #if CONFIG_DECODERS |
2281 if (global->test_decode) { | 2286 if (global->test_decode) { |
2282 vpx_codec_decode(&stream->decoder, pkt->data.frame.buf, | 2287 vpx_codec_decode(&stream->decoder, pkt->data.frame.buf, |
2283 pkt->data.frame.sz, NULL, 0); | 2288 pkt->data.frame.sz, NULL, 0); |
2284 ctx_exit_on_error(&stream->decoder, "Failed to decode frame"); | 2289 ctx_exit_on_error(&stream->decoder, "Failed to decode frame"); |
2285 } | 2290 } |
| 2291 #endif |
2286 break; | 2292 break; |
2287 case VPX_CODEC_STATS_PKT: | 2293 case VPX_CODEC_STATS_PKT: |
2288 stream->frames_out++; | 2294 stream->frames_out++; |
2289 fprintf(stderr, " %6luS", | 2295 if (!global->quiet) |
2290 (unsigned long)pkt->data.twopass_stats.sz); | 2296 fprintf(stderr, " %6luS", |
| 2297 (unsigned long)pkt->data.twopass_stats.sz); |
2291 stats_write(&stream->stats, | 2298 stats_write(&stream->stats, |
2292 pkt->data.twopass_stats.buf, | 2299 pkt->data.twopass_stats.buf, |
2293 pkt->data.twopass_stats.sz); | 2300 pkt->data.twopass_stats.sz); |
2294 stream->nbytes += pkt->data.raw.sz; | 2301 stream->nbytes += pkt->data.raw.sz; |
2295 break; | 2302 break; |
2296 case VPX_CODEC_PSNR_PKT: | 2303 case VPX_CODEC_PSNR_PKT: |
2297 | 2304 |
2298 if (global->show_psnr) { | 2305 if (global->show_psnr) { |
2299 int i; | 2306 int i; |
2300 | 2307 |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2594 } | 2601 } |
2595 fclose(f); | 2602 fclose(f); |
2596 }); | 2603 }); |
2597 #endif | 2604 #endif |
2598 | 2605 |
2599 vpx_img_free(&raw); | 2606 vpx_img_free(&raw); |
2600 free(argv); | 2607 free(argv); |
2601 free(streams); | 2608 free(streams); |
2602 return EXIT_SUCCESS; | 2609 return EXIT_SUCCESS; |
2603 } | 2610 } |
OLD | NEW |