* wip
* wip
* Organize
* Remove unnecessary change in camera_darwin.go filtering
* wip
* Make observer stop safe during startup
* wip IsAvailable impl
* Fix non-darwin builds
* Lock bg loop to main thread and add comment
* Remove fmt prints
* Simplify isAvailable; Add timeout for Read darwin
* Match comment with code
* Change to singleton pattern; Add clearer safer state machine states; Change language from Stop to Destroy; Add new error for when observer is unavailable;
* Add stubs for linux
* Move cancel() up so its not dead code sometimes
* Add stubs for Windows too
* Remove StopObserver usage
* Add camera tests
* Add device observer tests
* Fix multiple destroy calls bug; Call setup in start
* Improve isAvailable
* Improve string handling in device observer c
* Add error handling in example
* Add comment about setup vs start
* Rename and organize device observer darwin
* Explicitly case initial state for setup
* Fix potential destroy goroutine leak; Use only modern build tag; Return err not nil for stubs; Improve comments
* Close startDone channel on device observer stop not wait
* Add VPX improvements from pion-mediadevices
- Add vpx_image.go: VpxImage wrapper for vpx_image_t with convenient methods
- Move BitrateTracker to vpx package: More specific to VPX codec usage
- Add bitrate_tracker_test.go: Test coverage for VPX-specific bitrate tracking
- Remove generic codec-level BitrateTracker: Replaced by VPX-specific version
These changes improve VPX codec functionality and organization by:
1. Adding image handling utilities specific to VPX
2. Providing better bitrate tracking for VPX codecs
3. Improving code organization by moving VPX-specific code to VPX package
* Revert bitrate tracker changes
- Remove vpx-specific bitrate tracker files
- Restore original codec-level bitrate tracker and test
- Keep only the vpx_image.go addition from pion-mediadevices
* Add comprehensive unit tests for VpxImage
- Add vpx_image_test.go with full test coverage for VpxImage wrapper
- Test interface compliance and constructor behavior
- Test nil pointer handling (documents expected panic behavior)
- Test common video format constants and plane indices
- All tests pass and integrate with existing VPX test suite
This improves test coverage for the new VpxImage utility from pion-mediadevices.
* Add comprehensive unit tests for VpxImage
- Add vpx_image_test.go with full test coverage for VpxImage wrapper
- Test interface compliance and constructor behavior
- Test nil pointer handling (documents expected panic behavior)
- Test common video format constants and plane indices
- All tests pass and integrate with existing VPX test suite
This improves test coverage for the new VpxImage utility from pion-mediadevices.
* Add vp8 decoder and dynamic vp8 decoding
* Add QPController
* change parameters into const
* move decoder into another PR
* use explicit parameter name
Fix#633
Here the signalCh could have been closed by another goroutine, we should
use returned signalCh from `track.removeActivePeerConnection()` to close
the channel.
Actually, I don't know why we need to close the signalCh, we're using it
to send over the doneCh, why ever close it?