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

Side by Side Diff: source/libvpx/vpxenc.c

Issue 290653003: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 7 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
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
(...skipping 24 matching lines...) Expand all
35 #if CONFIG_VP8_DECODER || CONFIG_VP9_DECODER 35 #if CONFIG_VP8_DECODER || CONFIG_VP9_DECODER
36 #include "vpx/vp8dx.h" 36 #include "vpx/vp8dx.h"
37 #endif 37 #endif
38 38
39 #include "vpx/vpx_integer.h" 39 #include "vpx/vpx_integer.h"
40 #include "vpx_ports/mem_ops.h" 40 #include "vpx_ports/mem_ops.h"
41 #include "vpx_ports/vpx_timer.h" 41 #include "vpx_ports/vpx_timer.h"
42 #include "./rate_hist.h" 42 #include "./rate_hist.h"
43 #include "./vpxstats.h" 43 #include "./vpxstats.h"
44 #include "./warnings.h" 44 #include "./warnings.h"
45 #if CONFIG_WEBM_IO
45 #include "./webmenc.h" 46 #include "./webmenc.h"
47 #endif
46 #include "./y4minput.h" 48 #include "./y4minput.h"
47 49
48 /* Swallow warnings about unused results of fread/fwrite */ 50 /* Swallow warnings about unused results of fread/fwrite */
49 static size_t wrap_fread(void *ptr, size_t size, size_t nmemb, 51 static size_t wrap_fread(void *ptr, size_t size, size_t nmemb,
50 FILE *stream) { 52 FILE *stream) {
51 return fread(ptr, size, nmemb, stream); 53 return fread(ptr, size, nmemb, stream);
52 } 54 }
53 #define fread wrap_fread 55 #define fread wrap_fread
54 56
55 static size_t wrap_fwrite(const void *ptr, size_t size, size_t nmemb, 57 static size_t wrap_fwrite(const void *ptr, size_t size, size_t nmemb,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 static const arg_def_t usage = ARG_DEF("u", "usage", 1, 202 static const arg_def_t usage = ARG_DEF("u", "usage", 1,
201 "Usage profile number to use") ; 203 "Usage profile number to use") ;
202 static const arg_def_t threads = ARG_DEF("t", "threads", 1, 204 static const arg_def_t threads = ARG_DEF("t", "threads", 1,
203 "Max number of threads to use" ); 205 "Max number of threads to use" );
204 static const arg_def_t profile = ARG_DEF(NULL, "profile", 1, 206 static const arg_def_t profile = ARG_DEF(NULL, "profile", 1,
205 "Bitstream profile number to u se"); 207 "Bitstream profile number to u se");
206 static const arg_def_t width = ARG_DEF("w", "width", 1, 208 static const arg_def_t width = ARG_DEF("w", "width", 1,
207 "Frame width"); 209 "Frame width");
208 static const arg_def_t height = ARG_DEF("h", "height", 1, 210 static const arg_def_t height = ARG_DEF("h", "height", 1,
209 "Frame height"); 211 "Frame height");
212 #if CONFIG_WEBM_IO
210 static const struct arg_enum_list stereo_mode_enum[] = { 213 static const struct arg_enum_list stereo_mode_enum[] = {
211 {"mono", STEREO_FORMAT_MONO}, 214 {"mono", STEREO_FORMAT_MONO},
212 {"left-right", STEREO_FORMAT_LEFT_RIGHT}, 215 {"left-right", STEREO_FORMAT_LEFT_RIGHT},
213 {"bottom-top", STEREO_FORMAT_BOTTOM_TOP}, 216 {"bottom-top", STEREO_FORMAT_BOTTOM_TOP},
214 {"top-bottom", STEREO_FORMAT_TOP_BOTTOM}, 217 {"top-bottom", STEREO_FORMAT_TOP_BOTTOM},
215 {"right-left", STEREO_FORMAT_RIGHT_LEFT}, 218 {"right-left", STEREO_FORMAT_RIGHT_LEFT},
216 {NULL, 0} 219 {NULL, 0}
217 }; 220 };
218 static const arg_def_t stereo_mode = ARG_DEF_ENUM(NULL, "stereo-mode", 1, 221 static const arg_def_t stereo_mode = ARG_DEF_ENUM(NULL, "stereo-mode", 1,
219 "Stereo 3D video format", stereo_mode_enum); 222 "Stereo 3D video format", stereo_mode_enum);
223 #endif
220 static const arg_def_t timebase = ARG_DEF(NULL, "timebase", 1, 224 static const arg_def_t timebase = ARG_DEF(NULL, "timebase", 1,
221 "Output timestamp precision (f ractional seconds)"); 225 "Output timestamp precision (f ractional seconds)");
222 static const arg_def_t error_resilient = ARG_DEF(NULL, "error-resilient", 1, 226 static const arg_def_t error_resilient = ARG_DEF(NULL, "error-resilient", 1,
223 "Enable error resiliency featu res"); 227 "Enable error resiliency featu res");
224 static const arg_def_t lag_in_frames = ARG_DEF(NULL, "lag-in-frames", 1, 228 static const arg_def_t lag_in_frames = ARG_DEF(NULL, "lag-in-frames", 1,
225 "Max number of frames to lag") ; 229 "Max number of frames to lag") ;
226 230
227 static const arg_def_t *global_args[] = { 231 static const arg_def_t *global_args[] = {
228 &use_yv12, &use_i420, &usage, &threads, &profile, 232 &use_yv12, &use_i420, &usage, &threads, &profile,
229 &width, &height, &stereo_mode, &timebase, &framerate, 233 &width, &height,
234 #if CONFIG_WEBM_IO
235 &stereo_mode,
236 #endif
237 &timebase, &framerate,
230 &error_resilient, 238 &error_resilient,
231 &lag_in_frames, NULL 239 &lag_in_frames, NULL
232 }; 240 };
233 241
234 static const arg_def_t dropframe_thresh = ARG_DEF(NULL, "drop-frame", 1, 242 static const arg_def_t dropframe_thresh = ARG_DEF(NULL, "drop-frame", 1,
235 "Temporal resampling thresho ld (buf %)"); 243 "Temporal resampling thresho ld (buf %)");
236 static const arg_def_t resize_allowed = ARG_DEF(NULL, "resize-allowed", 1, 244 static const arg_def_t resize_allowed = ARG_DEF(NULL, "resize-allowed", 1,
237 "Spatial resampling enabled (bool)"); 245 "Spatial resampling enabled (bool)");
238 static const arg_def_t resize_width = ARG_DEF(NULL, "resize-width", 1, 246 static const arg_def_t resize_width = ARG_DEF(NULL, "resize-width", 1,
239 "Width of encoded frame"); 247 "Width of encoded frame");
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 #define MAX(x,y) ((x)>(y)?(x):(y)) 555 #define MAX(x,y) ((x)>(y)?(x):(y))
548 #if CONFIG_VP8_ENCODER && !CONFIG_VP9_ENCODER 556 #if CONFIG_VP8_ENCODER && !CONFIG_VP9_ENCODER
549 #define ARG_CTRL_CNT_MAX NELEMENTS(vp8_arg_ctrl_map) 557 #define ARG_CTRL_CNT_MAX NELEMENTS(vp8_arg_ctrl_map)
550 #elif !CONFIG_VP8_ENCODER && CONFIG_VP9_ENCODER 558 #elif !CONFIG_VP8_ENCODER && CONFIG_VP9_ENCODER
551 #define ARG_CTRL_CNT_MAX NELEMENTS(vp9_arg_ctrl_map) 559 #define ARG_CTRL_CNT_MAX NELEMENTS(vp9_arg_ctrl_map)
552 #else 560 #else
553 #define ARG_CTRL_CNT_MAX MAX(NELEMENTS(vp8_arg_ctrl_map), \ 561 #define ARG_CTRL_CNT_MAX MAX(NELEMENTS(vp8_arg_ctrl_map), \
554 NELEMENTS(vp9_arg_ctrl_map)) 562 NELEMENTS(vp9_arg_ctrl_map))
555 #endif 563 #endif
556 564
565 #if !CONFIG_WEBM_IO
566 typedef int stereo_format_t;
567 struct EbmlGlobal { int debug; };
568 #endif
569
557 /* Per-stream configuration */ 570 /* Per-stream configuration */
558 struct stream_config { 571 struct stream_config {
559 struct vpx_codec_enc_cfg cfg; 572 struct vpx_codec_enc_cfg cfg;
560 const char *out_fn; 573 const char *out_fn;
561 const char *stats_fn; 574 const char *stats_fn;
562 stereo_format_t stereo_fmt; 575 stereo_format_t stereo_fmt;
563 int arg_ctrls[ARG_CTRL_CNT_MAX][2]; 576 int arg_ctrls[ARG_CTRL_CNT_MAX][2];
564 int arg_ctrl_cnt; 577 int arg_ctrl_cnt;
565 int write_webm; 578 int write_webm;
566 int have_kf_max_dist; 579 int have_kf_max_dist;
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 */ 798 */
786 stream->config.cfg.g_timebase.den = 1000; 799 stream->config.cfg.g_timebase.den = 1000;
787 800
788 /* Never use the library's default resolution, require it be parsed 801 /* Never use the library's default resolution, require it be parsed
789 * from the file or set on the command line. 802 * from the file or set on the command line.
790 */ 803 */
791 stream->config.cfg.g_w = 0; 804 stream->config.cfg.g_w = 0;
792 stream->config.cfg.g_h = 0; 805 stream->config.cfg.g_h = 0;
793 806
794 /* Initialize remaining stream parameters */ 807 /* Initialize remaining stream parameters */
795 stream->config.stereo_fmt = STEREO_FORMAT_MONO;
796 stream->config.write_webm = 1; 808 stream->config.write_webm = 1;
797 #if CONFIG_WEBM_IO 809 #if CONFIG_WEBM_IO
810 stream->config.stereo_fmt = STEREO_FORMAT_MONO;
798 stream->ebml.last_pts_ns = -1; 811 stream->ebml.last_pts_ns = -1;
799 stream->ebml.writer = NULL; 812 stream->ebml.writer = NULL;
800 stream->ebml.segment = NULL; 813 stream->ebml.segment = NULL;
801 #endif 814 #endif
802 815
803 /* Allows removal of the application version from the EBML tags */ 816 /* Allows removal of the application version from the EBML tags */
804 stream->ebml.debug = global->debug; 817 stream->ebml.debug = global->debug;
805 818
806 /* Default lag_in_frames is 0 in realtime mode */ 819 /* Default lag_in_frames is 0 in realtime mode */
807 if (global->deadline == VPX_DL_REALTIME) 820 if (global->deadline == VPX_DL_REALTIME)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 } else if (arg_match(&arg, &use_ivf, argi)) { 875 } else if (arg_match(&arg, &use_ivf, argi)) {
863 config->write_webm = 0; 876 config->write_webm = 0;
864 } else if (arg_match(&arg, &threads, argi)) { 877 } else if (arg_match(&arg, &threads, argi)) {
865 config->cfg.g_threads = arg_parse_uint(&arg); 878 config->cfg.g_threads = arg_parse_uint(&arg);
866 } else if (arg_match(&arg, &profile, argi)) { 879 } else if (arg_match(&arg, &profile, argi)) {
867 config->cfg.g_profile = arg_parse_uint(&arg); 880 config->cfg.g_profile = arg_parse_uint(&arg);
868 } else if (arg_match(&arg, &width, argi)) { 881 } else if (arg_match(&arg, &width, argi)) {
869 config->cfg.g_w = arg_parse_uint(&arg); 882 config->cfg.g_w = arg_parse_uint(&arg);
870 } else if (arg_match(&arg, &height, argi)) { 883 } else if (arg_match(&arg, &height, argi)) {
871 config->cfg.g_h = arg_parse_uint(&arg); 884 config->cfg.g_h = arg_parse_uint(&arg);
885 #if CONFIG_WEBM_IO
872 } else if (arg_match(&arg, &stereo_mode, argi)) { 886 } else if (arg_match(&arg, &stereo_mode, argi)) {
873 config->stereo_fmt = arg_parse_enum_or_int(&arg); 887 config->stereo_fmt = arg_parse_enum_or_int(&arg);
888 #endif
874 } else if (arg_match(&arg, &timebase, argi)) { 889 } else if (arg_match(&arg, &timebase, argi)) {
875 config->cfg.g_timebase = arg_parse_rational(&arg); 890 config->cfg.g_timebase = arg_parse_rational(&arg);
876 validate_positive_rational(arg.name, &config->cfg.g_timebase); 891 validate_positive_rational(arg.name, &config->cfg.g_timebase);
877 } else if (arg_match(&arg, &error_resilient, argi)) { 892 } else if (arg_match(&arg, &error_resilient, argi)) {
878 config->cfg.g_error_resilient = arg_parse_uint(&arg); 893 config->cfg.g_error_resilient = arg_parse_uint(&arg);
879 } else if (arg_match(&arg, &lag_in_frames, argi)) { 894 } else if (arg_match(&arg, &lag_in_frames, argi)) {
880 config->cfg.g_lag_in_frames = arg_parse_uint(&arg); 895 config->cfg.g_lag_in_frames = arg_parse_uint(&arg);
881 if (global->deadline == VPX_DL_REALTIME && 896 if (global->deadline == VPX_DL_REALTIME &&
882 config->cfg.g_lag_in_frames != 0) { 897 config->cfg.g_lag_in_frames != 0) {
883 warn("non-zero %s option ignored in realtime mode.\n", arg.name); 898 warn("non-zero %s option ignored in realtime mode.\n", arg.name);
(...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after
1760 } 1775 }
1761 fclose(f); 1776 fclose(f);
1762 }); 1777 });
1763 #endif 1778 #endif
1764 1779
1765 vpx_img_free(&raw); 1780 vpx_img_free(&raw);
1766 free(argv); 1781 free(argv);
1767 free(streams); 1782 free(streams);
1768 return res ? EXIT_FAILURE : EXIT_SUCCESS; 1783 return res ? EXIT_FAILURE : EXIT_SUCCESS;
1769 } 1784 }
OLDNEW
« generate_gypi.sh ('K') | « source/libvpx/vpxdec.c ('k') | update_libvpx.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698