| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 * Set SVC options | 45 * Set SVC options |
| 46 * options are supplied as a single string separated by spaces | 46 * options are supplied as a single string separated by spaces |
| 47 * Format: encoding-mode=<i|ip|alt-ip|gf> | 47 * Format: encoding-mode=<i|ip|alt-ip|gf> |
| 48 * layers=<layer_count> | 48 * layers=<layer_count> |
| 49 * scaling-factors=<n1>/<d1>,<n2>/<d2>,... | 49 * scaling-factors=<n1>/<d1>,<n2>/<d2>,... |
| 50 * quantizers=<q1>,<q2>,... | 50 * quantizers=<q1>,<q2>,... |
| 51 */ | 51 */ |
| 52 vpx_codec_err_t vpx_svc_set_options(SvcContext *svc_ctx, const char *options); | 52 vpx_codec_err_t vpx_svc_set_options(SvcContext *svc_ctx, const char *options); |
| 53 | 53 |
| 54 /** | 54 /** |
| 55 * Set SVC quantizer values | |
| 56 * values comma separated, ordered from lowest resolution to highest | |
| 57 * e.g., "60,53,39,33,27" | |
| 58 */ | |
| 59 vpx_codec_err_t vpx_svc_set_quantizers(SvcContext *svc_ctx, | |
| 60 const char *quantizer_values); | |
| 61 | |
| 62 /** | |
| 63 * Set SVC scale factors | |
| 64 * values comma separated, ordered from lowest resolution to highest | |
| 65 * e.g., "4/16,5/16,7/16,11/16,16/16" | |
| 66 */ | |
| 67 vpx_codec_err_t vpx_svc_set_scale_factors(SvcContext *svc_ctx, | |
| 68 const char *scale_factors); | |
| 69 | |
| 70 /** | |
| 71 * initialize SVC encoding | 55 * initialize SVC encoding |
| 72 */ | 56 */ |
| 73 vpx_codec_err_t vpx_svc_init(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx, | 57 vpx_codec_err_t vpx_svc_init(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx, |
| 74 vpx_codec_iface_t *iface, | 58 vpx_codec_iface_t *iface, |
| 75 vpx_codec_enc_cfg_t *cfg); | 59 vpx_codec_enc_cfg_t *cfg); |
| 76 /** | 60 /** |
| 77 * encode a frame of video with multiple layers | 61 * encode a frame of video with multiple layers |
| 78 */ | 62 */ |
| 79 vpx_codec_err_t vpx_svc_encode(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx, | 63 vpx_codec_err_t vpx_svc_encode(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx, |
| 80 struct vpx_image *rawimg, vpx_codec_pts_t pts, | 64 struct vpx_image *rawimg, vpx_codec_pts_t pts, |
| 81 int64_t duration, int deadline); | 65 int64_t duration, int deadline); |
| 82 | 66 |
| 83 /** | 67 /** |
| 84 * finished with svc encoding, release allocated resources | 68 * finished with svc encoding, release allocated resources |
| 85 */ | 69 */ |
| 86 void vpx_svc_release(SvcContext *svc_ctx); | 70 void vpx_svc_release(SvcContext *svc_ctx); |
| 87 | 71 |
| 88 /** | 72 /** |
| 89 * dump accumulated statistics and reset accumulated values | 73 * dump accumulated statistics and reset accumulated values |
| 90 */ | 74 */ |
| 91 const char *vpx_svc_dump_statistics(SvcContext *svc_ctx); | 75 const char *vpx_svc_dump_statistics(SvcContext *svc_ctx); |
| 92 | 76 |
| 93 /** | 77 /** |
| 94 * get status message from previous encode | 78 * get status message from previous encode |
| 95 */ | 79 */ |
| 96 const char *vpx_svc_get_message(const SvcContext *svc_ctx); | 80 const char *vpx_svc_get_message(const SvcContext *svc_ctx); |
| 97 | 81 |
| 98 /** | |
| 99 * return size of encoded data to be returned by vpx_svc_get_buffer. | |
| 100 * it needs to be called before vpx_svc_get_buffer. | |
| 101 */ | |
| 102 size_t vpx_svc_get_frame_size(const SvcContext *svc_ctx); | |
| 103 | |
| 104 /** | |
| 105 * return buffer with encoded data. encoder will maintain a list of frame | |
| 106 * buffers. each call of vpx_svc_get_buffer() will return one frame. | |
| 107 */ | |
| 108 void *vpx_svc_get_buffer(SvcContext *svc_ctx); | |
| 109 | |
| 110 /** | |
| 111 * return size of two pass rate control stats data to be returned by | |
| 112 * vpx_svc_get_rc_stats_buffer | |
| 113 */ | |
| 114 size_t vpx_svc_get_rc_stats_buffer_size(const SvcContext *svc_ctx); | |
| 115 | |
| 116 /** | |
| 117 * return buffer two pass of rate control stats data | |
| 118 */ | |
| 119 char *vpx_svc_get_rc_stats_buffer(const SvcContext *svc_ctx); | |
| 120 | |
| 121 /** | |
| 122 * return spatial resolution of the specified layer | |
| 123 */ | |
| 124 vpx_codec_err_t vpx_svc_get_layer_resolution(const SvcContext *svc_ctx, | |
| 125 int layer, | |
| 126 unsigned int *width, | |
| 127 unsigned int *height); | |
| 128 /** | |
| 129 * return number of frames that have been encoded | |
| 130 */ | |
| 131 int vpx_svc_get_encode_frame_count(const SvcContext *svc_ctx); | |
| 132 | |
| 133 /** | |
| 134 * return 1 if last encoded frame was a keyframe | |
| 135 */ | |
| 136 int vpx_svc_is_keyframe(const SvcContext *svc_ctx); | |
| 137 | |
| 138 /** | |
| 139 * force the next frame to be a keyframe | |
| 140 */ | |
| 141 void vpx_svc_set_keyframe(SvcContext *svc_ctx); | |
| 142 | |
| 143 #ifdef __cplusplus | 82 #ifdef __cplusplus |
| 144 } // extern "C" | 83 } // extern "C" |
| 145 #endif | 84 #endif |
| 146 | 85 |
| 147 #endif // VPX_SVC_CONTEXT_H_ | 86 #endif // VPX_SVC_CONTEXT_H_ |
| OLD | NEW |