ffmpeg/ffplay specify (H)DV camera's using iec61883 -dvguid option broken or wrong syntax?
|Reported by:||walter sonius||Owned by:|
|Blocking:||Reproduced by developer:||no|
|Analyzed by developer:||no|
Summary of the bug:
Not sure if its a bug or me miss understanding the syntax of iec61883 -dvguid option.
To my understanding the single libiec61883 argument "auto" just works as expected with no selective power at all. But specifying pci adapters by referring to them as port numbers is a little bit unclear and should not be necessary if the -dvguid option works( I think its broken). Leaving out '-i' also seems to work for auto and port number syntax...
Using multiple firewire/1394 (H)DV camera's with iec61883 in ffmpeg/ffplay only works for a single (H)DV camera which is active/powered-on "first" (in a order of multiple connected camera's) to a systems firewire interface.
Although having multiple active camera's connected to the same single firewire adapter interface, I was not able to select/specify/distinguish with "-dvguid" other than the first powered-on camera.
How to reproduce:
Lookup (H)DV camera unique device GUID codes, the first is probably the pci firewire adapter itself!
dmesg | grep GUID cat /sys/bus/firewire/devices/fw*/guid
Using multiple (H)DV camera's on the same firewire adapter interface other than the first powered-on will not work.
ffplay -f iec61883 -i 0 -dvtype dv -dvguid 0x0camera1guidcode #probably works if 1st ffplay -f iec61883 -i 0 -dvtype dv -dvguid 0x0camera2guidcode #doesn't work just hangs
Using multiple (H)DV devices each connected on their own firewire pci adapter interface works, but still only for the "first" poweredon/connected device on that unique firewire adapter. Adding the -guid option here will not be very effective and functions more like a whitelist since it still only works on the first powered-on camera's. The first iec61883 argument auto/port is used to specify the firewire pci adapter see 0 and 1 in the following examples.
ffplay -f iec61883 -i 0 -dvtype dv #sony camera on 1st pci firewire adapter ffplay -f iec61883 -i 1 -dvtype hdv #canon camera on seperate 2nd pci firewire adapter
Just by adding the option -dvguid to -dvtype I would expect that a unique camera can be specified with or without the need of the firewire adapter port number.
ffplay -f iec61883 -i -dvtype dv -dvguid 0x0camera2guid #doesn't work ffplay -f iec61883 -i 0 -dvtype -dvguid 0x0camera2guid #doesn't work
Using a on purpose wrong -dvguid code starting with 0x 0 or 1 will lead to the same first dv device, a other on purpose wrong guid code like 2 or 2x leads to a expected error.
ffplay -f iec61883 -i -dvtype dv -dvguid 2 #see error ffplay -f iec61883 -i 0 -dvtype -dvguid 2xetc #see error
"No AV/C devices found.
1: Input/output error"
The program "dvgrab" works as expected, it will let you capture from multiple uniquely with -guid option specified (H)DV camera's at the same time from the same single pci firewire adapter interface. I would expect ffmpeg/ffplay iec61883 dvguid option to behave the same...
dvgrab -noavc -f raw -guid 0x0sonycameraguid sonyrecording.dv dvgrab -noavc -f hdv -guid 0x0canoncameraguid canonrecording.hdv dvgrab -noavc -f dv -guid 0x0jvccameraguid jvcrecording.dv
Texas Instruments TSB82AA2 IEEE-1394b (3 FW800 ports)
Agere LSI Corporation FW322/323 (2 FW400 6pin ports)
ubuntu linux 16.04.1 amd64 kernel 4.4.0-45-generic 66
ffmpeg version 2.8.8-0ubuntu0.16.04.1 #repo ffmpeg version N-82572-gac206bb #github master build built on ubuntu 16.04.1 amd64