Hello,
Can anybodytell me the difference between VPFE driver and V4l2? Is it necessary that VPFE should always be used ?
How PSP drivers are related to the above?
Thanks
NG
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello,
Can anybodytell me the difference between VPFE driver and V4l2? Is it necessary that VPFE should always be used ?
How PSP drivers are related to the above?
Thanks
NG
V4L2 is a Linux video driver standard, the VPFE drivers that are included with the PSP driver package for our various Davinci devices are V4L2 compliant drivers. For further details on using the PSP drivers to capture video you will want to reference the PSP documentation included with your install, for example if you are using DM6446 or DM355 you would want to look at SPRUEP7.
Hi Bernie,
I want to know which documentation to look at for dm365 v4l2 drivers in order to bypass the Previewer and Resizer but still working in continuous mode as I need to use both fields and not want the second field doubled up into first field. I have looked at SPRUGP6 but is a bit confused of what it explains about data path 2 and how the demos I am looking at operate - being fbdev_loopback where both fields are preserved and encodedecode demo where the frame is deinterlaced. Both apps boot up in a similar way but I don't know where to look anymore to figure out how to disable resizer/previewer from automatically deinterlacing my frames in encodedecode demo.
Thanks
Jinh T
Jinh said:I want to know which documentation to look at for dm365 v4l2 drivers in order to bypass the Previewer and Resizer but still working in continuous mode as I need to use both fields and not want the second field doubled up into first field.
I don't believe this mode is possible with the current version of the DM365 video capture driver. Based on the constraints section of SPRUGP6 it mentions specifically that continuous mode forces the resizer deinterlacing.
SPRUGP6 Section 1.3 said:In continuous mode, with interlaced scan input, only the second field of the input data is used for capture at Resizer and is scaled up by 2x to preserve the height. So in this mode, the video is de-interlaced at the driver and hence both fields are not available.
This being said, you would not be able to operate in continuous mode without the resizing, you would have to use the 'data path 1' mode and do any processing as a separate operation instead of on the fly.
Thanks Bernie,
I agree with what is said under constraints in SPRUGP6 but am confused between how the encodedecode demo and the fbdev_loopback demo under PSP_02_10_00_14 operates under what I can see the same video drivers as in encodedecode demo. The only difference I can see from the boot-up listen of the kernel is the settings of the video and osd devices which I list here: (sorry for long listing but it shows extract relevant to resizer/previewer and display devices)
Bootargs for encodedecode demo:
<<%%%%%%%% listing quote start %%%%%%%%%%%>>
Memory: 76MB = 76MB total Memory: 72576KB available (3525K code, 712K data, 200K init) Security Framework v1.0.0 initialized Capability LSM initialized Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 MUX: initialized SPI0_SCLK MUX: initialized SPI0_SDO) MUX: initialized SPI0_SDI MUX: initialized SPI0_SDENA0 DaVinci: 104 gpio irqs MUX: initialized GPIO20 MUX: initialized I2C_SCL DM365 IPIPE initialized in Continuous mode Generic PHY: Registered new driver ch0 default output "COMPOSITE", mode "PAL" VPBE Encoder Initialized LogicPD encoder initialized Avnetlcd encoder initialized dm365_afew_hw_init SCSI subsystem initialized usbcore: registered new driver usbfs usbcore: registered new driver hub NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 4096 bind 2048) TCP reno registered VFS: Disk quotas dquot_6.5.1 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) squashfs: version 3.1 (2006/08/19) Phillip Lougher JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc. yaffs Mar 8 2010 14:10:56 Installing. SGI XFS with no debug enabled Initializing Cryptographic API io scheduler noop registered io scheduler anticipatory registered (default) davincifb davincifb.0: dm_osd0_fb: 720x576x16@0,0 with framebuffer size 2025KB davincifb davincifb.0: dm_vid0_fb: 0x0x16@0,0 with framebuffer size 2500KB davincifb davincifb.0: dm_osd1_fb: 720x576x4@0,0 with framebuffer size 810KB davincifb davincifb.0: dm_vid1_fb: 0x0x16@0,0 with framebuffer size 2500KB DAVINCI-WDT: DaVinci Watchdog Timer: heartbeat 60 sec facedetect major#: 253, minor# 0 facedetect driver registered imp serializer initialized davinci_previewer initialized davinci_resizer initialized Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled serial8250.0: ttyS0 at MMIO map 0x1c20000 mem 0xfbc20000 (irq = 40) is a 16550A serial8250.0: ttyS1 at MMIO map 0x1d06000 mem 0xfbd06000 (irq = 41) is a 16550A RAMDISK driver initialized: 1 RAM disks of 32768K size 1024 blocksize Davinci EMAC MII Bus: probed MAC address is 00:0e:99:02:ca:73 TI DaVinci EMAC Linux version updated 4.0 netconsole: not configured, aborting Linux video capture interface: v2.00 vpfe_init starting ccdc_reset...<7> End of ccdc_reset...<5>vpfe_probe vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = MT9T001 vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = MT9P031 TVP514X : nummber of channels = 1 vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = TVP514X Trying to register davinci display video device. layer=c0656600,layer->video_dev=c0656760 Trying to register davinci display video device. layer=c0656400,layer->video_dev=c0656560 davinci_init:DaVinci V4L2 Display Driver V1.0 loaded vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = TVP7002 af major#: 250, minor# 0
<<%%%%%%%% listing quote end %%%%%%%%%%%>>
Bootargs for fbdev_loopback demo:
<<%%%%%%%% listing quote start %%%%%%%%%%%>>
Memory: 76MB = 76MB total Memory: 72576KB available (3525K code, 712K data, 200K init) Security Framework v1.0.0 initialized Capability LSM initialized Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 MUX: initialized SPI0_SCLK MUX: initialized SPI0_SDO) MUX: initialized SPI0_SDI MUX: initialized SPI0_SDENA0 DaVinci: 104 gpio irqs MUX: initialized GPIO20 MUX: initialized I2C_SCL DM365 IPIPE initialized in Continuous mode Generic PHY: Registered new driver ch0 default output "COMPOSITE", mode "PAL" VPBE Encoder Initialized LogicPD encoder initialized Avnetlcd encoder initialized dm365_afew_hw_init SCSI subsystem initialized usbcore: registered new driver usbfs usbcore: registered new driver hub NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 4096 bind 2048) TCP reno registered VFS: Disk quotas dquot_6.5.1 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) squashfs: version 3.1 (2006/08/19) Phillip Lougher JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc. yaffs Mar 8 2010 14:10:56 Installing. SGI XFS with no debug enabled Initializing Cryptographic API io scheduler noop registered io scheduler anticipatory registered (default) davincifb davincifb.0: dm_osd0_fb: 656x64x16@64,0 with framebuffer size 2025KB davincifb davincifb.0: dm_vid0_fb: 720x576x16@0,0 with framebuffer size 2500KB davincifb davincifb.0: dm_osd1_fb: Initial window configuration is invalid. davincifb davincifb.0: dm_osd1_fb: 656x64x16@512,0 with framebuffer size 2025KB davincifb davincifb.0: dm_vid1_fb: 720x576x16@0,0 with framebuffer size 2500KB DAVINCI-WDT: DaVinci Watchdog Timer: heartbeat 60 sec facedetect major#: 253, minor# 0 facedetect driver registered imp serializer initialized davinci_previewer initialized davinci_resizer initialized Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled serial8250.0: ttyS0 at MMIO map 0x1c20000 mem 0xfbc20000 (irq = 40) is a 16550A serial8250.0: ttyS1 at MMIO map 0x1d06000 mem 0xfbd06000 (irq = 41) is a 16550A RAMDISK driver initialized: 1 RAM disks of 32768K size 1024 blocksize Davinci EMAC MII Bus: probed MAC address is 00:0e:99:02:ca:73 TI DaVinci EMAC Linux version updated 4.0 netconsole: not configured, aborting Linux video capture interface: v2.00 vpfe_init starting ccdc_reset...<7> End of ccdc_reset...<5>vpfe_probe vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = MT9T001 vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = MT9P031 TVP514X : nummber of channels = 1 vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = TVP514X Trying to register davinci display video device. layer=c061b600,layer->video_dev=c061b760 Trying to register davinci display video device. layer=c061b400,layer->video_dev=c061b560 davinci_init:DaVinci V4L2 Display Driver V1.0 loaded vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder: decoder = TVP7002 af major#: 250, minor# 0
<<%%%%%%%% listing quote end %%%%%%%%%%%>>
When I record video played through fbdev_loopback the fields are not deinterlaced and that is the functionality I wish to have in my encodedecode demo. Only changes I made to encodedecode demo until now it to change data on OSD to only print a realtime framecounter without any other data and inserting barcode counter per field on the left edge. I hop eyou can help me solve this as I believe I would be able to change something to make fields data behave the same in encodedecode as in fbdev_loopback.
Thanks, Jinh T