diff options
Diffstat (limited to 'drivers/media/platform/s5p-mfc/s5p_mfc_enc.c')
-rw-r--r-- | drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 57 |
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 | ||