aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/platform/s5p-mfc/s5p_mfc_enc.c')
-rw-r--r--drivers/media/platform/s5p-mfc/s5p_mfc_enc.c57
1 files changed, 56 insertions, 1 deletions
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
index 4ff3b6cd6842..91b6e020ddf3 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
@@ -618,6 +618,46 @@ static struct mfc_control controls[] = {
618 .default_value = V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV, 618 .default_value = V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV,
619 .menu_skip_mask = 0, 619 .menu_skip_mask = 0,
620 }, 620 },
621 {
622 .id = V4L2_CID_MPEG_VIDEO_VPX_MAX_QP,
623 .type = V4L2_CTRL_TYPE_INTEGER,
624 .minimum = 0,
625 .maximum = 127,
626 .step = 1,
627 .default_value = 127,
628 },
629 {
630 .id = V4L2_CID_MPEG_VIDEO_VPX_MIN_QP,
631 .type = V4L2_CTRL_TYPE_INTEGER,
632 .minimum = 0,
633 .maximum = 11,
634 .step = 1,
635 .default_value = 0,
636 },
637 {
638 .id = V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP,
639 .type = V4L2_CTRL_TYPE_INTEGER,
640 .minimum = 0,
641 .maximum = 127,
642 .step = 1,
643 .default_value = 10,
644 },
645 {
646 .id = V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP,
647 .type = V4L2_CTRL_TYPE_INTEGER,
648 .minimum = 0,
649 .maximum = 127,
650 .step = 1,
651 .default_value = 10,
652 },
653 {
654 .id = V4L2_CID_MPEG_VIDEO_VPX_PROFILE,
655 .type = V4L2_CTRL_TYPE_INTEGER,
656 .minimum = 0,
657 .maximum = 3,
658 .step = 1,
659 .default_value = 0,
660 },
621}; 661};
622 662
623#define NUM_CTRLS ARRAY_SIZE(controls) 663#define NUM_CTRLS ARRAY_SIZE(controls)
@@ -1557,6 +1597,21 @@ static int s5p_mfc_enc_s_ctrl(struct v4l2_ctrl *ctrl)
1557 case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL: 1597 case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
1558 p->codec.vp8.golden_frame_sel = ctrl->val; 1598 p->codec.vp8.golden_frame_sel = ctrl->val;
1559 break; 1599 break;
1600 case V4L2_CID_MPEG_VIDEO_VPX_MIN_QP:
1601 p->codec.vp8.rc_min_qp = ctrl->val;
1602 break;
1603 case V4L2_CID_MPEG_VIDEO_VPX_MAX_QP:
1604 p->codec.vp8.rc_max_qp = ctrl->val;
1605 break;
1606 case V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP:
1607 p->codec.vp8.rc_frame_qp = ctrl->val;
1608 break;
1609 case V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP:
1610 p->codec.vp8.rc_p_frame_qp = ctrl->val;
1611 break;
1612 case V4L2_CID_MPEG_VIDEO_VPX_PROFILE:
1613 p->codec.vp8.profile = ctrl->val;
1614 break;
1560 default: 1615 default:
1561 v4l2_err(&dev->v4l2_dev, "Invalid control, id=%d, val=%d\n", 1616 v4l2_err(&dev->v4l2_dev, "Invalid control, id=%d, val=%d\n",
1562 ctrl->id, ctrl->val); 1617 ctrl->id, ctrl->val);
@@ -1863,7 +1918,7 @@ static int s5p_mfc_start_streaming(struct vb2_queue *q, unsigned int count)
1863 if (ctx->src_bufs_cnt < ctx->pb_count) { 1918 if (ctx->src_bufs_cnt < ctx->pb_count) {
1864 mfc_err("Need minimum %d OUTPUT buffers\n", 1919 mfc_err("Need minimum %d OUTPUT buffers\n",
1865 ctx->pb_count); 1920 ctx->pb_count);
1866 return -EINVAL; 1921 return -ENOBUFS;
1867 } 1922 }
1868 } 1923 }
1869 1924