diff options
author | Sun, Mingruo <mingruo.sun@intel.com> | 2015-07-27 16:46:04 +0800 |
---|---|---|
committer | Austin Yuan <shengquan.yuan@intel.com> | 2015-07-28 10:07:17 +0800 |
commit | a393e323c34b1579f0c2291842c8a558f6f11eb0 (patch) | |
tree | 010afdc063c2e26f49264f2034a2ba8e8288deef | |
parent | 9d552d5412adfa4ea973b4ac1b815cb632f20ae3 (diff) |
vaenc: add new features
1. disable MBBRC for VDENC
2. add "target_percentage" option
3. fix YV12 surface loading
4. fix a typo error
Signed-off-by: Sun, Mingruo <mingruo.sun@intel.com>
-rw-r--r-- | utils/loadsurface.h | 7 | ||||
-rw-r--r-- | vaenc/va_encode.c | 9 | ||||
-rw-r--r-- | vaenc/va_encode.h | 3 |
3 files changed, 11 insertions, 8 deletions
diff --git a/utils/loadsurface.h b/utils/loadsurface.h index bd73caa..d996da1 100644 --- a/utils/loadsurface.h +++ b/utils/loadsurface.h @@ -169,12 +169,7 @@ static int upload_surface_yuv(VADisplay va_dpy, VASurfaceID surface_id, U_row += U_pitch; } } else { - if (src_fourcc == VA_FOURCC_IYUV) { - u_ptr = src_U; v_ptr = src_V; - } else { - //if (src_fourcc == VA_FOURCC_YV12) - u_ptr = src_V; v_ptr = src_U; - } + u_ptr = src_U; v_ptr = src_V; for (row = 0; row < (src_height >> 1); row++) { for(j = 0; j < (src_width >> 1); j++) { diff --git a/vaenc/va_encode.c b/vaenc/va_encode.c index ce2a0ad..76f529a 100644 --- a/vaenc/va_encode.c +++ b/vaenc/va_encode.c @@ -160,6 +160,7 @@ unsigned int bitrate_layer0 = 0; unsigned int bitrate_layer1 = 0; unsigned int bitrate_layer2 = 0; unsigned int windows_size = 1000; +unsigned int target_percentage = 95; /* For Adaptive Intra Refresh */ unsigned int enableAIR = 0; @@ -398,6 +399,7 @@ static int print_help(void) printf(" -roi_rec_y defines the ROI boundary in pixels, AVC Encoder setting\n"); printf(" -roi_rec_w defines the ROI boundary in pixels, AVC Encoder setting\n"); printf(" -roi_rec_h defines the ROI boundary in pixels, AVC Encoder setting\n"); + printf(" -target_percentage [target percentage for VBR mode] default is 95"); return 0; } @@ -474,6 +476,7 @@ static int process_cmdline(int argc, char *argv[]) {"roi_rec_y", required_argument, NULL, 67}, {"roi_rec_w", required_argument, NULL, 68}, {"roi_rec_h", required_argument, NULL, 69}, + {"target_percentage", required_argument, NULL, 70}, {NULL, no_argument, NULL, 0 }}; int long_index, i, tmp, intra_idr_period_tmp = -1; @@ -739,6 +742,7 @@ static int process_cmdline(int argc, char *argv[]) case 59: if (!strncmp(optarg, "LP", 2)) va_entrypoint = VAEntrypointEncSliceLP; + carc = 2; //disable MBBRC for VDENC break; case 60: buf_destroy = 0; @@ -787,6 +791,9 @@ static int process_cmdline(int argc, char *argv[]) } roi_rec_h = atoi_rtn; break; + case 70: + target_percentage = atoi(optarg); + break; case '?': print_help(); exit(0); @@ -949,7 +956,7 @@ static int process_cmdline(int argc, char *argv[]) rc_params->frame_height = frame_height_mbaligned; rc_params->bits_per_second = frame_bitrate; rc_params->frame_rate = frame_rate; - rc_params->target_percentage = 66; + rc_params->target_percentage = target_percentage; rc_params->window_size = windows_size; rc_params->initial_qp = initial_qp; rc_params->min_qp = minimal_qp; diff --git a/vaenc/va_encode.h b/vaenc/va_encode.h index 6bca627..6b1e254 100644 --- a/vaenc/va_encode.h +++ b/vaenc/va_encode.h @@ -171,13 +171,14 @@ extern int pm_active; extern int buf_destroy; extern unsigned int roi_enable; -extern unsigned int roi_value; +extern int roi_value; extern int roi_minqp; extern int roi_maxqp; extern unsigned int roi_rec_x; extern unsigned int roi_rec_y; extern unsigned int roi_rec_w; extern unsigned int roi_rec_h; +extern unsigned int target_percentage; int access_statitics(void *p, int encoder_order); int print_statitics(int frame_number, int width, int height); |