Sascha-L / WPF-MediaKit

Microsoft Public License
366 stars 116 forks source link

select the maximal available resolution using a dependecy property #85

Open rgherzog opened 6 years ago

rgherzog commented 6 years ago

Specifying the desired width and height only works if the specified values correspond with available resolutions on the selected camera device. If the camera device doesn't support the specified desired width and height "any" resolution is taken; certainly not always the heighest availabe resolution.

This pull request provides a solution that selectes the highest available resolution. This option can be activated using a DependecyProperty in the VideoCaptureElement.

I just used a code-snipped from stackoverflow (https://stackoverflow.com/questions/7497559/how-to-list-camera-available-video-resolution) and included it in VideoCaptureElement. It would bossibly better fit into the VideoCapturePlayer class where it gets used in the SetVideoCaptureParameters method. But this method doesn't work there; the determined sourceFilter remains null.

Unfortunately I know too little about Direct3D to provide a proper solution; but still, I wanted to share my changes with you.

sekulicb commented 4 years ago

Does not work. When I loop through the result of all resolutions, max value is far far from what the camera supports. For example testing it on tables I get 1280x720 as max value, but the camera goes up to 2560x1440. Also I noticed a significant drop in quality compared to OpenCv wrappers. While images saved are in KB (200-300), with other libraries using same resolution brings about 1.5MB size picture.