- Add full-featured launch-ids.py with command-line argument parsing
- Implement UDP control server for dynamic exposure/framerate adjustment
- Support configurable video streaming (UDP) with optional display preview
- Add exposure control in milliseconds (1.0-1000.0ms, default 10ms)
- Add framerate control (1-20200 Hz, default 750Hz)
- Include video cropping, queue configuration, and verbose/quiet modes
- Integrate argcomplete for tab completion support
- Add comprehensive error handling and validation
- Support custom camera configuration files
- Enable tee-based pipeline for simultaneous UDP streaming and display
Provides complete camera control interface with both CLI configuration
and runtime UDP control for exposure/framerate adjustments.
- Add argparse for individual get/set operations
- Support commands: get-exposure, set-exposure, get-framerate, set-framerate, status
- Add 'test' command to run full test suite (preserves original functionality)
- Show help when no parameters provided
- Add optional tab completion support with argcomplete
- Maintain backward compatibility with existing test functionality
Usage examples:
python scripts/test_exposure_control.py # Show help
python scripts/test_exposure_control.py test # Run full test suite
python scripts/test_exposure_control.py get-exposure # Get current exposure
python scripts/test_exposure_control.py set-exposure 10 # Set exposure to 10ms
python scripts/test_exposure_control.py status # Get pipeline status
```
fix(launch-ids): fix videocrop element error and enhance startup output
- Fix GstAddError caused by duplicate pipeline.add(videocrop) call
The videocrop element was being added to the pipeline twice: once
explicitly when crop was enabled, and again in the element linking loop.
Removed the duplicate add operation.
- Enhance startup configuration display
Display all configured parameters at startup in a formatted summary:
* Camera config file path
* Exposure time (ms)
* Framerate (Hz)
* Crop settings (pixels or disabled)
* Queue buffer size (if configured)
* Video stream destination (UDP host:port)
* Control server port (or disabled status)
* Complete pipeline description
The output is now formatted with separators and aligned labels for
better readability, making it easier to verify settings at startup.
```
- Update idsueyesrc exposure property to use milliseconds (per gst-inspect)
- Fix default exposure value from 0.016 to 10ms
- Update validation range to 1.0-1000.0ms in control server
- Correct all documentation and examples in UDP_CONTROL_PROTOCOL.md
- Update test_exposure_control.py to use millisecond values
Resolves unit mismatch between documented seconds and actual milliseconds
expected by the idsueyesrc GStreamer element.
- Added documentation for launch-ids.py (Python-based camera control)
- Added documentation for test_exposure_control.py (UDP control testing)
- Added documentation for visualize_line_realtime.py (real-time visualization)
- Merged UDP_CONTROL_PROTOCOL.md content into network_guide.md
- Includes architecture diagrams, command reference, client examples
- Complete end-to-end guide for camera control and monitoring
- Added UDP_CONTROL_PROTOCOL.md documenting the UDP control interface
- Added launch-ids.py for IDS camera control
- Added test_exposure_control.py for testing exposure settings
- Added udp_backup.reg for UDP configuration backup
- Added visualize_line_realtime.py for real-time visualization
- Updated .gitignore and ROLLINGSUM_GUIDE.md
- Removed ini/200fps-2456x4pix-cw.ini configuration file
- Add --record-fps parameter for independent recording frame rate control
- Separate display and recording buffers (display_buffer_obj, record_buffer_obj)
- Enable recording without display and vice versa
- Independent throttling for display and recording operations
- Improve code organization and cleanup handling
- Modified recv_raw_rolling.py to handle 2456x1 BGR line format
- Fixed display dimensions (2456 tall x 800 wide)
- Updated 200fps-2456x4pix-cw.ini to start at Y=500
- Added detailed single line transmission docs to network_guide.md
- Updated README.md with quick start example using videocrop
- Re-validate AOI configuration before starting video capture
- Fixes 'Invalid buffer size' error when using Start Y > 0
- Query current AOI and re-set it to force SDK internal state update
- Tested with Start Y=0 and Start Y=500 - both work correctly
- Replace cv2.rotate() with NumPy array indexing for 2x+ speedup
- Add --display-fps argument to throttle display refresh while capturing all UDP frames
- Add --save-mjpeg argument to record rolling display to MJPEG video
- Fix display throttling to capture all frames while only refreshing display at specified rate
- Performance: ~300 FPS no-display, ~100 FPS full display, 150-250+ FPS with throttling
- Replace cv2.rotate() with NumPy array indexing for 2x+ speedup
- Add --display-fps argument to throttle display refresh while capturing all UDP frames
- Add --save-mjpeg argument to record rolling display to MJPEG video
- Fix display throttling to capture all frames while only refreshing display at specified rate
- Performance: ~300 FPS no-display, ~100 FPS full display, 150-250+ FPS with throttling
- Fixed HEIGHT from 480 to 640 to match actual videotestsrc output
- Added DEBUG flag to control debug output visibility
- Added cv2.namedWindow() for proper window initialization
- Updated all Python script references in markdown files to scripts/ folder
- Updated network_guide.md with correct frame dimensions and Python receiver option
- Updated all commands in README.md and ROLLINGSUM_GUIDE.md to use PowerShell syntax
- Changed line continuation from backslash (\) to backtick ()
- Updated environment variable syntax to PowerShell format ()
- Merged DESIGN_ROLLINGSUM.md into ROLLINGSUM_GUIDE.md for comprehensive documentation
- Combined user guide with technical design details in single document
- Added table of contents and improved organization
- Update analyze_sma.py to save files to results/debug/
- Add timestamp to archived CSV and plot files
- Update .gitignore to exclude results/ directory
- Update ROLLINGSUM_GUIDE.md with new output locations
- Created build.ps1 to merge batch files with auto-copy to GST_PLUGIN_PATH
- Updated README.md to focus on IDS uEye and rollingsum plugins only
- Removed outdated batch files (build_idsueye_only.bat, build_idsueye_and_rollingsum.bat)
- Removed unused build files (set_paths_and_run_cmake.bat, CMakeLists_idsueye_only.txt)
- Updated .gitignore for build artifacts and plugin directory
- Implements GStreamer element that analyzes pixel columns
- Drops frames when column mean deviates from rolling baseline
- Configurable window size, column index, stride, and threshold
- Includes design documentation and build script
- Tested successfully with IDS uEye camera source
g_get_real_time() on Windows sometimes gives millisecond resolution.
Also grabbing framegrabber timestamp takes a non-insignificant amount of time,
so do it every second.
This also required changing how we read values, as FLIR uses little
endian. Timestamps are handled differently as well.
We're even more overdue for moving to properly parse the XML, just a
matter of if we'll use the GenApi reference implementation or something
else like Aravis.