主题中讨论的其他器件:TVP5146
大家好
我正在尝试从 AM5728-EVM 上的 TVP5146模块中的 TVP5146模拟视频解码器捕获电影、并使用"ti-processor-sdk-linux-am57xx-evm-06.03.00.106" SDK。 我使用'AM5728VIP 和 V4L2接口以及 TVP5146模拟视频解码器问题'线程、现在我可以在'dmesg'输出上看到这些消息。
[3.547762] tvp514x 4-005D:tvp514x 4-005D 已注册解码器驱动程序!! (笑声) [71.493672] vin3a:port a:using subdev tvp514x 4-005D for capture [71.556900] YU3:matched fourcc: 1 [7556908] vincc: vincc:fouryV:code:2006 idx:1 [7556908] vinc:matched vincc:vincc:vincc:vincc:2006 vincc:1 [75515:viny2:viny2006 viny:vidx:2006 vidx:vinc:2006 vinc:v64x:vinc:vinc 3... [71.569860] vin3a-0:登记为 video1的设备 [71.591215] vin3a-0:登记为 video2的设备 [71.605026] vin3a-0:登记为 video3 的设备[71.621337] vin3a-0:登记为 video4 的设备... [80.214845] vin3a:subdev 默认 MBUS_fmt 0000不匹配。 [80.267339] vin3a:init_port set_fmt 在 subdev 中失败:(-22) [80.267346] vin3a:vIP_init_port:g_MBUS_Fmt subdev MBUS_code:2006 fourcc:UYVY 大小:0x0 [80.267396] vin3a :gvive_port_v3a:g_v0.128_v248b_size_ve:ve0:v248b@v64x248b@v64x248b@vina.v64_v0@vine@v64x248b@v64x248b@vina.v0@v64x248v@v64x85b@vina.v@v0@vina.v0@v0@v64x248v0@v64x248v@vina.vina.v0@ 流实例0x0000ec495000 [ 80.303069] vin3a:CALC_FORMAT_SIZE:FourCC:UYVY 大小:128x128 BPL:256 img_size:32768 [ 80.303078] vin3a 0:init_stream four3a:UYVY 大小:128x128 BPL:256_SIZE:32768 :0x000080248v0_v0_vinc :vinc:0x802483208v0_v0_v0_v3.3a init_stream vpdma 数据类型:0x27 [80.329246] vin3a-0:vIP_init_stream:流实例0x000000494000 [80.329314] vin3a:init_format_size:inc:128x128 bPL:256 img_size:32768 [ 80.329323] vin3a:vincc:0x0000803a-v64_vin流 大小:0x00003236326_v3vinc:v0_v3v3v3.3a:vini20_v3.3a v3.3a vini20_v3.3a:v3.3bv3.3a vini20_v3.3bv3.3bv3.3bv3.3bv3.3bv3.3bv3.3bv3.3bv3.3bv3.3bv3.3bv3.3a :v3.3bv3.3bv3.3bv3.3bv3.3bv vip_release [80.411004] vin3a-0:vip_release_stream:stream instance 0x186bfccdec495000 [80.412996] vin3a-0:vip_release [80.413015] vin3a-0:vip_release_stream:vip_dec4979 [80.432817] vive_release_vive_vive_release_vive_vive_vive_release_vive_vive_vive_vive_vive_vive-04840806400000 :vip:vive_vive_v648064806400780647040 vip:vip:v648064806400000 vip:vip:vip vin648064806480648064806400000 vip:vip:vip:vip vinv
当我运行 Yavta 命令'yavta -C60 -fUYVY -Fvout_720x576_yuiv.yUV -s720x576 /dev/video1时、系统无法设置格式:
器件/dev/video1已打开。 器件`platform:vip2:vin3a:stream0'上的`vip'是视频输出(不含 mplanes)器件。 无法设置格式:无效参数(22)。
执行 yavta 命令后的'dmesg'输出如下所示:
[1460.287542] vin3a-0:vIP_open [1460.312409] vin3a:subdev 默认 MBUS_Fmt 0000不匹配。 [1460.341420] vin3a:init_port set_fmt 在 subdev 中失败:(-22) [1460.341425] vin3a:vIP_init_port:g_MBUS_Fmt subdev MBUS_code:2006 fourcc:UYVY 大小:0x0 [1460.341471] vin3a:gv64_format_v248_v_simp: vinv83a:0x248_v_sime_ve64_ve= 0x83a:vinve64_v0_vinve0 :vinve248_v_sim_ve= 0x83a:ve64_v0_ve64_ve64_ve= 0x83a:vinvinve248_v_sim_ve= 0x248_v_sim_ve= 0x83a:ve= 0x83a: 流实例0x0000ec494000 [ 1460.424091] vin3a-0:s_fmt 输入 fourcc:UYVY 大小:720x576 BPL:0 img_size:0 [ 1460.424099] vinaca-0:try fmt four3a:UYVY 大小:720x576 [ 1460.424120] vinc:vinc 0 :vinc 0:vinc 0:vintry_v04824168:vinc:vinc:vinc s_fvinmt fourcc:UYVY 大小:128x128 bpl:256 img_size:32768 [ 1460.424173] vin3a-0:s_fpix_TO_MBUS MBUS_code:2006大小:0x0 [ 1460.453179] vinmta-0:set_fmt 在 subdev 中失败[ 0.45364_vip vinsp_release :0x64_bvip vin流:0x36406246vip vin64] bvin64_bvidec1 vin0[14624364179] vinvin64_vinvinvip vin64_port_release:0x4000 vinvinvidc3640624364bvip vin
我调试了代码、我发现当调用'tvp514x_get_pad_format'时、'filed'、'code'、'colorspace'、'width' 返回格式的"高度"为零。 此外、"tvp514x_set_pad_format"始终返回"EINVAL"。 有人可以帮助我调试这两个函数、并找出系统无法设置格式的原因吗?
我在 tvp514x.c 文件的'tvp514x_get_pad_format'和'tvp514x_set_pad_format'中添加了一些调试消息、如下所示:
静态 int tvp514x_set_pad_format (struct v4l2_subdev * sd、 struct v4l2_subdev_pad_config * cfg、 struct v4l2_subdev_format * fmt) { struct tvp514x_decoder *解码器= TO_SD (SD);v4l2_subdev_format * fmt! !"调试"%2_und_und_unde+! "、"%2_undi!"、"%2_unde+!!"、"%2_unde_det_unde+!!" FMT->format.field、V4L2_field_interlaved); v4l2_info (SD、"ALI-Debug %d、%d!!!\n"、 FMT->format.code、media_BUS_FMT_UYVY8_2X8); v4l2_info (SD、"Ai-Debug %d、%d!!\n"、 FMT->format.colorspace、V4L2_colorspace_SMPTE170M); v4l2_info (SD、"ALI-Debug %ld、%ld!!\n"、 fmt->format.width、tvp514x_std_list[decers->curry_std].width); v4l2_info (SD、"ALI-Debug %ld、%ld!!!\n"、 fmt->format.height、tvp514x_std_list[解码器->curry_std].height); if (fmt->format.field!= v4L2_field_interlaved || fmt->format.code != media_BUS_FMT_UYVY8_2X8|| fmt->format.colorspace!= V4L2_colorspace_SMPTE170M || fmt->format.width != tvp514x_std_list[decers->curry_std].width || fmt->format.height!= tvp514x_std_list[decer->curry_std].height) return -eINVAL; v4l2_info (SD、"Ali- Debug end %s!!!!\n"、__func__); decoder -> format = fmt->info ;return 0 ;}v4t_unstab_de2 = vt_unt + tude+ v32_unt + tude+ t_tradere+ tv32_t_t_tude+ t_t_tude+ t_tv32+ t_tude+ v4l2_info (SD、"ALI-Debug %d!!\n"、(= V4L2_SUBDEV_FORMAT_ACTIVE)); v4l2_info (SD、 "ALI-Debug %d、%d!!!\n"、decoder -> format.field、V4L2_field_interlaved); v4l2_info (SD、 "ALI-Debug %d、%d!!!\n"、decoder -> format.code、media_BUS_FMT_UYVY8_2X8); v4l2_info (SD、 "ALI-Debug %d、%d!!!\n"、解码器->format.colorspace、V4L2_colorspace_SMPTE170M); v4l2_info (SD、 "ALI-Debug %ld、%ld!!!\n"、解码器->format.width、tvp514x_std_list[解码器->curry_std].width); v4l2_info (SD、 "ALI-Debug %ld、%ld!!!\n"、DECODER->format.height、tvp514x_std_list[DECOer->curry_std].height); if (= V4L2_SUBDEV_FORMAT_ACTIVE){ format->format = decoder -> format 0; }format->v4L2_codest.code = v2_del_format=v_format>V4std_format->v40std_format->Vtv40std_format->v4std_format->v_format>v40st.64_format=v_format->v_format->v_format>v40std_format->v_format=v_format=v40_format=v_format=v_format=v40_format>v40_format->v40_format>v40_format>v_format=v40_format<= v40_v_ 返回0; }
这里是 dmesg 的输出
root@am57xx-EVM:~# dmesg | grep 'Ali-Debug' [80.208283] tvp514x 4-005D:Ali-Debug start tvp514x_get_pad_format! [80.220990] tvp514x 4-005D:ALI-Debug 1! [80.251948] tvp514x 4-005D:Ali-Debug 0、4!! [80.264053] tvp514x 4-005D:Ali-Debug 0、8198!! [80.272094] tvp514x 4-005D:ALI-Debug 0、1!! [80.300798] tvp514x 4-005D:ALI-Debug 0、0!! [80.336792] tvp514x 4-005D:ALI-Debug 0、0!! [80.405515] tvp514x 4-005D:ALI-Debug 启动 tvp514x_set_pad_format! [80.447949] tvp514x 4-005D:Ali-Debug 0、4!! [80.455601] tvp514x 4-005D:Ali-Debug 8198、8198!! [80.504178] tvp514x 4-005D:ALI-Debug 0、1!! [80.520343] tvp514x 4-005D:ALI-Debug 0、0!! [80.551447] tvp514x 4-005D:ALI-Debug 0、0!! [129.879144] tvp514x 4-005D:ALI-Debug 启动 tvp514x_get_pad_format!! [129.887134] tvp514x 4-005D:ALI-Debug 1!! [129.891249] tvp514x 4-005D:ALI-Debug 0、4!! [129.896001] tvp514x 4-005D:Ali-Debug 0、8198!! [129.900639] tvp514x 4-005D:ALI-Debug 0、1!! [129.905451] tvp514x 4-005D:ALI-Debug 0、0!! [129.909863] tvp514x 4-005D:ALI-Debug 0、0!! [129.914737] tvp514x 4-005D:ALI-Debug 启动 tvp514x_set_pad_format!! [129.921226] tvp514x 4-005D:ALI-Debug 0、4!! [129.928232] tvp514x 4-005D:Ali-Debug 8198、8198!! [129.934122] tvp514x 4-005D:Ali-Debug 0、1!! [129.938617] tvp514x 4-005D:ALI-Debug 0、0!! [129.943025] tvp514x 4-005D:ALI-Debug 0、0!! [130.031589] tvp514x 4-005D:ALI-Debug 启动 tvp514x_set_pad_format!! [130.038071] tvp514x 4-005D:ALI-Debug 1、4!! [130.042474] tvp514x 4-005D:Ali-Debug 8198、8198!! [130.047369] tvp514x 4-005D:ALI-Debug 1、1!! [130.051770] tvp514x 4-005D:ALI-Debug 0、0!! [130.056142] tvp514x 4-005D:ALI-Debug 0、0!!