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

Side by Side Diff: source/libvpx/examples/vp8_multi_resolution_encoder.c

Issue 375983002: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « source/libvpx/examples.mk ('k') | source/libvpx/examples/vp9_spatial_svc_encoder.c » ('j') | 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) 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 /* 11 /*
12 * This is an example demonstrating multi-resolution encoding in VP8. 12 * This is an example demonstrating multi-resolution encoding in VP8.
13 * High-resolution input video is down-sampled to lower-resolutions. The 13 * High-resolution input video is down-sampled to lower-resolutions. The
14 * encoder then encodes the video and outputs multiple bitstreams with 14 * encoder then encodes the video and outputs multiple bitstreams with
15 * different resolutions. 15 * different resolutions.
16 */ 16 */
17 #include <stdio.h> 17 #include <stdio.h>
18 #include <stdlib.h> 18 #include <stdlib.h>
19 #include <stdarg.h> 19 #include <stdarg.h>
20 #include <string.h> 20 #include <string.h>
21 #include <math.h> 21 #include <math.h>
22 #define VPX_CODEC_DISABLE_COMPAT 1 22 #define VPX_CODEC_DISABLE_COMPAT 1
23 #include "vpx/vpx_encoder.h" 23 #include "vpx/vpx_encoder.h"
24 #include "vpx/vp8cx.h" 24 #include "vpx/vp8cx.h"
25 #include "vpx_ports/mem_ops.h" 25 #include "vpx_ports/mem_ops.h"
26 #include "./tools_common.h" 26 #include "./tools_common.h"
27 #define interface (vpx_codec_vp8_cx()) 27 #define interface (vpx_codec_vp8_cx())
28 #define fourcc 0x30385056 28 #define fourcc 0x30385056
29 29
30 #define IVF_FILE_HDR_SZ (32) 30 void usage_exit() {
31 #define IVF_FRAME_HDR_SZ (12) 31 exit(EXIT_FAILURE);
32 }
32 33
33 /* 34 /*
34 * The input video frame is downsampled several times to generate a multi-level 35 * The input video frame is downsampled several times to generate a multi-level
35 * hierarchical structure. NUM_ENCODERS is defined as the number of encoding 36 * hierarchical structure. NUM_ENCODERS is defined as the number of encoding
36 * levels required. For example, if the size of input video is 1280x720, 37 * levels required. For example, if the size of input video is 1280x720,
37 * NUM_ENCODERS is 3, and down-sampling factor is 2, the encoder outputs 3 38 * NUM_ENCODERS is 3, and down-sampling factor is 2, the encoder outputs 3
38 * bitstreams with resolution of 1280x720(level 0), 640x360(level 1), and 39 * bitstreams with resolution of 1280x720(level 0), 640x360(level 1), and
39 * 320x180(level 2) respectively. 40 * 320x180(level 2) respectively.
40 */ 41 */
41 #define NUM_ENCODERS 3 42 #define NUM_ENCODERS 3
42 43
43 /* This example uses the scaler function in libyuv. */ 44 /* This example uses the scaler function in libyuv. */
44 #include "third_party/libyuv/include/libyuv/basic_types.h" 45 #include "third_party/libyuv/include/libyuv/basic_types.h"
45 #include "third_party/libyuv/include/libyuv/scale.h" 46 #include "third_party/libyuv/include/libyuv/scale.h"
46 #include "third_party/libyuv/include/libyuv/cpu_id.h" 47 #include "third_party/libyuv/include/libyuv/cpu_id.h"
47 48
48 static void die(const char *fmt, ...) {
49 va_list ap;
50
51 va_start(ap, fmt);
52 vprintf(fmt, ap);
53 if(fmt[strlen(fmt)-1] != '\n')
54 printf("\n");
55 exit(EXIT_FAILURE);
56 }
57
58 static void die_codec(vpx_codec_ctx_t *ctx, const char *s) {
59 const char *detail = vpx_codec_error_detail(ctx);
60
61 printf("%s: %s\n", s, vpx_codec_error(ctx));
62 if(detail)
63 printf(" %s\n",detail);
64 exit(EXIT_FAILURE);
65 }
66
67 int (*read_frame_p)(FILE *f, vpx_image_t *img); 49 int (*read_frame_p)(FILE *f, vpx_image_t *img);
68 50
69 static int read_frame(FILE *f, vpx_image_t *img) { 51 static int read_frame(FILE *f, vpx_image_t *img) {
70 size_t nbytes, to_read; 52 size_t nbytes, to_read;
71 int res = 1; 53 int res = 1;
72 54
73 to_read = img->w*img->h*3/2; 55 to_read = img->w*img->h*3/2;
74 nbytes = fread(img->planes[0], 1, to_read, f); 56 nbytes = fread(img->planes[0], 1, to_read, f);
75 if(nbytes != to_read) { 57 if(nbytes != to_read) {
76 res = 0; 58 res = 0;
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 444
463 /* Try to rewrite the file header with the actual frame count */ 445 /* Try to rewrite the file header with the actual frame count */
464 if(!fseek(outfile[i], 0, SEEK_SET)) 446 if(!fseek(outfile[i], 0, SEEK_SET))
465 write_ivf_file_header(outfile[i], &cfg[i], frame_cnt-1); 447 write_ivf_file_header(outfile[i], &cfg[i], frame_cnt-1);
466 fclose(outfile[i]); 448 fclose(outfile[i]);
467 } 449 }
468 printf("\n"); 450 printf("\n");
469 451
470 return EXIT_SUCCESS; 452 return EXIT_SUCCESS;
471 } 453 }
OLDNEW
« no previous file with comments | « source/libvpx/examples.mk ('k') | source/libvpx/examples/vp9_spatial_svc_encoder.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698