| Related | 
  
   show
   
    
    
     - 
     
      
       [libcamera-devel,v3,00/30] More misc Python patches
      
     
     
 
    
    
     - 
      
      
       [libcamera-devel,v3,01/30] py: Generate pixel formats list
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,02/30] py: cam_qt: Use libcamera.formats
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,03/30] py: cam: Cleanups
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,04/30] py: Fix SceneFlicker enum values
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,05/30] py: Fix None value in ControlType enum
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,06/30] py: Add CameraManager.read_event()
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,07/30] py: Move MappedFrameBuffer to libcamera.utils
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,08/30] py: MappedFrameBuffer: Add type hints & docs
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,09/30] py: cam: Drop WA_ShowWithoutActivating
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,10/30] py: cam: Convert ctx and state to classes
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,11/30] py: Add README.md
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,12/30] py: Re-implement controls geneneration
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,13/30] py: Re-structure the controls API
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,14/30] py: Rename 'efd' to 'event_fd'
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,15/30] py: Generate bindings for properties
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,16/30] py: Use ln --relative to create symlinks
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,17/30] py: unittests: Fix test_sleep()
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,18/30] py: unittests: Fix test_select()
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,19/30] py: cam: Move conversion funcs to helpers.py
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,20/30] py: cam: Drop PIL dependency
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,21/30] py: Add Request.__str__()
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,22/30] py: Add FrameMetadataPlane
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,23/30] py: Implement FrameBufferPlane
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,24/30] py: MappedFrameBuffer: Support non-contextmanager use
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,25/30] py: MappedFrameBuffer: Add 'fb' property
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,26/30] py: cam: cam_qt: mmap the fbs only once
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,27/30] py: examples: Add simple-capture.py
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,28/30] py: examples: Add simple-continuous-capture.py
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,29/30] py: examples: Add itest.py
      
      
     
 
    
     - 
      
      
       [libcamera-devel,v3,30/30] py: examples: Add simple-cam.py
      
      
     
 
    
     
    
   | 
 
Hi, This series just seems to grow... Main changes to v2: - Fixed, I hope, all the comments from Laurent - --mode option for gen-py-controls.py - Fixed the missing call to init_py_properties_generated() - Added a bunch of new patches I've moved the examples on top of all the other patches. I added simple-cam.py, which is a copy of the .cpp version. I still like the simple-capture.py and simple-continuous-capture.py, though. simple-capture.py is very simple, but it does all the work in a single main function, and should be a good way to get familiar with the concepts even if it's perhaps not useful in the real life. simple-continuous-capture.py takes it further and makes it more realistic, but also more complex as it adds a few functions, also handles keyboard input, adds a class to store the context, etc. simple-continuous-capture.py and simple-cam.py are somewhat different, as the simple-cam.py follows the .cpp version as strictly as it can, whereas in simple-continuous-capture.py we use the nice extra stuff from Python. I didn't really touch itest.py much. We can leave that out for the time being, although I find myself using it often. Tomi Tomi Valkeinen (30): py: Generate pixel formats list py: cam_qt: Use libcamera.formats py: cam: Cleanups py: Fix SceneFlicker enum values py: Fix None value in ControlType enum py: Add CameraManager.read_event() py: Move MappedFrameBuffer to libcamera.utils py: MappedFrameBuffer: Add type hints & docs py: cam: Drop WA_ShowWithoutActivating py: cam: Convert ctx and state to classes py: Add README.md py: Re-implement controls geneneration py: Re-structure the controls API py: Rename 'efd' to 'event_fd' py: Generate bindings for properties py: Use ln --relative to create symlinks py: unittests: Fix test_sleep() py: unittests: Fix test_select() py: cam: Move conversion funcs to helpers.py py: cam: Drop PIL dependency py: Add Request.__str__() py: Add FrameMetadataPlane py: Implement FrameBufferPlane py: MappedFrameBuffer: Support non-contextmanager use py: MappedFrameBuffer: Add 'fb' property py: cam: cam_qt: mmap the fbs only once py: examples: Add simple-capture.py py: examples: Add simple-continuous-capture.py py: examples: Add itest.py py: examples: Add simple-cam.py src/py/README.md | 60 ++ src/py/cam/cam.py | 583 +++++++++--------- src/py/cam/cam_kms.py | 20 +- src/py/cam/cam_null.py | 10 +- src/py/cam/cam_qt.py | 259 ++------ src/py/cam/cam_qtgl.py | 34 +- src/py/cam/{cam_qt.py => helpers.py} | 178 +----- src/py/examples/itest.py | 197 ++++++ src/py/examples/simple-cam.py | 352 +++++++++++ src/py/examples/simple-capture.py | 159 +++++ src/py/examples/simple-continuous-capture.py | 201 ++++++ src/py/libcamera/__init__.py | 80 --- ...py-control-enums.py => gen-py-controls.py} | 46 +- src/py/libcamera/gen-py-formats.py | 56 ++ src/py/libcamera/meson.build | 46 +- ...ed.cpp.in => py_controls_generated.cpp.in} | 17 +- src/py/libcamera/py_enums.cpp | 2 +- ...ted.cpp.in => py_formats_generated.cpp.in} | 14 +- src/py/libcamera/py_main.cpp | 184 +++--- .../libcamera/py_properties_generated.cpp.in | 30 + .../MappedFrameBuffer.py} | 61 +- src/py/libcamera/utils/__init__.py | 4 + test/py/unittests.py | 21 +- 23 files changed, 1691 insertions(+), 923 deletions(-) create mode 100644 src/py/README.md copy src/py/cam/{cam_qt.py => helpers.py} (51%) create mode 100755 src/py/examples/itest.py create mode 100755 src/py/examples/simple-cam.py create mode 100755 src/py/examples/simple-capture.py create mode 100755 src/py/examples/simple-continuous-capture.py rename src/py/libcamera/{gen-py-control-enums.py => gen-py-controls.py} (60%) create mode 100755 src/py/libcamera/gen-py-formats.py copy src/py/libcamera/{py_control_enums_generated.cpp.in => py_controls_generated.cpp.in} (50%) rename src/py/libcamera/{py_control_enums_generated.cpp.in => py_formats_generated.cpp.in} (56%) create mode 100644 src/py/libcamera/py_properties_generated.cpp.in copy src/py/libcamera/{__init__.py => utils/MappedFrameBuffer.py} (56%) create mode 100644 src/py/libcamera/utils/__init__.py