summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSun, Mingruo <mingruo.sun@intel.com>2015-07-27 16:46:04 +0800
committerAustin Yuan <shengquan.yuan@intel.com>2015-07-28 10:07:17 +0800
commita393e323c34b1579f0c2291842c8a558f6f11eb0 (patch)
tree010afdc063c2e26f49264f2034a2ba8e8288deef
parent9d552d5412adfa4ea973b4ac1b815cb632f20ae3 (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.h7
-rw-r--r--vaenc/va_encode.c9
-rw-r--r--vaenc/va_encode.h3
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);