1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765 |
- // SPDX-License-Identifier: GPL-2.0-only
- /*
- * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
- */
- #include <soc/qcom/of_common.h>
- #include "msm_vidc_control.h"
- #include "msm_vidc_pineapple.h"
- #include "msm_vidc_platform.h"
- #include "msm_vidc_debug.h"
- #include "msm_vidc_iris33.h"
- #include "hfi_property.h"
- #include "hfi_command.h"
- #include "venus_hfi.h"
- #define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010
- #define MAX_BASE_LAYER_PRIORITY_ID 63
- #define MAX_OP_POINT 31
- #define MAX_BITRATE 245000000
- #define DEFAULT_BITRATE 20000000
- #define MINIMUM_FPS 1
- #define MAXIMUM_FPS 480
- #define MAX_QP 51
- #define DEFAULT_QP 20
- #define MAX_CONSTANT_QUALITY 100
- #define MIN_SLICE_BYTE_SIZE 512
- #define MAX_SLICE_BYTE_SIZE \
- ((MAX_BITRATE) >> 3)
- #define MAX_SLICE_MB_SIZE \
- (((4096 + 15) >> 4) * ((2304 + 15) >> 4))
- #define ENC MSM_VIDC_ENCODER
- #define DEC MSM_VIDC_DECODER
- #define H264 MSM_VIDC_H264
- #define HEVC MSM_VIDC_HEVC
- #define VP9 MSM_VIDC_VP9
- #define CODECS_ALL (H264 | HEVC | VP9)
- #define MAXIMUM_OVERRIDE_VP9_FPS 180
- #ifndef V4L2_PIX_FMT_QC08C
- #define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
- #endif
- #ifndef V4L2_PIX_FMT_QC10C
- #define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
- #endif
- static struct codec_info codec_data_pineapple[] = {
- {
- .v4l2_codec = V4L2_PIX_FMT_H264,
- .vidc_codec = MSM_VIDC_H264,
- .pixfmt_name = "AVC",
- },
- {
- .v4l2_codec = V4L2_PIX_FMT_HEVC,
- .vidc_codec = MSM_VIDC_HEVC,
- .pixfmt_name = "HEVC",
- },
- {
- .v4l2_codec = V4L2_PIX_FMT_VP9,
- .vidc_codec = MSM_VIDC_VP9,
- .pixfmt_name = "VP9",
- },
- };
- static struct color_format_info color_format_data_pineapple[] = {
- {
- .v4l2_color_format = V4L2_PIX_FMT_NV12,
- .vidc_color_format = MSM_VIDC_FMT_NV12,
- .pixfmt_name = "NV12",
- },
- {
- .v4l2_color_format = V4L2_PIX_FMT_NV21,
- .vidc_color_format = MSM_VIDC_FMT_NV21,
- .pixfmt_name = "NV21",
- },
- {
- .v4l2_color_format = V4L2_PIX_FMT_QC08C,
- .vidc_color_format = MSM_VIDC_FMT_NV12C,
- .pixfmt_name = "NV12C",
- },
- {
- .v4l2_color_format = V4L2_PIX_FMT_QC10C,
- .vidc_color_format = MSM_VIDC_FMT_TP10C,
- .pixfmt_name = "TP10C",
- },
- {
- .v4l2_color_format = V4L2_PIX_FMT_RGBA32,
- .vidc_color_format = MSM_VIDC_FMT_RGBA8888,
- .pixfmt_name = "RGBA",
- },
- };
- static struct color_primaries_info color_primaries_data_pineapple[] = {
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_DEFAULT,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_RESERVED,
- },
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_REC709,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT709,
- },
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_470_SYSTEM_M,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT470_SYSTEM_M,
- },
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_470_SYSTEM_BG,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT470_SYSTEM_BG,
- },
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_SMPTE170M,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT601_525,
- },
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_SMPTE240M,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_SMPTE_ST240M,
- },
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_BT2020,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT2020,
- },
- {
- .v4l2_color_primaries = V4L2_COLORSPACE_DCI_P3,
- .vidc_color_primaries = MSM_VIDC_PRIMARIES_SMPTE_RP431_2,
- },
- };
- static struct transfer_char_info transfer_char_data_pineapple[] = {
- {
- .v4l2_transfer_char = V4L2_XFER_FUNC_DEFAULT,
- .vidc_transfer_char = MSM_VIDC_TRANSFER_RESERVED,
- },
- {
- .v4l2_transfer_char = V4L2_XFER_FUNC_709,
- .vidc_transfer_char = MSM_VIDC_TRANSFER_BT709,
- },
- {
- .v4l2_transfer_char = V4L2_XFER_FUNC_SMPTE240M,
- .vidc_transfer_char = MSM_VIDC_TRANSFER_SMPTE_ST240M,
- },
- {
- .v4l2_transfer_char = V4L2_XFER_FUNC_SRGB,
- .vidc_transfer_char = MSM_VIDC_TRANSFER_SRGB_SYCC,
- },
- {
- .v4l2_transfer_char = V4L2_XFER_FUNC_SMPTE2084,
- .vidc_transfer_char = MSM_VIDC_TRANSFER_SMPTE_ST2084_PQ,
- },
- };
- static struct matrix_coeff_info matrix_coeff_data_pineapple[] = {
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_DEFAULT,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_RESERVED,
- },
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_709,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT709,
- },
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_XV709,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT709,
- },
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_XV601,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT470_SYS_BG_OR_BT601_625,
- },
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_601,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT601_525_BT1358_525_OR_625,
- },
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_SMPTE240M,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_SMPTE_ST240,
- },
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_BT2020,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT2020_NON_CONSTANT,
- },
- {
- .v4l2_matrix_coeff = V4L2_YCBCR_ENC_BT2020_CONST_LUM,
- .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT2020_CONSTANT,
- },
- };
- static struct msm_platform_core_capability core_data_pineapple[] = {
- /* {type, value} */
- {ENC_CODECS, H264|HEVC},
- {DEC_CODECS, H264|HEVC|VP9},
- {MAX_SESSION_COUNT, 16},
- {MAX_NUM_720P_SESSIONS, 16},
- {MAX_NUM_1080P_SESSIONS, 16},
- {MAX_NUM_4K_SESSIONS, 8},
- {MAX_NUM_8K_SESSIONS, 2},
- {MAX_RT_MBPF, 174080}, /* (8192x4352)/256 + (4096x2176)/256*/
- {MAX_MBPF, 278528}, /* ((8192x4352)/256) * 2 */
- {MAX_MBPS, 7833600}, /* max_load
- * 7680x4320@60fps or 3840x2176@240fps
- * which is greater than 4096x2176@120fps,
- * 8192x4320@48fps
- */
- {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */
- {MAX_MBPS_HQ, 489600}, /* ((1920x1088)/256)@60fps */
- {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */
- {MAX_MBPS_B_FRAME, 1958400}, /* 3840x2176/256 MBs@60fps */
- {MAX_MBPS_ALL_INTRA, 1044480}, /* 4096x2176/256 MBs@30fps */
- {MAX_ENH_LAYER_COUNT, 5},
- {NUM_VPP_PIPE, 4},
- {SW_PC, 1},
- {FW_UNLOAD, 0},
- {HW_RESPONSE_TIMEOUT, HW_RESPONSE_TIMEOUT_VALUE}, /* 1000 ms */
- {SW_PC_DELAY, SW_PC_DELAY_VALUE }, /* 1500 ms (>HW_RESPONSE_TIMEOUT)*/
- {FW_UNLOAD_DELAY, FW_UNLOAD_DELAY_VALUE }, /* 3000 ms (>SW_PC_DELAY)*/
- {DCVS, 1},
- {DECODE_BATCH, 1},
- {DECODE_BATCH_TIMEOUT, 200},
- {STATS_TIMEOUT_MS, 2000},
- {NON_FATAL_FAULTS, 1},
- {ENC_AUTO_FRAMERATE, 1},
- {DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING},
- {SUPPORTS_SYNX_FENCE, 0},
- {SUPPORTS_REQUESTS, 0},
- };
- static int msm_vidc_set_ring_buffer_count_pineapple(void *instance,
- enum msm_vidc_inst_capability_type cap_id)
- {
- int rc = 0;
- struct msm_vidc_inst *inst = (struct msm_vidc_inst *) instance;
- struct v4l2_format *output_fmt, *input_fmt;
- struct msm_vidc_core *core;
- u32 count = 0, data_size = 0, pixel_count = 0, fps = 0;
- u32 frame_rate = 0, operating_rate = 0;
- core = inst->core;
- output_fmt = &inst->fmts[OUTPUT_PORT];
- input_fmt = &inst->fmts[INPUT_PORT];
- frame_rate = inst->capabilities[FRAME_RATE].value >> 16;
- operating_rate = inst->capabilities[OPERATING_RATE].value >> 16;
- fps = max(frame_rate, operating_rate);
- pixel_count = output_fmt->fmt.pix_mp.width *
- output_fmt->fmt.pix_mp.height;
- /*
- * try to enable ring buffer feature if
- * resolution >= 8k and fps >= 30fps and
- * resolution >= 4k and fps >= 120fps and
- * resolution >= 1080p and fps >= 480fps and
- * resolution >= 720p and fps >= 960fps
- */
- if ((pixel_count >= 7680 * 4320 && fps >= 30) &&
- (pixel_count >= 3840 * 2160 && fps >= 120) &&
- (pixel_count >= 1920 * 1080 && fps >= 480) &&
- (pixel_count >= 1280 * 720 && fps >= 960)) {
- data_size = input_fmt->fmt.pix_mp.plane_fmt[0].sizeimage;
- i_vpr_h(inst, "%s: calculate ring buffer count\n", __func__);
- rc = call_session_op(core, ring_buf_count, inst, data_size);
- if (rc) {
- i_vpr_e(inst, "%s: failed to calculate ring buf count\n",
- __func__);
- /* ignore error */
- rc = 0;
- inst->capabilities[cap_id].value = 0;
- }
- } else {
- i_vpr_h(inst,
- "%s: session %ux%u@%u fps does not support ring buffer\n",
- __func__, output_fmt->fmt.pix_mp.width,
- output_fmt->fmt.pix_mp.height, fps);
- inst->capabilities[cap_id].value = 0;
- }
- count = inst->capabilities[cap_id].value;
- i_vpr_h(inst, "%s: ring buffer count: %u\n", __func__, count);
- rc = venus_hfi_session_property(inst,
- HFI_PROP_ENC_RING_BIN_BUF,
- HFI_HOST_FLAGS_NONE,
- HFI_PORT_BITSTREAM,
- HFI_PAYLOAD_U32,
- &count,
- sizeof(u32));
- if (rc)
- return rc;
- return rc;
- }
- static struct msm_platform_inst_capability instance_cap_data_pineapple[] = {
- /* {cap, domain, codec,
- * min, max, step_or_mask, value,
- * v4l2_id,
- * hfi_id,
- * flags}
- */
- {FRAME_WIDTH, DEC, CODECS_ALL, 96, 8192, 1, 1920},
- {FRAME_WIDTH, DEC, VP9, 96, 4096, 1, 1920},
- {FRAME_WIDTH, ENC, CODECS_ALL, 128, 8192, 1, 1920},
- {FRAME_WIDTH, ENC, HEVC, 96, 8192, 1, 1920},
- {LOSSLESS_FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920},
- {LOSSLESS_FRAME_WIDTH, ENC, HEVC, 96, 4096, 1, 1920},
- {FRAME_HEIGHT, DEC, CODECS_ALL, 96, 8192, 1, 1080},
- {FRAME_HEIGHT, DEC, VP9, 96, 4096, 1, 1080},
- {FRAME_HEIGHT, ENC, CODECS_ALL, 128, 8192, 1, 1080},
- {FRAME_HEIGHT, ENC, HEVC, 96, 8192, 1, 1080},
- {LOSSLESS_FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080},
- {LOSSLESS_FRAME_HEIGHT, ENC, HEVC, 96, 4096, 1, 1080},
- {PIX_FMTS, ENC|DEC, H264,
- MSM_VIDC_FMT_NV12,
- MSM_VIDC_FMT_NV12C,
- MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C,
- MSM_VIDC_FMT_NV12C},
- {PIX_FMTS, ENC|DEC, HEVC|VP9,
- MSM_VIDC_FMT_NV12,
- MSM_VIDC_FMT_TP10C,
- MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C |
- MSM_VIDC_FMT_TP10C,
- MSM_VIDC_FMT_NV12C},
- {MIN_BUFFERS_INPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4,
- V4L2_CID_MIN_BUFFERS_FOR_OUTPUT,
- 0,
- CAP_FLAG_VOLATILE},
- {MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL,
- 0, 64, 1, 4,
- V4L2_CID_MIN_BUFFERS_FOR_CAPTURE,
- HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_VOLATILE},
- /* (8192 * 4320) / 256 */
- {MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240},
- {MBPF, ENC, HEVC, 36, 138240, 1, 138240},
- {MBPF, DEC, CODECS_ALL, 36, 138240, 1, 138240},
- /* (4096 * 2304) / 256 */
- {MBPF, DEC, VP9, 36, 36864, 1, 36864},
- /* (4096 * 2304) / 256 */
- {LOSSLESS_MBPF, ENC, H264|HEVC, 64, 36864, 1, 36864},
- /* Batch Mode Decode */
- /* TODO: update with new values based on updated voltage corner */
- {BATCH_MBPF, DEC, H264|HEVC|VP9, 64, 34816, 1, 34816},
- /* (4096 * 2304) / 256 */
- {BATCH_FPS, DEC, H264|HEVC|VP9, 1, 120, 1, 120},
- {FRAME_RATE, ENC, CODECS_ALL,
- (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16),
- 1, (DEFAULT_FPS << 16),
- 0,
- HFI_PROP_FRAME_RATE,
- CAP_FLAG_OUTPUT_PORT},
- {OPERATING_RATE, ENC, CODECS_ALL,
- (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16),
- 1, (DEFAULT_FPS << 16)},
- {INPUT_RATE, ENC|DEC, CODECS_ALL,
- (MINIMUM_FPS << 16), INT_MAX,
- 1, (DEFAULT_FPS << 16)},
- {TIMESTAMP_RATE, ENC|DEC, CODECS_ALL,
- (MINIMUM_FPS << 16), INT_MAX,
- 1, (DEFAULT_FPS << 16)},
- {SCALE_FACTOR, ENC, H264|HEVC, 1, 8, 1, 8},
- {MB_CYCLES_VSP, ENC, CODECS_ALL, 25, 25, 1, 25},
- {MB_CYCLES_VSP, DEC, CODECS_ALL, 25, 25, 1, 25},
- {MB_CYCLES_VSP, DEC, VP9, 60, 60, 1, 60},
- {MB_CYCLES_VPP, ENC, CODECS_ALL, 675, 675, 1, 675},
- {MB_CYCLES_VPP, DEC, CODECS_ALL, 200, 200, 1, 200},
- {MB_CYCLES_LP, ENC, CODECS_ALL, 320, 320, 1, 320},
- {MB_CYCLES_LP, DEC, CODECS_ALL, 200, 200, 1, 200},
- {MB_CYCLES_FW, ENC|DEC, CODECS_ALL, 489583, 489583, 1, 489583},
- {MB_CYCLES_FW_VPP, ENC, CODECS_ALL, 48405, 48405, 1, 48405},
- {MB_CYCLES_FW_VPP, DEC, CODECS_ALL, 66234, 66234, 1, 66234},
- {ENC_RING_BUFFER_COUNT, ENC, CODECS_ALL,
- 0, MAX_ENC_RING_BUF_COUNT, 1, 0},
- {CLIENT_ID, ENC|DEC, CODECS_ALL,
- INVALID_CLIENT_ID, INT_MAX, 1, INVALID_CLIENT_ID,
- 0},
- {HFLIP, ENC, CODECS_ALL,
- 0, 1, 1, 0,
- V4L2_CID_HFLIP,
- HFI_PROP_FLIP,
- CAP_FLAG_OUTPUT_PORT |
- CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
- {VFLIP, ENC, CODECS_ALL,
- 0, 1, 1, 0,
- V4L2_CID_VFLIP,
- HFI_PROP_FLIP,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {ROTATION, ENC, CODECS_ALL,
- 0, 270, 90, 0,
- V4L2_CID_ROTATE,
- HFI_PROP_ROTATION,
- CAP_FLAG_OUTPUT_PORT},
- {SUPER_FRAME, ENC, H264|HEVC,
- 0, 32, 1, 0,
- 0, 0,
- CAP_FLAG_NONE},
- {SLICE_DECODE, DEC, CODECS_ALL,
- 0, 0, 0, 0,
- V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE,
- 0},
- {HEADER_MODE, ENC, CODECS_ALL,
- V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
- V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
- BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) |
- BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME),
- V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
- V4L2_CID_MPEG_VIDEO_HEADER_MODE,
- HFI_PROP_SEQ_HEADER_MODE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {PREPEND_SPSPPS_TO_IDR, ENC, CODECS_ALL,
- 0, 1, 1, 0,
- V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR},
- {WITHOUT_STARTCODE, ENC, CODECS_ALL,
- 0, 1, 1, 0,
- V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE,
- HFI_PROP_NAL_LENGTH_FIELD,
- CAP_FLAG_OUTPUT_PORT},
- {NAL_LENGTH_FIELD, ENC, CODECS_ALL,
- V4L2_MPEG_VIDEO_HEVC_SIZE_0,
- V4L2_MPEG_VIDEO_HEVC_SIZE_4,
- BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_0) |
- BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_4),
- V4L2_MPEG_VIDEO_HEVC_SIZE_0,
- V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD,
- HFI_PROP_NAL_LENGTH_FIELD,
- CAP_FLAG_MENU | CAP_FLAG_OUTPUT_PORT},
- /* TODO: Firmware introduced enumeration type for this
- * with and without seq header.
- */
- {REQUEST_I_FRAME, ENC, H264|HEVC,
- 0, 0, 0, 0,
- V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME,
- HFI_PROP_REQUEST_SYNC_FRAME,
- CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
- /* Enc: Keeping CABAC and CAVLC as same bitrate.
- * Dec: there's no use of Bitrate cap
- */
- {BIT_RATE, ENC, H264|HEVC,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_BITRATE,
- HFI_PROP_TOTAL_BITRATE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {BITRATE_MODE, ENC, H264,
- V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
- V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
- BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
- BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR),
- V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
- V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
- HFI_PROP_RATE_CONTROL,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {BITRATE_MODE, ENC, HEVC,
- V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
- V4L2_MPEG_VIDEO_BITRATE_MODE_CQ,
- BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
- BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) |
- BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ),
- V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
- V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
- HFI_PROP_RATE_CONTROL,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {CABAC_MAX_BITRATE, ENC, H264|HEVC, 0,
- 160000000, 1, 160000000},
- {CAVLC_MAX_BITRATE, ENC, H264, 0,
- 220000000, 1, 220000000},
- {ALLINTRA_MAX_BITRATE, ENC, H264|HEVC, 0,
- 245000000, 1, 245000000},
- {LOWLATENCY_MAX_BITRATE, ENC, H264|HEVC, 0,
- 70000000, 1, 70000000},
- {LOSSLESS, ENC, HEVC,
- 0, 1, 1, 0,
- V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU},
- {FRAME_SKIP_MODE, ENC, H264|HEVC,
- V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
- V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT,
- BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) |
- BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT) |
- BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT),
- V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
- V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE,
- 0,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {FRAME_RC_ENABLE, ENC, H264|HEVC,
- 0, 1, 1, 1,
- V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE},
- {CONSTANT_QUALITY, ENC, HEVC,
- 1, MAX_CONSTANT_QUALITY, 1, 90,
- V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY,
- HFI_PROP_CONSTANT_QUALITY,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {GOP_SIZE, ENC, CODECS_ALL,
- 0, INT_MAX, 1, 2 * DEFAULT_FPS - 1,
- V4L2_CID_MPEG_VIDEO_GOP_SIZE,
- HFI_PROP_MAX_GOP_FRAMES,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {GOP_CLOSURE, ENC, H264|HEVC,
- 0, 1, 1, 1,
- V4L2_CID_MPEG_VIDEO_GOP_CLOSURE,
- 0},
- {B_FRAME, ENC, H264|HEVC,
- 0, 7, 1, 0,
- V4L2_CID_MPEG_VIDEO_B_FRAMES,
- HFI_PROP_MAX_B_FRAMES,
- CAP_FLAG_OUTPUT_PORT},
- {BLUR_TYPES, ENC, H264|HEVC,
- MSM_VIDC_BLUR_NONE, MSM_VIDC_BLUR_EXTERNAL,
- BIT(MSM_VIDC_BLUR_NONE) | BIT(MSM_VIDC_BLUR_EXTERNAL),
- MSM_VIDC_BLUR_NONE,
- 0,
- HFI_PROP_BLUR_TYPES,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {CSC, ENC, CODECS_ALL,
- 0, 1, 1, 0,
- 0,
- HFI_PROP_CSC},
- {LOWLATENCY_MODE, ENC, H264|HEVC,
- 0, 1, 1, 0,
- 0,
- 0,
- CAP_FLAG_NONE},
- {LOWLATENCY_MODE, DEC, H264|HEVC|VP9,
- 0, 1, 1, 0,
- 0,
- HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME,
- CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
- {LTR_COUNT, ENC, H264|HEVC,
- 0, MAX_LTR_FRAME_COUNT_5, 1, 0,
- V4L2_CID_MPEG_VIDEO_LTR_COUNT,
- HFI_PROP_LTR_COUNT,
- CAP_FLAG_OUTPUT_PORT},
- {USE_LTR, ENC, H264|HEVC,
- 0,
- ((1 << MAX_LTR_FRAME_COUNT_5) - 1),
- 0, 0,
- V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES,
- HFI_PROP_LTR_USE,
- CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
- {MARK_LTR, ENC, H264|HEVC,
- INVALID_DEFAULT_MARK_OR_USE_LTR,
- (MAX_LTR_FRAME_COUNT_5 - 1),
- 1, INVALID_DEFAULT_MARK_OR_USE_LTR,
- V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX,
- HFI_PROP_LTR_MARK,
- CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
- {BASELAYER_PRIORITY, ENC, H264,
- 0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0,
- V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID,
- HFI_PROP_BASELAYER_PRIORITYID,
- CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
- {AU_DELIMITER, ENC, H264|HEVC,
- 0, 1, 1, 0,
- V4L2_CID_MPEG_VIDEO_AU_DELIMITER,
- HFI_PROP_AUD,
- CAP_FLAG_OUTPUT_PORT},
- {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC,
- 0, 1, 1, 1,
- 0,
- HFI_PROP_CONTENT_ADAPTIVE_CODING,
- CAP_FLAG_OUTPUT_PORT},
- {REQUEST_PREPROCESS, ENC, H264|HEVC,
- MSM_VIDC_PREPROCESS_NONE,
- MSM_VIDC_PREPROCESS_TYPE0,
- BIT(MSM_VIDC_PREPROCESS_NONE) |
- BIT(MSM_VIDC_PREPROCESS_TYPE0),
- MSM_VIDC_PREPROCESS_NONE,
- 0, HFI_PROP_REQUEST_PREPROCESS,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {MIN_QUALITY, ENC, H264|HEVC,
- 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY,
- 0,
- HFI_PROP_MAINTAIN_MIN_QUALITY,
- CAP_FLAG_OUTPUT_PORT},
- {VBV_DELAY, ENC, H264|HEVC,
- 200, 300, 100, 300,
- V4L2_CID_MPEG_VIDEO_VBV_DELAY,
- HFI_PROP_VBV_DELAY,
- CAP_FLAG_OUTPUT_PORT},
- {PEAK_BITRATE, ENC, H264|HEVC,
- /* default peak bitrate is 10% larger than avg bitrate */
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_BITRATE_PEAK,
- HFI_PROP_TOTAL_PEAK_BITRATE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {MIN_FRAME_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
- V4L2_CID_MPEG_VIDEO_H264_MIN_QP,
- HFI_PROP_MIN_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT},
- {MIN_FRAME_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
- V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
- HFI_PROP_MIN_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT},
- {I_FRAME_MIN_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
- V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP},
- {I_FRAME_MIN_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
- V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP},
- {P_FRAME_MIN_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
- V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP},
- {P_FRAME_MIN_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
- V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP},
- {B_FRAME_MIN_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
- V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP},
- {B_FRAME_MIN_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
- V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP},
- {MAX_FRAME_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_H264_MAX_QP,
- HFI_PROP_MAX_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT},
- {MAX_FRAME_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP,
- HFI_PROP_MAX_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT},
- {I_FRAME_MAX_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP},
- {I_FRAME_MAX_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP},
- {P_FRAME_MAX_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP},
- {P_FRAME_MAX_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP},
- {B_FRAME_MAX_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP},
- {B_FRAME_MAX_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
- V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP},
- {I_FRAME_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
- V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP,
- HFI_PROP_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {I_FRAME_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
- V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP,
- HFI_PROP_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {P_FRAME_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
- V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP,
- HFI_PROP_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {P_FRAME_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
- V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP,
- HFI_PROP_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {B_FRAME_QP, ENC, HEVC,
- MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
- V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP,
- HFI_PROP_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {B_FRAME_QP, ENC, H264,
- MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
- V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP,
- HFI_PROP_QP_PACKED,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {LAYER_TYPE, ENC, HEVC,
- V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B,
- V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
- BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) |
- BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P),
- V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE,
- HFI_PROP_LAYER_ENCODING_TYPE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LAYER_TYPE, ENC, H264,
- V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B,
- V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
- BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) |
- BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P),
- V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
- V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE,
- HFI_PROP_LAYER_ENCODING_TYPE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LAYER_ENABLE, ENC, H264,
- 0, 1, 1, 0,
- V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING,
- HFI_PROP_LAYER_ENCODING_TYPE,
- CAP_FLAG_OUTPUT_PORT},
- {LAYER_ENABLE, ENC, HEVC,
- 0, 1, 1, 0,
- 0,
- 0,
- CAP_FLAG_OUTPUT_PORT},
- {ENH_LAYER_COUNT, ENC, HEVC,
- 0, 5, 1, 0,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER,
- HFI_PROP_LAYER_COUNT,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {ENH_LAYER_COUNT, ENC, H264,
- 0, 5, 1, 0,
- V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER,
- HFI_PROP_LAYER_COUNT,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L0_BR, ENC, H264,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR,
- HFI_PROP_BITRATE_LAYER1,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L0_BR, ENC, HEVC,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR,
- HFI_PROP_BITRATE_LAYER1,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L1_BR, ENC, H264,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR,
- HFI_PROP_BITRATE_LAYER2,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L1_BR, ENC, HEVC,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR,
- HFI_PROP_BITRATE_LAYER2,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L2_BR, ENC, H264,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR,
- HFI_PROP_BITRATE_LAYER3,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L2_BR, ENC, HEVC,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR,
- HFI_PROP_BITRATE_LAYER3,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L3_BR, ENC, H264,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR,
- HFI_PROP_BITRATE_LAYER4,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L3_BR, ENC, HEVC,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR,
- HFI_PROP_BITRATE_LAYER4,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L4_BR, ENC, H264,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR,
- HFI_PROP_BITRATE_LAYER5,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L4_BR, ENC, HEVC,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR,
- HFI_PROP_BITRATE_LAYER5,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L5_BR, ENC, H264,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR,
- HFI_PROP_BITRATE_LAYER6,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {L5_BR, ENC, HEVC,
- 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR,
- HFI_PROP_BITRATE_LAYER6,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
- CAP_FLAG_DYNAMIC_ALLOWED},
- {ENTROPY_MODE, ENC, H264,
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
- BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) |
- BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC),
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
- V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE,
- HFI_PROP_CABAC_SESSION,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {ENTROPY_MODE, DEC, H264|HEVC|VP9,
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
- BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) |
- BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC),
- V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
- 0,
- HFI_PROP_CABAC_SESSION},
- {PROFILE, ENC|DEC, H264,
- V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
- V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH,
- BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
- BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) |
- BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) |
- BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
- BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH),
- V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
- V4L2_CID_MPEG_VIDEO_H264_PROFILE,
- HFI_PROP_PROFILE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {PROFILE, ENC|DEC, HEVC,
- V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
- V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE,
- BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
- BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
- BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10) |
- BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE),
- V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
- V4L2_CID_MPEG_VIDEO_HEVC_PROFILE,
- HFI_PROP_PROFILE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {PROFILE, DEC, VP9,
- V4L2_MPEG_VIDEO_VP9_PROFILE_0,
- V4L2_MPEG_VIDEO_VP9_PROFILE_2,
- BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) |
- BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2),
- V4L2_MPEG_VIDEO_VP9_PROFILE_0,
- V4L2_CID_MPEG_VIDEO_VP9_PROFILE,
- HFI_PROP_PROFILE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LEVEL, ENC, H264,
- V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
- V4L2_MPEG_VIDEO_H264_LEVEL_6_0,
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0),
- V4L2_MPEG_VIDEO_H264_LEVEL_5_0,
- V4L2_CID_MPEG_VIDEO_H264_LEVEL,
- HFI_PROP_LEVEL,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LEVEL, ENC, HEVC,
- V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
- V4L2_MPEG_VIDEO_HEVC_LEVEL_6,
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6),
- V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
- V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
- HFI_PROP_LEVEL,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LEVEL, DEC, H264,
- V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
- V4L2_MPEG_VIDEO_H264_LEVEL_6_2,
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1) |
- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_2),
- V4L2_MPEG_VIDEO_H264_LEVEL_6_1,
- V4L2_CID_MPEG_VIDEO_H264_LEVEL,
- HFI_PROP_LEVEL,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LEVEL, DEC, HEVC,
- V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
- V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2,
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1)|
- BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2),
- V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1,
- V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
- HFI_PROP_LEVEL,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LEVEL, DEC, VP9,
- V4L2_MPEG_VIDEO_VP9_LEVEL_1_0,
- V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2) |
- BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0),
- V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
- V4L2_CID_MPEG_VIDEO_VP9_LEVEL,
- HFI_PROP_LEVEL,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {HEVC_TIER, ENC|DEC, HEVC,
- V4L2_MPEG_VIDEO_HEVC_TIER_MAIN,
- V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
- BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) |
- BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH),
- V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
- V4L2_CID_MPEG_VIDEO_HEVC_TIER,
- HFI_PROP_TIER,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LF_MODE, ENC, H264,
- V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
- DB_H264_DISABLE_SLICE_BOUNDARY,
- BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED) |
- BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED) |
- BIT(DB_H264_DISABLE_SLICE_BOUNDARY),
- V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
- V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE,
- HFI_PROP_DEBLOCKING_MODE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LF_MODE, ENC, HEVC,
- V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED,
- DB_HEVC_DISABLE_SLICE_BOUNDARY,
- BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED) |
- BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED) |
- BIT(DB_HEVC_DISABLE_SLICE_BOUNDARY),
- V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED,
- V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE,
- HFI_PROP_DEBLOCKING_MODE,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {LF_ALPHA, ENC, H264,
- -6, 6, 1, 0,
- V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA},
- {LF_ALPHA, ENC, HEVC,
- -6, 6, 1, 0,
- V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2},
- {LF_BETA, ENC, H264,
- -6, 6, 1, 0,
- V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA},
- {LF_BETA, ENC, HEVC,
- -6, 6, 1, 0,
- V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2},
- {SLICE_MODE, ENC, H264|HEVC,
- V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE,
- V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES,
- BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) |
- BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB) |
- BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES),
- V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE,
- V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE,
- 0,
- CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
- {SLICE_MAX_BYTES, ENC, H264|HEVC,
- MIN_SLICE_BYTE_SIZE, MAX_SLICE_BYTE_SIZE,
- 1, MIN_SLICE_BYTE_SIZE,
- V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES,
- HFI_PROP_MULTI_SLICE_BYTES_COUNT,
- CAP_FLAG_OUTPUT_PORT},
- {SLICE_MAX_MB, ENC, H264|HEVC,
- 1, MAX_SLICE_MB_SIZE, 1, 1,
- V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB,
- HFI_PROP_MULTI_SLICE_MB_COUNT,
- CAP_FLAG_OUTPUT_PORT},
- {MB_RC, ENC, H264|HEVC,
- 0, 1, 1, 1,
- V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE,
- 0,
- CAP_FLAG_OUTPUT_PORT},
- {TRANSFORM_8X8, ENC, H264,
- 0, 1, 1, 1,
- V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM,
- HFI_PROP_8X8_TRANSFORM,
- CAP_FLAG_OUTPUT_PORT},
- {CHROMA_QP_INDEX_OFFSET, ENC, HEVC,
- MIN_CHROMA_QP_OFFSET, MAX_CHROMA_QP_OFFSET,
- 1, MAX_CHROMA_QP_OFFSET,
- V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET,
- HFI_PROP_CHROMA_QP_OFFSET,
- CAP_FLAG_OUTPUT_PORT},
- {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9,
- 0, 1, 1, 0,
- V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE,
- HFI_PROP_DECODE_ORDER_OUTPUT,
- CAP_FLAG_INPUT_PORT},
- {DISPLAY_DELAY, DEC, H264|HEVC|VP9,
- 0, 1, 1, 0,
- V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY,
- HFI_PROP_DECODE_ORDER_OUTPUT,
- CAP_FLAG_INPUT_PORT},
- {OUTPUT_ORDER, DEC, H264|HEVC|VP9,
- 0, 1, 1, 0,
- 0,
- HFI_PROP_DECODE_ORDER_OUTPUT,
- CAP_FLAG_INPUT_PORT},
- {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
- DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT,
- 1, DEFAULT_MAX_HOST_BUF_COUNT,
- 0,
- HFI_PROP_BUFFER_HOST_MAX_COUNT,
- CAP_FLAG_INPUT_PORT},
- {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
- DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT,
- 1, DEFAULT_MAX_HOST_BUF_COUNT,
- 0,
- HFI_PROP_BUFFER_HOST_MAX_COUNT,
- CAP_FLAG_OUTPUT_PORT},
- {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
- DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
- V4L2_CID_MPEG_VIDEO_MUTE_YUV,
- HFI_PROP_CONCEAL_COLOR_8BIT,
- CAP_FLAG_INPUT_PORT},
- {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1,
- DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
- V4L2_CID_MPEG_VIDEO_MUTE_YUV,
- HFI_PROP_CONCEAL_COLOR_10BIT,
- CAP_FLAG_INPUT_PORT},
- {STAGE, DEC|ENC, CODECS_ALL,
- MSM_VIDC_STAGE_1,
- MSM_VIDC_STAGE_2, 1,
- MSM_VIDC_STAGE_2,
- 0,
- HFI_PROP_STAGE},
- {PIPE, DEC|ENC, CODECS_ALL,
- MSM_VIDC_PIPE_1,
- MSM_VIDC_PIPE_4, 1,
- MSM_VIDC_PIPE_4,
- 0,
- HFI_PROP_PIPE},
- {POC, DEC, H264, 0, 2, 1, 1,
- 0,
- HFI_PROP_PIC_ORDER_CNT_TYPE},
- {QUALITY_MODE, ENC, CODECS_ALL,
- MSM_VIDC_MAX_QUALITY_MODE,
- MSM_VIDC_POWER_SAVE_MODE, 1,
- MSM_VIDC_POWER_SAVE_MODE},
- {CODED_FRAMES, DEC, H264|HEVC,
- CODED_FRAMES_PROGRESSIVE, CODED_FRAMES_INTERLACE,
- 1, CODED_FRAMES_PROGRESSIVE,
- 0,
- HFI_PROP_CODED_FRAMES},
- {BIT_DEPTH, DEC, CODECS_ALL, BIT_DEPTH_8, BIT_DEPTH_10, 1, BIT_DEPTH_8,
- 0,
- HFI_PROP_LUMA_CHROMA_BIT_DEPTH},
- {CODEC_CONFIG, DEC, H264|HEVC, 0, 1, 1, 0,
- 0, 0,
- CAP_FLAG_DYNAMIC_ALLOWED},
- {BITSTREAM_SIZE_OVERWRITE, DEC, CODECS_ALL, 0, INT_MAX, 1, 0,
- 0},
- {THUMBNAIL_MODE, DEC, CODECS_ALL,
- 0, 1, 1, 0,
- 0,
- HFI_PROP_THUMBNAIL_MODE,
- CAP_FLAG_INPUT_PORT},
- {DEFAULT_HEADER, DEC, CODECS_ALL,
- 0, 1, 1, 0,
- 0,
- HFI_PROP_DEC_DEFAULT_HEADER},
- {RAP_FRAME, DEC, CODECS_ALL,
- 0, 1, 1, 1,
- 0,
- HFI_PROP_DEC_START_FROM_RAP_FRAME,
- CAP_FLAG_INPUT_PORT},
- {SEQ_CHANGE_AT_SYNC_FRAME, DEC, CODECS_ALL,
- 0, 1, 1, 1,
- 0,
- HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME,
- CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
- {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL,
- 1, 1, 1, 1},
- {ALL_INTRA, ENC, H264|HEVC,
- 0, 1, 1, 0,
- 0,
- 0,
- CAP_FLAG_OUTPUT_PORT},
- {COMPLEXITY, ENC, H264|HEVC,
- 0, 100,
- 1, DEFAULT_COMPLEXITY,
- 0},
- };
- static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_pineapple[] = {
- /* {cap, domain, codec,
- * parents,
- * children,
- * adjust, set}
- */
- {PIX_FMTS, ENC, HEVC,
- {PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP,
- B_FRAME_QP, MIN_QUALITY, BLUR_TYPES, LTR_COUNT}},
- {PIX_FMTS, DEC, HEVC,
- {PROFILE}},
- {FRAME_RATE, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_q16},
- {ENC_RING_BUFFER_COUNT, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_ring_buffer_count_pineapple},
- {HFLIP, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_flip},
- {VFLIP, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_flip},
- {ROTATION, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_rotation},
- {SUPER_FRAME, ENC, H264|HEVC,
- {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT},
- NULL,
- NULL},
- {HEADER_MODE, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_header_mode},
- {WITHOUT_STARTCODE, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_nal_length},
- {REQUEST_I_FRAME, ENC, H264|HEVC,
- {0},
- NULL,
- msm_vidc_set_req_sync_frame},
- {BIT_RATE, ENC, H264,
- {PEAK_BITRATE, L0_BR},
- msm_vidc_adjust_bitrate,
- msm_vidc_set_bitrate},
- {BIT_RATE, ENC, HEVC,
- {PEAK_BITRATE, L0_BR},
- msm_vidc_adjust_bitrate,
- msm_vidc_set_bitrate},
- {BITRATE_MODE, ENC, H264,
- {LTR_COUNT, I_FRAME_QP, P_FRAME_QP,
- B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE,
- MIN_QUALITY, VBV_DELAY,
- PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING,
- BLUR_TYPES, LOWLATENCY_MODE},
- msm_vidc_adjust_bitrate_mode,
- msm_vidc_set_u32_enum},
- {BITRATE_MODE, ENC, HEVC,
- {LTR_COUNT, I_FRAME_QP, P_FRAME_QP,
- B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT,
- BIT_RATE, MIN_QUALITY, VBV_DELAY,
- PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING,
- BLUR_TYPES, LOWLATENCY_MODE},
- msm_vidc_adjust_bitrate_mode,
- msm_vidc_set_u32_enum},
- {CONSTANT_QUALITY, ENC, HEVC,
- {0},
- NULL,
- msm_vidc_set_constant_quality},
- {GOP_SIZE, ENC, CODECS_ALL,
- {ALL_INTRA},
- msm_vidc_adjust_gop_size,
- msm_vidc_set_gop_size},
- {B_FRAME, ENC, H264|HEVC,
- {ALL_INTRA},
- msm_vidc_adjust_b_frame,
- msm_vidc_set_u32},
- {BLUR_TYPES, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_blur_type,
- msm_vidc_set_u32_enum},
- {LOWLATENCY_MODE, ENC, H264 | HEVC,
- {STAGE, BIT_RATE},
- msm_vidc_adjust_enc_lowlatency_mode,
- NULL},
- {LOWLATENCY_MODE, DEC, H264|HEVC|VP9,
- {STAGE},
- msm_vidc_adjust_dec_lowlatency_mode,
- NULL},
- {LTR_COUNT, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_ltr_count,
- msm_vidc_set_u32},
- {USE_LTR, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_use_ltr,
- msm_vidc_set_use_and_mark_ltr},
- {MARK_LTR, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_mark_ltr,
- msm_vidc_set_use_and_mark_ltr},
- {AU_DELIMITER, ENC, H264|HEVC,
- {0},
- NULL,
- msm_vidc_set_u32},
- {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC,
- {REQUEST_PREPROCESS},
- msm_vidc_adjust_brs,
- msm_vidc_set_vbr_related_properties},
- {REQUEST_PREPROCESS, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_preprocess,
- msm_vidc_set_preprocess},
- {MIN_QUALITY, ENC, H264,
- {BLUR_TYPES},
- msm_vidc_adjust_min_quality,
- msm_vidc_set_u32},
- {MIN_QUALITY, ENC, HEVC,
- {BLUR_TYPES},
- msm_vidc_adjust_min_quality,
- msm_vidc_set_u32},
- {VBV_DELAY, ENC, H264|HEVC,
- {0},
- NULL,
- msm_vidc_set_cbr_related_properties},
- {PEAK_BITRATE, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_peak_bitrate,
- msm_vidc_set_cbr_related_properties},
- {MIN_FRAME_QP, ENC, H264,
- {0},
- NULL,
- msm_vidc_set_min_qp},
- {MIN_FRAME_QP, ENC, HEVC,
- {0},
- msm_vidc_adjust_hevc_min_qp,
- msm_vidc_set_min_qp},
- {MAX_FRAME_QP, ENC, H264,
- {0},
- NULL,
- msm_vidc_set_max_qp},
- {MAX_FRAME_QP, ENC, HEVC,
- {0},
- msm_vidc_adjust_hevc_max_qp,
- msm_vidc_set_max_qp},
- {I_FRAME_QP, ENC, HEVC,
- {0},
- msm_vidc_adjust_hevc_i_frame_qp,
- msm_vidc_set_frame_qp},
- {I_FRAME_QP, ENC, H264,
- {0},
- NULL,
- msm_vidc_set_frame_qp},
- {P_FRAME_QP, ENC, HEVC,
- {0},
- msm_vidc_adjust_hevc_p_frame_qp,
- msm_vidc_set_frame_qp},
- {P_FRAME_QP, ENC, H264,
- {0},
- NULL,
- msm_vidc_set_frame_qp},
- {B_FRAME_QP, ENC, HEVC,
- {0},
- msm_vidc_adjust_hevc_b_frame_qp,
- msm_vidc_set_frame_qp},
- {B_FRAME_QP, ENC, H264,
- {0},
- NULL,
- msm_vidc_set_frame_qp},
- {LAYER_TYPE, ENC, H264|HEVC,
- {CONTENT_ADAPTIVE_CODING, LTR_COUNT}},
- {LAYER_ENABLE, ENC, H264|HEVC,
- {CONTENT_ADAPTIVE_CODING}},
- {ENH_LAYER_COUNT, ENC, H264|HEVC,
- {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY, LTR_COUNT},
- msm_vidc_adjust_layer_count,
- msm_vidc_set_layer_count_and_type},
- {L0_BR, ENC, H264|HEVC,
- {L1_BR},
- msm_vidc_adjust_layer_bitrate,
- msm_vidc_set_layer_bitrate},
- {L1_BR, ENC, H264|HEVC,
- {L2_BR},
- msm_vidc_adjust_layer_bitrate,
- msm_vidc_set_layer_bitrate},
- {L2_BR, ENC, H264|HEVC,
- {L3_BR},
- msm_vidc_adjust_layer_bitrate,
- msm_vidc_set_layer_bitrate},
- {L3_BR, ENC, H264|HEVC,
- {L4_BR},
- msm_vidc_adjust_layer_bitrate,
- msm_vidc_set_layer_bitrate},
- {L4_BR, ENC, H264|HEVC,
- {L5_BR},
- msm_vidc_adjust_layer_bitrate,
- msm_vidc_set_layer_bitrate},
- {L5_BR, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_layer_bitrate,
- msm_vidc_set_layer_bitrate},
- {ENTROPY_MODE, ENC, H264,
- {BIT_RATE},
- msm_vidc_adjust_entropy_mode,
- msm_vidc_set_u32},
- {PROFILE, ENC, H264,
- {ENTROPY_MODE, TRANSFORM_8X8},
- NULL,
- msm_vidc_set_u32_enum},
- {PROFILE, DEC, H264,
- {ENTROPY_MODE},
- NULL,
- msm_vidc_set_u32_enum},
- {PROFILE, ENC|DEC, HEVC,
- {0},
- msm_vidc_adjust_profile,
- msm_vidc_set_u32_enum},
- {PROFILE, DEC, VP9,
- {0},
- NULL,
- msm_vidc_set_u32_enum},
- {LEVEL, DEC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_u32_enum},
- {LEVEL, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_level},
- {HEVC_TIER, ENC|DEC, HEVC,
- {0},
- NULL,
- msm_vidc_set_u32_enum},
- {LF_MODE, ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_deblock_mode},
- {SLICE_MODE, ENC, H264|HEVC,
- {STAGE, DELIVERY_MODE},
- msm_vidc_adjust_slice_count,
- msm_vidc_set_slice_count},
- {TRANSFORM_8X8, ENC, H264,
- {0},
- msm_vidc_adjust_transform_8x8,
- msm_vidc_set_u32},
- {CHROMA_QP_INDEX_OFFSET, ENC, HEVC,
- {0},
- msm_vidc_adjust_chroma_qp_index_offset,
- msm_vidc_set_chroma_qp_index_offset},
- {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9,
- {OUTPUT_ORDER},
- NULL,
- NULL},
- {DISPLAY_DELAY, DEC, H264|HEVC|VP9,
- {OUTPUT_ORDER},
- NULL,
- NULL},
- {OUTPUT_ORDER, DEC, H264|HEVC|VP9,
- {0},
- msm_vidc_adjust_output_order,
- msm_vidc_set_u32},
- {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
- {0},
- msm_vidc_adjust_input_buf_host_max_count,
- msm_vidc_set_u32},
- {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_input_buf_host_max_count,
- msm_vidc_set_u32},
- {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
- {0},
- msm_vidc_adjust_output_buf_host_max_count,
- msm_vidc_set_u32},
- {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC,
- {0},
- msm_vidc_adjust_output_buf_host_max_count,
- msm_vidc_set_u32},
- {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_u32_packed},
- {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_u32_packed},
- {STAGE, ENC | DEC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_stage},
- {STAGE, ENC, H264|HEVC,
- {0},
- NULL,
- msm_vidc_set_stage},
- {STAGE, DEC, H264|HEVC|VP9,
- {0},
- NULL,
- msm_vidc_set_stage},
- {PIPE, DEC|ENC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_pipe},
- {THUMBNAIL_MODE, DEC, CODECS_ALL,
- {OUTPUT_ORDER},
- NULL,
- msm_vidc_set_u32},
- {RAP_FRAME, DEC, CODECS_ALL,
- {0},
- NULL,
- msm_vidc_set_u32},
- {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL,
- {0},
- NULL,
- NULL},
- {ALL_INTRA, ENC, H264|HEVC,
- {LTR_COUNT, SLICE_MODE, BIT_RATE},
- msm_vidc_adjust_all_intra,
- NULL},
- };
- /* Default UBWC config for LPDDR5 */
- static struct msm_vidc_ubwc_config_data ubwc_config_pineapple[] = {
- UBWC_CONFIG(8, 32, 16, 0, 1, 1, 1),
- };
- static struct msm_vidc_format_capability format_data_pineapple = {
- .codec_info = codec_data_pineapple,
- .codec_info_size = ARRAY_SIZE(codec_data_pineapple),
- .color_format_info = color_format_data_pineapple,
- .color_format_info_size = ARRAY_SIZE(color_format_data_pineapple),
- .color_prim_info = color_primaries_data_pineapple,
- .color_prim_info_size = ARRAY_SIZE(color_primaries_data_pineapple),
- .transfer_char_info = transfer_char_data_pineapple,
- .transfer_char_info_size = ARRAY_SIZE(transfer_char_data_pineapple),
- .matrix_coeff_info = matrix_coeff_data_pineapple,
- .matrix_coeff_info_size = ARRAY_SIZE(matrix_coeff_data_pineapple),
- };
- static const struct msm_vidc_platform_data pineapple_data = {
- .core_data = core_data_pineapple,
- .core_data_size = ARRAY_SIZE(core_data_pineapple),
- .inst_cap_data = instance_cap_data_pineapple,
- .inst_cap_data_size = ARRAY_SIZE(instance_cap_data_pineapple),
- .inst_cap_dependency_data = instance_cap_dependency_data_pineapple,
- .inst_cap_dependency_data_size = ARRAY_SIZE(instance_cap_dependency_data_pineapple),
- .csc_data.vpe_csc_custom_bias_coeff = vpe_csc_custom_bias_coeff,
- .csc_data.vpe_csc_custom_matrix_coeff = vpe_csc_custom_matrix_coeff,
- .csc_data.vpe_csc_custom_limit_coeff = vpe_csc_custom_limit_coeff,
- .ubwc_config = ubwc_config_pineapple,
- .format_data = &format_data_pineapple,
- };
- int msm_vidc_pineapple_check_ddr_type(void)
- {
- u32 ddr_type;
- ddr_type = of_fdt_get_ddrtype();
- if (ddr_type != DDR_TYPE_LPDDR5 &&
- ddr_type != DDR_TYPE_LPDDR5X) {
- d_vpr_e("%s: wrong ddr type %d\n", __func__, ddr_type);
- return -EINVAL;
- } else {
- d_vpr_h("%s: ddr type %d\n", __func__, ddr_type);
- }
- return 0;
- }
- static int msm_vidc_init_data(struct msm_vidc_core *core)
- {
- int rc = 0;
- d_vpr_h("%s: initialize pineapple data\n", __func__);
- core->platform->data = pineapple_data;
- rc = msm_vidc_pineapple_check_ddr_type();
- if (rc)
- return rc;
- return rc;
- }
- int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core)
- {
- int rc = 0;
- rc = msm_vidc_init_data(core);
- if (rc)
- return rc;
- return 0;
- }
|