Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StopMotion - libgphoto2 integration #1027

Merged
merged 13 commits into from
Dec 26, 2022

Conversation

manongjohn
Copy link
Collaborator

This PR integrates libgphoto2 (v2.5.30) which primarily resolves #927 but is extended to all OSs. This will extend the supported DSLR cameras that Tahoma2D can potentially work with.

DSLR Camera Support


DSLR camera support is as follows:

  • Canon
    • All T2D features that work using Canon EDSDK will work similarly with the libgphoto2-Canon integration.
    • Tested using a Canon EOS 2000D
  • Nikon
    • Support was added to work with all T2D features however it is largely untested.
    • Limited testing done with Nikon D3100
    • My Nikon D3100 has very limited support in the libgphoto2 library so I could not test a number of T2D features but may work well with other Nikon models.
  • All others camera models
    • Where possible, I used non-camera specific libghoto2 library calls which may allow non Canon/Nikon camera to still work with some of the T2D features.
    • Some specific camera event handling for detecting camera setting changes was added for other cameras but cannot be sure I chose the right codes to implement.

Only way to find out how a non-Canon camera might work is to plug it in and try. Some features may not work due to either libgphoto2-camera limitations or additional information is needed from your camera to better support it.

T2D Feature changes


Following changes were made to StopMotion features:

  • Allow Capture press without LiveView to support cameras without LiveView capabilities.
  • Added Image Size dropdown to settings since some camera models have Quality/Format and Size as 2 different settings.
  • Non-Canon Manual Focus controls use a slider. Canon Manual Focus controls will continue to use buttons.

Known issues/differences


  • Canon settings that do not apply when changing to specific camera modes are automatically disabled under Canon EDSDK. Under libgphoto2, generally this doesn't happen and may not update until LiveView is stopped. In this case, a list may not update correctly so options that don't apply are still selectable though it won't update the camera with that value since it is technically not a valid option for that mode.

DSLR Camera Handling


DSLR camera is handled via the following

  • Windows: Canon EDSDK or libgphoto2 library for Canon and PTP enabled cameras only*
  • MacOS: Canon EDSDK or libgphoto2 library for all supported cameras
  • Linux: libgphoto2 library for all supported cameras

In cases where a Canon camera is detected by both Canon EDSDK and libgphoto2 (detected camera names need to match exactly), the Canon EDSDK will take priority and not list the libgphoto2 version. If Canon EDSDK and libgphoto2 do not detect the same name for the same camera, both will be listed (Canon EDSDK camera listed first), and user can choose which one to use. Canon EDSDK is probably the best one to use in that scenario.

*For Windows to control the camera via libgphoto2, it will likely be necessary to change the USB camera driver with zadig.exe from https://zadig.akeo.ie. I used libusbk driver. Doing this will likely prevent other software from detecting the camera. To restore the original driver, need to uninstall and select to delete driver from the Device Manager, then rescan for new hardware.

Libgphoto2 code


Tahoma2D uses a modified version of libgphoto2.

  • Windows version was modified to allow building with MSVC 2019 using a modified MSVC project taken from https://github.com/vividos/RemotePhotoTool.
  • OSX version was modified to allow relocation of camlib/iolibs directories relative to libgphoto2/libgphoto2_port dylibs, post build, to allow for packaging and portability.
  • Linux version has no customizations

Modified source can be found at https://github.com/tahoma2d/libgphoto2 under the tahoma2d-version branch.

@manongjohn
Copy link
Collaborator Author

manongjohn commented Aug 14, 2022

Finally! All artifacts should now be working.

Looking for testers in all OSs. Need some regression testing for Canon EDSDK as I had to change some thing that might have impacted it.

EDIT: Just realized we cannot regression test Canon EDSDK in PR artifacts. That will need to wait until it is merged. Good news is we can now test StopMotion with DSLR cameras with PR artifacts, Canon or not. 😁

@artisteacher
Copy link
Contributor

Tested the action build on macOS with a Canon Rebel SL2. Images themselves capture just fine & are visible in live view. Camera settings can be changed as expected.

I did notice 2 issues:

  1. Camera battery incorrectly reads as 100% when it shows at 50% in 1.3
  2. Focus picking is broken - the red outline doesn't show & the location seems locked to the upper right corner

@manongjohn
Copy link
Collaborator Author

I did notice 2 issues:

  1. Camera battery incorrectly reads as 100% when it shows at 50% in 1.3
  2. Focus picking is broken - the red outline doesn't show & the location seems locked to the upper right corner

The Canon I had has 2 different Camera battery properties, and I used one that always gave %. The other gave different set of descriptions. I wonder if not all Canon's have that property and maybe I should switch to the other one.

As for zoom, I used a property from my camera that had a viewer screen size embedded in it. Possible your camera doesn't have that property or it is embedded differently in the property.

For both cases, I need additional information from your camera. Please do the following:

  1. brew install gphoto2
  2. Connect camera and turn on.
  3. gphoto2 --list-all-config
  4. Copy and send me the output

As always...many thanks for Testing!

@artisteacher
Copy link
Contributor

Here you go:
canon.txt
It looks like gphoto2 checks two places? main/status/Battery level - which is incorrect at 100%, and main/status/batterylevel which is correct with 50%.

I'm always happy to test! I did try out a couple other cameras I had on hand. They were recognized but that was it. On the list of supported cameras they were listed without any features (capture, live view or etc.), so that's probably to be expected.

@manongjohn
Copy link
Collaborator Author

Thanks.

I think I need to switch to use the other battery level. Will submit a fix for that. I think I'll add something in Preferences that can generate the camera's property list so you don't need to install gphoto2 to create it. Was also thinking of adding a way to enable debug camera events for debugging issues.

I not sure how to fix the manual zoom/focus being stuck for your camera. The property list from your camera doesn't give me any indication of the LiveView area size other than Large, Medium, Small but I have no idea what the actual width and height are to properly place the zoom/focus point. If I knew what those dimensions were, I could code it specifically for that property. I suppose I can default a specific size when it is not known and hope it works ok for most cameras where I don't have that property.

As for the other cameras you tried, are you able to capture on the camera directly and it still downloads the images to T2D? In that way you can still do stop motion in T2D, just not easily. Curious to see those camera's property lists.

@manongjohn
Copy link
Collaborator Author

@artisteacher I noticed in your camera's property list, it shows colortemperature. We actually have control settings in T2D for that, but I think in the current implementation it only shows up if the Whitebalance is set to Color Temperature which I don't see in your camera's Whitebalance list.

On your camera, does the Color Temperature (sometimes called Kelvin) setting show up under any of the Whitebalance settings? I would assume Manual if anything. If it does appear under any of them, let me know and I can probably enable it if it is present.

I did verify that I was using batterylevel which should have displayed 50% so I'm not sure why yours was still showing 100%.

@ABelliqueux
Copy link

ABelliqueux commented Sep 10, 2022

Tested on Linux with an ancient Nikon D40X , it works fine even though no live preview is available on this model ! Settings work fine though I did not find a way to use the "focus" option but I suspect that requires live view ability.

As a side note, I did notice some error messages in the terminal when closing t2d, but nothing too serious I think :

[GP_ERROR]  "'camera->functions->get_single_config ( camera, name, widget, context)' failed: -2"
[GP_ERROR]  "Type of property 'Auto White Balance Bias' expected: 0x0002 got: 0x0001"
[GP_ERROR]  "Type of property 'Tungsten White Balance Bias' expected: 0x0002 got: 0x0001"
[GP_ERROR]  "Type of property 'Fluorescent White Balance Bias' expected: 0x0002 got: 0x0001"
[GP_ERROR]  "Type of property 'Daylight White Balance Bias' expected: 0x0002 got: 0x0001"
[GP_ERROR]  "Type of property 'Flash White Balance Bias' expected: 0x0002 got: 0x0001"
[GP_ERROR]  "Type of property 'Cloudy White Balance Bias' expected: 0x0002 got: 0x0001"
[GP_ERROR]  "Type of property 'Shady White Balance Bias' expected: 0x0002 got: 0x0001"
QAction: Initialize Q(Gui)Application before calling 'setShortcut'.

Here is the result of gphoto2 --list-all-config if that can be of any use :

nikon_d40x.txt

This is a great addition to T2d ! Great work as always.

FWIW, I used to use a webcam through my DLSR's viewfinder before live view became a thing;

liveview-04

( See here for full article in french : https://wiki.arthus.net/?linuxstopmotion )

Not sure it's worth the hassle, but maybe having the possibility to use a webcam for liveview and gphoto2 for capture could be an interesting option for some setups...

Anyway, cheers, let me know if I can test other things or be of any help.

@manongjohn
Copy link
Collaborator Author

@ABelliqueux Thanks for testing.

Normally the focus feature requires Liveview. Technically you may be able to adjust focus without it, but without some way to see the actual results of moving the slider, it would be rather difficult to get the right focus. I also am not 100% certain the actual capture will honor it as GPhoto may force autofocus.

Not sure what is causing the errors. That only happens on shutdown/choosing no camera? Gphoto, itself, may be trying to reset something it thinks your Nikon might have and failing to do so. I've seen it do something similar on another camera and the error had nothing to do with what T2D was doing.

@charliemartinez
Copy link
Contributor

Finally! All artifacts should now be working.

Looking for testers in all OSs. Need some regression testing for Canon EDSDK as I had to change some thing that might have impacted it.

EDIT: Just realized we cannot regression test Canon EDSDK in PR artifacts. That will need to wait until it is merged. Good news is we can now test StopMotion with DSLR cameras with PR artifacts, Canon or not. grin

Hello, I did the test with a Canon T3i and it was well recognized, although I could not animate. I recorded a video to better explain the error and posted it in the following thread:

#927

@manongjohn
Copy link
Collaborator Author

@charliemartinez Thanks for testing. i watched the video. Not sure why Capture wasn't working.

Can you do the following in a Terminal window and post the results so I can get more info from your camera:

gphoto2 --list-all-config

Also, can you try running the AppImage from command line and try stuff to see if it gives any GP Error messages?

@charliemartinez
Copy link
Contributor

gphoto2 --list-all-config
/main/actions/syncdatetime
Label: Synchronize camera date and time with PC
Readonly: 0
Type: TOGGLE
Current: 0
END
/main/actions/uilock
Label: UI Lock
Readonly: 0
Type: TOGGLE
Current: 2
END
/main/actions/popupflash
Label: Popup Flash
Readonly: 0
Type: TOGGLE
Current: 2
END
/main/actions/autofocusdrive
Label: Drive Canon DSLR Autofocus
Readonly: 0
Type: TOGGLE
Current: 0
END
/main/actions/manualfocusdrive
Label: Drive Canon DSLR Manual focus
Readonly: 0
Type: RADIO
Current: None
Choice: 0 Near 1
Choice: 1 Near 2
Choice: 2 Near 3
Choice: 3 None
Choice: 4 Far 1
Choice: 5 Far 2
Choice: 6 Far 3
END
/main/actions/cancelautofocus
Label: Cancel Canon DSLR Autofocus
Readonly: 0
Type: TOGGLE
Current: 0
END
/main/actions/eoszoom
Label: Canon EOS Zoom
Readonly: 0
Type: TEXT
Current: 0
END
/main/actions/eoszoomposition
Label: Canon EOS Zoom Position
Readonly: 0
Type: TEXT
Current: 0,0
END
/main/actions/viewfinder
Label: Canon EOS Viewfinder
Readonly: 0
Type: TOGGLE
Current: 0
END
/main/actions/eosremoterelease
Label: Canon EOS Remote Release
Readonly: 0
Type: RADIO
Current: None
Choice: 0 None
Choice: 1 Press Half
Choice: 2 Press Full
Choice: 3 Release Half
Choice: 4 Release Full
Choice: 5 Immediate
Choice: 6 Press 1
Choice: 7 Press 2
Choice: 8 Press 3
Choice: 9 Release 1
Choice: 10 Release 2
Choice: 11 Release 3
END
/main/actions/eosmoviemode
Label: Movie Mode
Readonly: 0
Type: TOGGLE
Current: 2
END
/main/actions/opcode
Label: PTP Opcode
Readonly: 0
Type: TEXT
Current: 0x1001,0xparam1,0xparam2
END
/main/settings/datetime
Label: Camera Date and Time
Readonly: 0
Type: DATE
Current: 1663789413
Printable: Wed Sep 21 21:43:33 2022
Help: Use 'now' as the current time when setting.

END
/main/settings/reviewtime
Label: Quick Review Time
Readonly: 0
Type: RADIO
Current: 2 seconds
Choice: 0 None
Choice: 1 2 seconds
Choice: 2 4 seconds
Choice: 3 8 seconds
Choice: 4 Hold
END
/main/settings/output
Label: Camera Output
Readonly: 0
Type: RADIO
Current: Off
Choice: 0 TFT
Choice: 1 PC
Choice: 2 TFT + PC
Choice: 3 MOBILE
Choice: 4 TFT + MOBILE
Choice: 5 PC + MOBILE
Choice: 6 TFT + PC + MOBILE
Choice: 7 Off
END
/main/settings/movierecordtarget
Label: Recording Destination
Readonly: 0
Type: RADIO
Current: None
Choice: 0 Card
Choice: 1 None
END
/main/settings/evfmode
Label: EVF Mode
Readonly: 0
Type: RADIO
Current: Unknown value 0002
Choice: 0 Unknown value 0002
END
/main/settings/ownername
Label: Owner Name
Readonly: 0
Type: TEXT
Current:
END
/main/settings/artist
Label: Artist
Readonly: 0
Type: TEXT
Current:
END
/main/settings/copyright
Label: Copyright
Readonly: 0
Type: TEXT
Current:
END
/main/settings/customfuncex
Label: Custom Functions Ex
Readonly: 0
Type: TEXT
Current: c8,4,1,2c,3,101,1,0,103,1,0,10f,1,0,2,2c,3,201,1,0,202,1,0,203,1,0,3,20,2,50e,1,0,60f,1,0,4,38,4,701,1,0,704,1,0,811,1,0,80f,1,0,
END
/main/settings/focusinfo
Label: Focus Info
Readonly: 0
Type: TEXT
Current: eosversion=0,size=5184x3456,size2=5184x3456,points={{-1477,0,186,139},{-886,418,186,139},{-886,-418,186,139},{0,787,127,196},{0,0,231,238},{0,-787,127,196},{886,418,186,139},{886,-418,186,139},{1477,0,186,139}},select={},unknown={ff010000ffff}
END
/main/settings/strobofiring
Label: Strobo Firing
Readonly: 0
Type: TEXT
Current: 1
END
/main/settings/flashcharged
Label: Flash Charging State
Readonly: 0
Type: TEXT
Current: 0
END
/main/settings/autopoweroff
Label: Auto Power Off
Readonly: 0
Type: TEXT
Current: 0
END
/main/settings/depthoffield
Label: Depth of Field
Readonly: 0
Type: TEXT
Current: 0
END
/main/settings/capturetarget
Label: Capture Target
Readonly: 0
Type: RADIO
Current: Internal RAM
Choice: 0 Internal RAM
Choice: 1 Memory card
END
/main/settings/capture
Label: Capture
Readonly: 0
Type: TOGGLE
Current: 0
END
/main/settings/remotemode
Label: Remote Mode
Readonly: 0
Type: TEXT
Current: 1
END
/main/settings/eventmode
Label: Event Mode
Readonly: 0
Type: TEXT
Current: 0
END
/main/status/serialnumber
Label: Serial Number
Readonly: 0
Type: TEXT
Current: 36e2e701fcc943fb80ea3aca79fd5a5
END
/main/status/manufacturer
Label: Camera Manufacturer
Readonly: 0
Type: TEXT
Current: Canon Inc.
END
/main/status/cameramodel
Label: Camera Model
Readonly: 0
Type: TEXT
Current: Canon EOS REBEL T3i
END
/main/status/deviceversion
Label: Device Version
Readonly: 0
Type: TEXT
Current: 3-1.0.2
END
/main/status/vendorextension
Label: Vendor Extension
Readonly: 0
Type: TEXT
Current:
END
/main/status/model
Label: Camera Model
Readonly: 0
Type: TEXT
Current: 2147484294
END
/main/status/ptpversion
Label: PTP Version
Readonly: 0
Type: TEXT
Current: 256
END
/main/status/Battery Level
Label: Battery Level
Readonly: 1
Type: TEXT
Current: 50%
END
/main/status/batterylevel
Label: Battery Level
Readonly: 0
Type: TEXT
Current: 50%
END
/main/status/lensname
Label: Lens Name
Readonly: 0
Type: TEXT
Current: EF-S18-55mm f/3.5-5.6 IS II
END
/main/status/eosserialnumber
Label: Serial Number
Readonly: 0
Type: TEXT
Current: 112025003279
END
/main/status/shuttercounter
Label: Shutter Counter
Readonly: 0
Type: TEXT
Current: 4484
END
/main/status/availableshots
Label: Available Shots
Readonly: 0
Type: TEXT
Current: 38610
END
/main/status/eosmovieswitch
Label: Movie Switch
Readonly: 0
Type: TEXT
Current: 0
END
/main/imgsettings/imageformat
Label: Image Format
Readonly: 0
Type: RADIO
Current: RAW
Choice: 0 Large Fine JPEG
Choice: 1 Large Normal JPEG
Choice: 2 Medium Fine JPEG
Choice: 3 Medium Normal JPEG
Choice: 4 Small Fine JPEG
Choice: 5 Small Normal JPEG
Choice: 6 Smaller JPEG
Choice: 7 Tiny JPEG
Choice: 8 RAW + Large Fine JPEG
Choice: 9 RAW
END
/main/imgsettings/imageformatsd
Label: Image Format SD
Readonly: 0
Type: RADIO
Current: RAW
Choice: 0 Large Fine JPEG
Choice: 1 Large Normal JPEG
Choice: 2 Medium Fine JPEG
Choice: 3 Medium Normal JPEG
Choice: 4 Small Fine JPEG
Choice: 5 Small Normal JPEG
Choice: 6 Smaller JPEG
Choice: 7 Tiny JPEG
Choice: 8 RAW + Large Fine JPEG
Choice: 9 RAW
END
/main/imgsettings/iso
Label: ISO Speed
Readonly: 0
Type: RADIO
Current: 1600
Choice: 0 Auto
Choice: 1 100
Choice: 2 200
Choice: 3 400
Choice: 4 800
Choice: 5 1600
Choice: 6 3200
Choice: 7 6400
END
/main/imgsettings/whitebalance
Label: WhiteBalance
Readonly: 0
Type: RADIO
Current: Daylight
Choice: 0 Auto
Choice: 1 Daylight
Choice: 2 Shadow
Choice: 3 Cloudy
Choice: 4 Tungsten
Choice: 5 Fluorescent
Choice: 6 Flash
Choice: 7 Manual
END
/main/imgsettings/whitebalancexa
Label: WhiteBalance X A
Readonly: 0
Type: TEXT
Current: 0
END
/main/imgsettings/whitebalancexb
Label: WhiteBalance X B
Readonly: 0
Type: TEXT
Current: 0
END
/main/imgsettings/colorspace
Label: Color Space
Readonly: 0
Type: RADIO
Current: sRGB
Choice: 0 sRGB
END
/main/capturesettings/exposurecompensation
Label: Exposure Compensation
Readonly: 0
Type: RADIO
Current: 0
Choice: 0 0
END
/main/capturesettings/focusmode
Label: Focus Mode
Readonly: 0
Type: RADIO
Current: Manual
Choice: 0 Manual
END
/main/capturesettings/aspectratio
Label: Aspect Ratio
Readonly: 0
Type: RADIO
Current: 3:2
Choice: 0 3:2
END
/main/capturesettings/storageid
Label: Storage Device
Readonly: 0
Type: TEXT
Current: 00020001
END
/main/capturesettings/autoexposuremode
Label: Canon Auto Exposure Mode
Readonly: 0
Type: RADIO
Current: Unknown value 0014
Choice: 0 P
Choice: 1 TV
Choice: 2 AV
Choice: 3 Manual
Choice: 4 Bulb
Choice: 5 A_DEP
Choice: 6 DEP
Choice: 7 Custom
Choice: 8 Lock
Choice: 9 Green
Choice: 10 Night Portrait
Choice: 11 Sports
Choice: 12 Portrait
Choice: 13 Landscape
Choice: 14 Closeup
Choice: 15 Flash Off
Choice: 16 Auto
Choice: 17 Handheld Night Scene
Choice: 18 HDR Backlight Control
Choice: 19 Food
Choice: 20 Grainy B/W
Choice: 21 Soft focus
Choice: 22 Toy camera effect
Choice: 23 Fish-eye effect
Choice: 24 Water painting effect
Choice: 25 Miniature effect
Choice: 26 HDR art standard
Choice: 27 HDR art vivid
Choice: 28 HDR art bold
Choice: 29 HDR art embossed
Choice: 30 Panning
Choice: 31 Self Portrait
Choice: 32 Hybrid Auto
Choice: 33 Smooth skin
Choice: 34 Fv
Choice: 35 Unknown value 0014
END
/main/capturesettings/drivemode
Label: Drive Mode
Readonly: 0
Type: RADIO
Current: Single
Choice: 0 Single
END
/main/capturesettings/picturestyle
Label: Picture Style
Readonly: 0
Type: RADIO
Current: Standard
Choice: 0 Standard
Choice: 1 Portrait
Choice: 2 Landscape
Choice: 3 Neutral
Choice: 4 Faithful
Choice: 5 Monochrome
Choice: 6 Auto
Choice: 7 User defined 1
Choice: 8 User defined 2
Choice: 9 User defined 3
END
/main/capturesettings/aperture
Label: Aperture
Readonly: 0
Type: RADIO
Current: 4
Choice: 0 4
Choice: 1 4.5
Choice: 2 5
Choice: 3 5.6
Choice: 4 6.3
Choice: 5 7.1
Choice: 6 8
Choice: 7 9
Choice: 8 10
Choice: 9 11
Choice: 10 13
Choice: 11 14
Choice: 12 16
Choice: 13 18
Choice: 14 20
Choice: 15 22
Choice: 16 25
END
/main/capturesettings/shutterspeed
Label: Shutter Speed
Readonly: 0
Type: RADIO
Current: 1/30
Choice: 0 30
Choice: 1 25
Choice: 2 20
Choice: 3 15
Choice: 4 13
Choice: 5 10.3
Choice: 6 8
Choice: 7 6.3
Choice: 8 5
Choice: 9 4
Choice: 10 3.2
Choice: 11 2.5
Choice: 12 2
Choice: 13 1.6
Choice: 14 1.3
Choice: 15 1
Choice: 16 0.8
Choice: 17 0.6
Choice: 18 0.5
Choice: 19 0.4
Choice: 20 0.3
Choice: 21 1/4
Choice: 22 1/5
Choice: 23 1/6
Choice: 24 1/8
Choice: 25 1/10
Choice: 26 1/13
Choice: 27 1/15
Choice: 28 1/20
Choice: 29 1/25
Choice: 30 1/30
Choice: 31 1/40
Choice: 32 1/50
Choice: 33 1/60
Choice: 34 1/80
Choice: 35 1/100
Choice: 36 1/125
Choice: 37 1/160
Choice: 38 1/200
Choice: 39 1/250
Choice: 40 1/320
Choice: 41 1/400
Choice: 42 1/500
Choice: 43 1/640
Choice: 44 1/800
Choice: 45 1/1000
Choice: 46 1/1250
Choice: 47 1/1600
Choice: 48 1/2000
Choice: 49 1/2500
Choice: 50 1/3200
Choice: 51 1/4000
END
/main/capturesettings/meteringmode
Label: Metering Mode
Readonly: 0
Type: RADIO
Current: Evaluative
Choice: 0 Evaluative
END
/main/capturesettings/liveviewsize
Label: Live View Size
Readonly: 0
Type: RADIO
Current: val 0
Choice: 0 Large
Choice: 1 Medium
END
/main/capturesettings/bracketmode
Label: Bracket Mode
Readonly: 0
Type: RADIO
Current: Unknown value 0000
Choice: 0 Unknown value 0000
END
/main/capturesettings/aeb
Label: Auto Exposure Bracketing
Readonly: 0
Type: RADIO
Current: off
Choice: 0 off
END
/main/capturesettings/alomode
Label: Auto Lighting Optimization
Readonly: 0
Type: RADIO
Current: x3
Choice: 0 x3
END
/main/other/d402
Label: PTP Property 0xd402
Readonly: 1
Type: TEXT
Current: Canon EOS REBEL T3i
END
/main/other/d407
Label: PTP Property 0xd407
Readonly: 1
Type: TEXT
Current: 1
END
/main/other/d406
Label: PTP Property 0xd406
Readonly: 0
Type: TEXT
Current: Unknown Initiator
END
/main/other/d303
Label: PTP Property 0xd303
Readonly: 1
Type: TEXT
Current: 1
END
/main/other/5001
Label: Battery Level
Readonly: 1
Type: MENU
Current: 50
Choice: 0 100
Choice: 1 0
Choice: 2 75
Choice: 3 0
Choice: 4 50
END

@charliemartinez
Copy link
Contributor

./Tahoma2D.AppImage
DIR: /tmp/.mount_TahomaZvZOTd
CAMLIBS: /tmp/.mount_TahomaZvZOTd/usr/lib/libgphoto2/2.5.30.1
IOLIBS: /tmp/.mount_TahomaZvZOTd/usr/lib/libgphoto2_port/0.12.1
plugin search directory:/home/charlie/Desktop/Tahoma2D/tahomastuff/plugins
walkDirectory_: /home/charlie/Desktop/Tahoma2D/tahomastuff/plugins
===== PluginLoadController::finished() =====
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
QObject::connect: No such signal ClickableLabel::click()
QObject::connect: (receiver name: 'menuToggleButton')
plugin search directory:/home/charlie/Desktop/Tahoma2D/tahomastuff/plugins
walkDictionary: /home/charlie/Desktop/Tahoma2D/tahomastuff/plugins [dry]
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 1041, resource id: 16802023, major code: 40 (TranslateCoords), minor code: 0

@charliemartinez
Copy link
Contributor

IT WORKED!!!
I'll tell you what I did: I reset my camera settings to the default ones (with an option from its own settings menu) and now it works perfectly. I am amazed at this new functionality. I will release the definitive version of Quirinux OS soon, with Tahoma2D pre-installed. THEY HAVE DONE A GREAT JOB.

@manongjohn
Copy link
Collaborator Author

Ok. uploaded the last set of changes, I think.

As far as the issue with the Pick not working correctly, the problem with that is I need to know what the camera's internal coordinate system is and that is mostly unavailable from a Gphoto standpoint. I also do not get any feedback when trying to set a pick point, so I can't run a test to find the dimensions and I can't tell when a user has picked a point outside the camera's focus area.

For some Canon models, I found a focus info attribute that appears to contain the right dimensions so I use that. For Canon models that don't have that attribute and all other cameras, I use the following logic:

  • If the camera has an Image Size attribute, typically a menu, I use the largest image size available.
  • If no focus info or image size attributes are found, default to 6000x4000

The caveat to this is the Pick point might be offset by a little or a lot, depending on the camera's true internal coordinate system. Users would need to use Check to see where it actually is. While in Check mode, they can use Arrow keys to move to the right location, which hopefully is nearby.

@artisteacher
Copy link
Contributor

I'll bring a camera home after the weekend and test it out. Thanks for continuing to improve this feature!

@manongjohn
Copy link
Collaborator Author

Time to make this official. Thanks for patiently waiting and to all those who tested it.

For those who have a Canon and have some spare time, it would be good to regression test the original Canon library once the nightly is built.

@manongjohn manongjohn merged commit 331862c into tahoma2d:master Dec 26, 2022
@ABelliqueux
Copy link

Hi,
Thanks again for your great work.

The 1.4 beta is supposed to have gphoto2 integration as I can see in the release section but I can no longer get my (DSLR) Nikon D40x recognized in 1.4 whereas it work in the artifacts you mentionned in #1027 (comment) which where available here : https://github.com/tahoma2d/tahoma2d/pull/1027/checks (it was 1.3 version).

The camera doesn't appear in the camera list anymore, in the 1.4 beta but works fine in gphoto2 and tahoma 1.3.

Please let me know if I can provide useful informations.

@manongjohn
Copy link
Collaborator Author

Please let me know if I can provide useful informations.

What OS are you on?

@ABelliqueux
Copy link

ABelliqueux commented Nov 17, 2023

Sorry, I should have mentionned that. This is on Linux ( Manjaro ), using the appimage, and gphoto.

CAMLIBS: /tmp/.mount_Tahomaj1AzU0/usr/lib/libgphoto2/2.5.30.1
IOLIBS: /tmp/.mount_Tahomaj1AzU0/usr/lib/libgphoto2_port/0.12.1

in both cases (1.3 and 1.4).

@manongjohn
Copy link
Collaborator Author

Sorry, I should have mentionned that. This is on Linux ( Manjaro ) so using gphoto.

No problem. I had added gphoto support for all 3 OSes so i wasn't thinking Linux only even though this is what sparked gphoto implementation. 🙂

I'm not sure what changed between then and now, especially for linux. I'll try and figure it out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.4 Included in Version 1.4
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Camera DSLR detection in linux
4 participants