Conversation
…ment - Implemented `PinDataType` enum supporting Image, Float, Vector2-4, Color, Integer, Boolean, String, and Array types - Added `InputPin` and `OutputPin` structs with data types, connections, and value management - Implemented `Parameter` struct with animatable properties, min/max constraints, and default values - Added `ParameterValue` enum for type-safe parameter storage - Implemented `NodeType` enum covering Input, Output,
- Added node_graph module declaration - Re-exported core node graph types: Node, Graph, Connection, InputPin, OutputPin, Parameter, ParameterValue, PinDataType - Re-exported node type enums: NodeType, BlendMode, KeyType, GeneratorType, ShapeType, FilterType, AdjustmentType
- Add uuid 1.0 with v4 and serde features for unique identifier generation - Add aether_types as internal dependency for shared type definitions
- Implemented `ConnectionValidator` for validating node connections: - Type compatibility checking with implicit conversions (Float→Vector, Vector↔Color, Array element types) - Self-connection prevention - Input pin single-connection enforcement - Pin existence verification - Implemented `NodeValidator` for node-level validation: - Required input connection checking - Parameter type-value matching validation
…aphs - Implemented `ExecutionOrderCalculator` for topological sorting of node graphs: - `calculate_order` for full graph execution ordering - `calculate_order_from_nodes` for partial graph execution from specific start nodes - Adjacency list construction with disabled connection filtering - Kahn's algorithm-based topological sort with cycle detection - Implemented `ExecutionOrderManager` for cached execution order management
…ompositing pipeline - Implemented `CoreNodes` factory with node creation methods - Added `InputNode` for media source input: - Frame caching and generation - Media path configuration - Dummy frame generation with UUID-based image references - Added `OutputNode` for final result output: - Input passthrough from connected nodes - Final output value setting - Added `TransformNode` for position, scale, rotation:
…ecution context - Implemented `NodeError` enum for comprehensive error handling (node not found, connection errors, type mismatches, circular dependencies, execution failures) - Added `NodeExecutor` trait defining node execution interface with validation and input/output management - Implemented `ExecutionContext` for frame-based execution state: - Frame, time, frame rate, and resolution tracking - Input/output value management
…ng, and performance monitoring - Implemented `NodeExecutorEngine` for graph execution with validation and execution order management - Added `ExecutionConfig` with parallel execution, caching, GPU acceleration, and worker thread settings - Implemented `PerformanceMetrics` tracking frame time, FPS, cache hit rate, memory usage, and execution stats - Added `FrameCache` with LRU eviction for caching node results per frame - Implemented sequential
…PU detection - Added `num_cpus` dependency for automatic CPU count detection - Enhanced `execute_parallel` to accept graph parameter for dependency analysis - Implemented proper dependency checking in `check_dependencies_executed`: - Analyzes input pin connections to determine node dependencies - Verifies all upstream nodes are executed before allowing parallel execution - Returns true only when all dependencies are satisfied or
… controls - Implemented `ColorCorrectionNode` for image color adjustments with 10 parameters: - Basic adjustments: brightness (-1 to 1), contrast (0 to 2), saturation (0 to 2), gamma (0.1 to 3) - White balance: temperature (2000-12000K) and tint (-100 to 100) - Advanced controls: hue shift (-180 to 180°), lift/gamma/gain for shadow/midtone/highlight control - Added `temperature_to_rgb` method for black body radiation color
…ersion and comprehensive processing pipeline - Added `CorrectedImage` struct to store color correction metadata (original/corrected IDs, all adjustment parameters) - Implemented `apply_pixel_correction` with 5-stage processing pipeline: - White balance (temperature/tint) - Lift/gamma/gain adjustments - Brightness/contrast - Gamma correction - Hue/saturation adjustments - Added RGB↔HSL color space conversion methods
…on with GPU simulation - Added `process_image_texture` method to handle full texture processing workflow (load → process → store) - Implemented `load_texture_data` to simulate GPU texture loading with 1920x1080 gradient test pattern - Implemented `process_pixel_data` to apply color correction pipeline to all pixels with progress logging - Implemented `store_texture_data` to simulate GPU upload with statistical analysis (avg RGB
…dling, and comprehensive validation - Added `TextureInfo` struct to store texture metadata (ID, dimensions, format, internal format, pixel type, mipmap info) - Added `TextureFormat` enum for texture formats (RGBA8, RGB8, R8) - Added `TextureInternalFormat` enum for internal GPU formats (8/16/32-bit variants, float support) - Added `PixelType` enum for pixel data types (UnsignedByte, Byte, UnsignedShort, Short, Float) - Refactored `load_texture_data` into modular pipeline: - `bind_texture` to
…ort and specialized implementations - Added `InputNode` base implementation with frame caching, media path configuration, and dummy frame generation - Added `MediaType` enum for video, image, audio, and sequence support - Implemented `VideoInputNode` with frame rate and duration management - Implemented `ImageInputNode` for static image handling - Implemented `SequenceInputNode` with pattern matching and frame offset calculation
…coders and metadata tracking - Added metadata structs for video frames, images, and audio (dimensions, codec, format, bit depth, sample rate, timestamps) - Added `sequence_pattern` field to `InputNode` for image sequence filename generation - Refactored `generate_frame` to use new `load_media_frame` pipeline with caching - Implemented format-specific loading methods: - `load_video_frame` with FFmpeg-style frame seeking and dec
…ive frame processing and error handling - Added FFmpeg-related structs: `VideoContext`, `VideoStream`, `CodecContext`, `DecodedFrame`, `RGBFrame` for video metadata and frame data - Refactored `load_video_frame` to use new `decode_video_frame_with_ffmpeg` pipeline with proper error handling - Implemented 7-stage FFmpeg decoding workflow: - `open_video_file` to initialize format context and read stream info - `find_video_stream` to locate video
…ith comprehensive format detection and stream analysis - Replaced simulated FFmpeg calls with actual ffmpeg-next API usage in video pipeline - Implemented real `open_video_file` using `format::Input::open()` and `find_stream_info()` - Enhanced `find_video_stream` with `av_find_best_stream()` equivalent and codec validation - Added comprehensive video codec detection (h264/h265/hevc/mpeg/vp9/av1/prores/dnxhd)
…ion, scale, rotation, and anchor point controls - Added `TransformNode` with 2D transformation support (position, scale, rotation, anchor point) - Implemented transformation matrix generation with proper scale/rotation/translation composition - Added `Transform2DNode` specialized wrapper for 2D transformations - Added `PositionNode` for position-only transforms (no scale/rotation) - Added `ScaleNode` for scale-only transforms with
…pecific encoding and quality controls - Added `OutputNode` with 6 output format support (Raw, PNG/JPEG/EXR sequences, MP4, ProRes) - Implemented `QualitySettings` with JPEG quality (1-100), PNG compression (0-9), video bitrate, and color depth (8/16/32) - Added `process_output` method with format-specific processing pipeline for each output type - Implemented `VideoOutputNode` specialized wrapper with encoder settings (codec, profile
…es and multi-input compositing support - Added `MergeNode` base implementation with 17 blend mode support (normal, add, subtract, multiply, screen, overlay, soft/hard light, color dodge/burn, darken, lighten, difference, exclusion, hue, saturation, color, luminosity) - Implemented opacity control (0.0-1.0) with clamping and blend operation pipeline - Added `apply_blend` method for two-input blending with passthrough for None inputs
…d pin creation utilities - Added `BasicNodeFactory` with `create_basic_node` method supporting 6 node types (Input, Output, Merge, Transform, ColorCorrection, Blur) - Implemented `register_basic_nodes` to register all basic node types with node registry - Added `get_supported_types` to enumerate all supported basic node types - Implemented `create_basic_node_with_pins` helper for standard node creation with configurable input/output pin
…es and configurable kernel generation - Added `BlurNode` with 5 blur algorithm support (Gaussian, Box, Motion, Radial, Zoom) - Implemented `BlurResult` metadata tracking (original/blurred IDs, blur type, radius, kernel size, angle, iterations) - Added blur radius control (0.0-100.0) with clamping and iteration support (1-10) - Implemented directional blur with angle control (0-360°) for motion blur - Added kernel generation methods
…PU texture loading/upload pipeline - Replaced simulated blend with `perform_real_blend` method calling actual blend algorithms - Implemented 6 blend mode algorithms (normal, multiply, screen, overlay, add, subtract) with per-pixel processing - Added `load_texture_data` to simulate GPU memory reads with texture dimensions and channel info - Added `upload_blended_texture` to simulate GPU texture creation and data upload - Implemented opacity-based blending
…G/JPEG/MP4/ProRes/EXR support and GPU texture loading - Replaced simulated output processing with real encoding methods for all 5 output formats - Implemented format-specific encoding methods: `encode_to_png`, `encode_to_jpeg`, `encode_to_mp4`, `encode_to_prores`, `encode_to_exr` - Added `load_texture_data` to simulate GPU memory reads with texture dimensions and channel info - Implemented PNG encoding with header generation and chunk
…prehensive blur variant exports - Added public re-exports for all basic node types including blur variants (GaussianBlurNode, MotionBlurNode, RadialBlurNode) - Added NodeType::Blur case to `create_node` method in CoreNodeFactory - Registered BlurNode type in `register_core_nodes` with factory closure - Exported input/output/merge/transform/color correction node variants for external use
…eful missing frame handling and GPU texture upload - Replaced simulated sequence frame loading with `decode_sequence_frame_with_ffmpeg` using real FFmpeg API - Implemented image decoding pipeline: open file with `format::Input::open()`, find stream info, locate best video stream, extract codec parameters - Added `create_default_sequence_frame` to generate checkerboard pattern (128/64 gray) for missing sequence files
…node types and functionality - Added `basic` module to nodes module structure - Added public re-export of basic module contents alongside core, validation, and execution_order modules
- Added lucide-react ^1.14.0 to project dependencies
…on, and deletion - Added ConnectionComponent for rendering node graph connections with curved Bezier paths - Implemented connection path calculation using source/target node positions and port positions with control point offsets - Added connection selection with click handling and visual feedback (blue highlight, increased stroke width) - Implemented delete button overlay on selected connections with red circle and X icon
…controls, and connection preview - Added ConnectionLine component for rendering curved Bezier connection paths with preview mode support (dashed blue line) - Added NodeComponent with drag-and-drop, parameter editing, color-coded node types, and delete button - Added NodeGraphCanvas with viewport pan/zoom, grid background, node dragging with offset tracking, and connection preview overlay - Added NodeGraphContext with React Context
… and timeline components - Added PreviewCanvas with image rendering, zoom/pan transforms, loading states, grid overlay, safe area guides, and dimension/zoom/playback indicators - Added PreviewContext with React Context for preview state management, refs (preview/video/canvas), and event handlers for playback, volume, zoom, pan, fullscreen, and quality - Added PreviewControls with play/pause/skip buttons, draggable progress bar
…ponents with drag-and-drop, trimming, and keyboard shortcuts - Added TimelineCanvas with clip dragging, multi-track support, horizontal auto-scroll, hover/selection states, and keyboard shortcuts (Delete/Backspace, Space, M/T for modes, Ctrl+S for split) - Added TimelineClip with trim handles (start/end edges), drag-to-move, visual feedback (opacity/border/shadow), type-specific icons (Video/Music/Image), audio waveform preview
…atistics tracking - Added PreRollBuffer for managing frame cache with VecDeque storage, RwLock sync, and configurable size limits - Implemented frame caching with position-based lookup, tolerance matching, and LRU eviction when max_size exceeded - Added buffer initialization, add_frame, get_frame with cache hit/miss tracking and access count statistics - Implemented pre_fill with bidirectional frame generation around target position
…k to mock implementation - Changed Tauri import from '@tauri-apps/api/tauri' to '@tauri-apps/api/core' - Added get_graph_info invoke call in initializeGraph with graph state loading from backend - Implemented create_node backend call with position/name parameters, fallback to mock on error - Implemented delete_node backend call with local state sync, fallback to local update on error - Added connect_nodes backend call for connection
…ntrol, seeking, and frame loading with fallback to mock implementation - Added Tauri invoke import from '@tauri-apps/api/core' - Implemented preview_playback_control backend call in handlePlay/handleStop with play/pause/stop actions, fallback to local state on error - Implemented preview_seek backend call in handleSkipBack/handleSkipForward with time parameter, fallback to local time update on error - Implemented preview_get_frame backend call in loadFrame with timestamp parameter, fallback to mock frame generation on error
…nterface - Added handleExecuteGraph method to NodeGraphContextType interface for triggering graph execution with Promise<any> return type
…perations with fallback to local state - Added Tauri invoke import from '@tauri-apps/api/core' - Implemented get_timeline_info backend call in initializeTimeline with tracks/duration/currentTime loading, fallback to empty timeline on error - Implemented timeline_playback_control backend call in handlePlay/handleStop with play/pause/stop actions, fallback to local state on error - Implemented timeline_seek backend call in handleSkipBack/handleSkipForward
… professional color grading - Added ColorScopeData container with waveform/vectorscope/histogram data, metadata, clear/size_bytes methods - Added WaveformData with luma/RGB parade channels, channel_data/set_pixel accessors, and WaveformConfig with mode/scale/filtering settings - Added VectorscopeData with UV point plotting, intensity grid for density visualization, add_point/get_intensity methods, and VectorscopePoint with RGB
- Added color module with scopes submodule for color grading and analysis types - Re-exported ColorScopeData, WaveformData, VectorscopeData, HistogramData, ScopeMetadata, ScopeResolution, WaveformChannel, HistogramChannel, ColorSpace, VideoRange, WaveformConfig, VectorscopeConfig, HistogramConfig, and ScopeStats from scopes module - Added color module to lib.rs with scope type re-exports for convenient access
… color targets, and real-time analysis - Added VectorscopeProcessor with UV coordinate plotting, intensity grid caching, RGB-to-YUV conversion matrices, and configurable resolution - Implemented process_frame with pixel-by-pixel RGB-to-UV conversion, intensity accumulation, and statistics tracking - Added generate_image with intensity grid rendering, color gradient mapping (blue→green→yellow→red), target overlay drawing, and center
…s, multiple display modes, and real-time statistics - Added HistogramProcessor with RGB/luma channel histograms, configurable resolution, color space support (Rec709/601/2020), and processing buffers - Implemented process_frame with pixel-by-pixel RGB/luma sampling, bin accumulation, and statistics tracking - Added generate_image with four display modes: RGB overlay, luma-only, individual channels (side-by-side), and parade
…ure with processor, targets, rendering, and analysis submodules - Converted monolithic vectorscope.rs (663 lines) into module structure with processor/targets/rendering/analysis submodules - Moved VectorscopeProcessor implementation to processor submodule - Extracted target overlay logic (draw_target_overlays, draw_target_marker, get_target_color/uv) to targets submodule - Moved image generation and rendering (generate_image, intensity_to_color, draw_cross
…with processor, rendering, and analysis submodules - Converted monolithic histogram.rs (776 lines) into module structure with processor/rendering/analysis submodules - Moved HistogramProcessor implementation to processor submodule - Extracted histogram rendering logic (draw_rgb_histogram, draw_luma_histogram, draw_individual_histograms, draw_parade_histograms, draw_grid) to rendering submodule - Moved HistogramAnalyzer and analysis
…olor conversion, rendering, and statistics utilities - Added BaseScopeProcessor with shared stats tracking, processing buffers, and color converter for all scope types - Implemented ProcessingBuffers with RGB/luma sample storage, capacity management, and buffer clearing - Added ColorConverter with RGB-to-YUV/luma conversion, configurable color space (Rec709/601/2020), and conversion matrices - Implemented ImageRenderer with background
…tput transforms and matrix operations - Added InputTransform enum with Rec709/Rec2020/sRGB/Raw to ACES conversion types - Added OutputTransform enum with ACES to Rec709/Rec2020/sRGB/HDR10 conversion types - Implemented TransformManager with input/output transform matrix storage, initialization, and transform application - Added apply_input_transform/apply_output_transform with matrix lookup and RGB conversion
…enColorIO integration, and look management - Added AcesProcessor with config/color_space/video_range, OpenColorIO config, TransformManager, and LookManager - Implemented to_aces/from_aces with pixel-by-pixel gamma decode/encode, input/output transform application, and ACES conversion - Added apply_look for look modification to ACES images with pixel transformation - Implemented process_pipeline with complete input→ACES→look→output workflow - Added gamma_decode/gamma_encode with Rec709
…ks and look manager - Added LookTransform with saturation/contrast/pivot/color_matrix, apply method with matrix→contrast→saturation pipeline, and preset looks (neutral/teal_orange/vintage/dramatic) - Implemented LookManager with look storage, initialize_default_looks, get_look/add_look/remove_look methods, and available looks listing - Added apply with RGB normalization, color matrix multiplication, contrast adjustment around
… correction, and OpenColorIO integration - Added aces module with processor/transforms/looks/config/gamma submodules and type re-exports - Added AcesConfig with OpenColorIO toggle, config path, working color space, default input/output transforms, and builder methods - Implemented gamma module with rec709/rec2020/sRGB gamma decode/encode functions and roundtrip tests - Added OpenColorIO dependencies (ocio-sys 0.3, ocio 0.3) to Cargo.toml for professional color pipeline
…and display management for professional HDR workflows - Added HdrProcessor with config/display_manager/tone_mapper/gamut_mapper, process_hdr_image with tone mapping→gamut mapping→SDR conversion pipeline, and sdr_to_hdr/hdr_to_sdr conversion methods - Implemented HdrImage with width/height/data/color_primaries/transfer_function/max_nits and HdrPixel with RGB nits values - Added HdrDisplayManager with display profiles (SDR/HDR10/D
…nt classification, and issue detection - Added HdrAnalyzer with analyze_content for max/avg nits, dynamic range, peak percentage calculation, and content type classification - Implemented HdrContentType enum (SdrUpscaled/LimitedHdr/EnhancedHdr/TrueHdr) with classify_content_type based on nit thresholds - Added calculate_quality_metrics with contrast ratio, saturation averaging, highlight/shadow preservation, and overall quality scoring
…ing, and gamut mapping configs - Added HdrConfig with display_config/tone_mapping_config/gamut_mapping_config and builder methods (with_display_config/with_tone_mapping_config/with_gamut_mapping_config) - Implemented HdrDisplayConfig with default_display/max_display_nits/min_display_nits/peak_luminance and DolbyVision defaults (10000/0.001/1000 nits) - Added ToneMappingConfig with algorithm/shoulder_strength/mid_tone/highlight_strength/contrast and Reinhard defaults
…rd/Filmic/ACES/Hable/Drago) and characteristics system - Added ToneMappingAlgorithm enum with Reinhard/Filmic/Aces/Hable/Drago variants - Implemented ToneMapper with apply_tone_mapping for HDR→SDR conversion using selected algorithm - Added five tone mapping implementations: reinhard_tone_map with 1/(1+x) curve, filmic_tone_map with shoulder/mid-tone/highlight parameters, aces_tone_map with ACES film curve, hable_tone_map
…rocessor, display, tone mapping, gamut mapping, and analysis submodules - Converted monolithic hdr.rs (893 lines) into module structure with processor/display/tone_mapping/gamut_mapping/analysis/types submodules - Moved HdrProcessor implementation to processor submodule - Extracted HdrDisplayManager and display profile management to display submodule - Moved ToneMapper with Reinhard/Filmic/ACES/Hable/Drago algorithms to tone_mapping submod
…be/3DL/Look format I/O, and trilinear interpolation - Added LutProcessor with LUT storage, active LUT management, and configuration system - Implemented load_lut with Cube/3DL/Look format parsing, file extension detection, and LUT data extraction - Added save_lut with Cube/3DL/Look format export and format-specific serialization - Implemented apply_lut with trilinear interpolation, 8-corner sampling, and RGB transformation pipeline
…upport, and batch export functionality - Added LutSaver with save_lut for Cube/3DL/Look format file export and save_lut_to_memory for in-memory serialization - Implemented save_cube_file/save_3dl_file/save_look_file with format-specific serialization (Cube: TITLE/LUT_3D_SIZE/RGB data, 3DL: input/output RGB pairs, Look: XML structure) - Added export_lut_with_metadata with header comments for Cube/3DL and XML comments for Look format - Implemented batch_export for multi
…at types, and color correction - Added LutData with name/size/format/data, generate_identity_lut for RGB cube generation, get_value/set_value for coordinate-based access, and validate for data integrity checks - Implemented LutFormat enum (Cube/ThreeDL/Look) with extension/description methods and from_extension parser - Added LutConfig with interpolation_quality/color_space/clamp_output and builder methods - Implemented InterpolationQuality enum
…processor, loader, saver, and types submodules - Converted monolithic luts.rs (768 lines) into module structure with processor/loader/saver/types submodules - Moved LutProcessor implementation to processor submodule with apply_lut/set_active_lut/create_identity_lut/create_color_correction_lut methods - Extracted LutLoader with load_lut/load_cube_file/load_3dl_file/load_look_file to loader submodule - Moved LutSaver with save_lut/save_cube_file/save_3dl_file/save_look_file to saver submodule - Extracted Lut
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.