msm: vidc: Add support for Vp9 decode in vidc driver

This change adds support for VP9 codec type in vidc driver and
sets the compression format to venus HFI.

Change-Id: I2499f39c7adc1064d7f1a6ff4f1f8e639fb3f667
Signed-off-by: Sowmya Pandiri <spandiri@codeaurora.org>
Signed-off-by: Deepak Kushwah <dkushwah@codeaurora.org>
This commit is contained in:
Sowmya Pandiri 2015-02-18 00:50:47 -08:00 committed by Gerrit - the friendly Code Review server
parent 54ec6413ca
commit 98d2152982
7 changed files with 26 additions and 4 deletions

View File

@ -805,6 +805,11 @@ extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see
<entry>'VP8'</entry>
<entry>VP8 video elementary stream.</entry>
</row>
<row id="V4L2-PIX-FMT-VP9">
<entry><constant>V4L2_PIX_FMT_VP9</constant></entry>
<entry>'VP9'</entry>
<entry>VP9 video elementary stream.</entry>
</row>
</tbody>
</tgroup>
</table>

View File

@ -165,6 +165,9 @@ static inline u32 get_hfi_codec(enum hal_video_codec hal_codec)
case HAL_VIDEO_CODEC_HEVC:
hfi_codec = HFI_VIDEO_CODEC_HEVC;
break;
case HAL_VIDEO_CODEC_VP9:
hfi_codec = HFI_VIDEO_CODEC_VP9;
break;
case HAL_VIDEO_CODEC_HEVC_HYBRID:
hfi_codec = HFI_VIDEO_CODEC_HEVC_HYBRID;
break;

View File

@ -726,6 +726,14 @@ struct msm_vidc_format vdec_formats[] = {
.get_frame_size = get_frame_size_compressed,
.type = OUTPUT_PORT,
},
{
.name = "VP9",
.description = "VP9 compressed format",
.fourcc = V4L2_PIX_FMT_VP9,
.num_planes = 1,
.get_frame_size = get_frame_size_compressed,
.type = OUTPUT_PORT,
},
{
.name = "DIVX 311",
.description = "DIVX 311 compressed format",

View File

@ -207,6 +207,9 @@ enum hal_video_codec get_hal_codec_type(int fourcc)
case V4L2_PIX_FMT_VP8:
codec = HAL_VIDEO_CODEC_VP8;
break;
case V4L2_PIX_FMT_VP9:
codec = HAL_VIDEO_CODEC_VP9;
break;
case V4L2_PIX_FMT_DIVX_311:
codec = HAL_VIDEO_CODEC_DIVX_311;
break;

View File

@ -261,7 +261,8 @@ enum hal_video_codec {
HAL_VIDEO_CODEC_VP7 = 0x00000800,
HAL_VIDEO_CODEC_VP8 = 0x00001000,
HAL_VIDEO_CODEC_HEVC = 0x00002000,
HAL_VIDEO_CODEC_HEVC_HYBRID = 0x00004000,
HAL_VIDEO_CODEC_VP9 = 0x00004000,
HAL_VIDEO_CODEC_HEVC_HYBRID = 0x80000000,
HAL_UNUSED_CODEC = 0x10000000,
};

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@ -86,7 +86,8 @@
#define HFI_VIDEO_CODEC_SPARK 0x00000200
#define HFI_VIDEO_CODEC_VP8 0x00001000
#define HFI_VIDEO_CODEC_HEVC 0x00002000
#define HFI_VIDEO_CODEC_HEVC_HYBRID 0x00004000
#define HFI_VIDEO_CODEC_VP9 0x00004000
#define HFI_VIDEO_CODEC_HEVC_HYBRID 0x80000000
#define HFI_H264_PROFILE_BASELINE 0x00000001
#define HFI_H264_PROFILE_MAIN 0x00000002

View File

@ -402,9 +402,10 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */
#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
#define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
#define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */
#define V4L2_PIX_FMT_DIVX_311 v4l2_fourcc('D', 'I', 'V', '3') /* DIVX311 */
#define V4L2_PIX_FMT_DIVX v4l2_fourcc('D', 'I', 'V', 'X') /* DIVX */
#define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* for HEVC stream */
#define V4L2_PIX_FMT_HEVC_HYBRID v4l2_fourcc('H', 'V', 'C', 'H')