Skip to content

Commit 1e18293

Browse files
committed
Add quality-performance trade-off setting
Signed-off-by: Yao, Leyu <[email protected]>
1 parent ecd26b3 commit 1e18293

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

encode/av1encode.c

+42
Original file line numberDiff line numberDiff line change
@@ -1512,6 +1512,45 @@ render_fr_buffer()
15121512
}
15131513
}
15141514

1515+
static void
1516+
render_quality_buffer()
1517+
{
1518+
VABufferID param_buf = VA_INVALID_ID;
1519+
VAStatus va_status;
1520+
VABufferID render_id = VA_INVALID_ID;
1521+
1522+
VAEncMiscParameterBuffer *misc_param;
1523+
VAEncMiscParameterBufferQualityLevel *misc_quality;
1524+
1525+
va_status = vaCreateBuffer(va_dpy, context_id,
1526+
VAEncMiscParameterBufferType,
1527+
sizeof(VAEncMiscParameterBuffer) + sizeof(VAEncMiscParameterBufferQualityLevel),
1528+
1, NULL, &param_buf);
1529+
CHECK_VASTATUS(va_status, "vaCreateBuffer");
1530+
1531+
vaMapBuffer(va_dpy, param_buf, (void **)&misc_param);
1532+
misc_param->type = VAEncMiscParameterTypeQualityLevel;
1533+
misc_quality = (VAEncMiscParameterBufferQualityLevel *)misc_param->data;
1534+
memset(misc_quality, 0, sizeof(*misc_quality));
1535+
1536+
//quality_level range {1...7}, 1 is best quality, 7 is best performance
1537+
// 7 is default setting
1538+
misc_quality->quality_level = 7;
1539+
1540+
vaUnmapBuffer(va_dpy, param_buf);
1541+
1542+
render_id = param_buf;
1543+
1544+
va_status = vaRenderPicture(va_dpy, context_id, &render_id, 1);
1545+
CHECK_VASTATUS(va_status, "vaRenderPicture");
1546+
1547+
if (param_buf != VA_INVALID_ID)
1548+
{
1549+
vaDestroyBuffer(va_dpy, param_buf);
1550+
param_buf = VA_INVALID_ID;
1551+
}
1552+
}
1553+
15151554
static void
15161555
render_misc_buffer()
15171556
{
@@ -2821,6 +2860,9 @@ static int encode_frames(void)
28212860
render_misc_buffer();
28222861
}
28232862

2863+
// setting qulity-performance trade-off
2864+
if(current_frame_encoding == 0)
2865+
render_quality_buffer();
28242866

28252867
render_packedpicture(); //render packed frame header
28262868
render_picture(); //render frame PPS buffer

0 commit comments

Comments
 (0)