areaDetector / ADCore

The home of the core components of the EPICS areaDetector software. It includes base classes for drivers and code for all of the standard plugins.
https://areadetector.github.io/master/index.html
Other
20 stars 65 forks source link

adding video compression (h264) #499

Open bsobhani opened 7 months ago

bsobhani commented 7 months ago

ADCore changes for https://github.com/areaDetector/ADSupport/pull/44

bsobhani commented 4 months ago

Erico, thank you for the feedback. I have responded to some of your comments. When I have time I will take a more thorough look at the pull request and probably make some additional commits.

bsobhani commented 4 months ago

I did some testing and was able to confirm a couple of things: 1) If I create a mutex to prevent video compression parameters from being written while compressing then I can safely leave H264_compress unlocked in ADCore. 2) I tried running two video streams in the same IOC and confirm there were issues - if I make each instance of NDPluginCodec have its own video compression context pointer and pass this pointer to the video compression functions then the issues seem to go away.

I have made changes locally that seem to resolve these things, but not ready to push yet. Next week I should have some more time to work on this and then I will push my changes.

bsobhani commented 3 months ago

I have pushed changes which fix those two major issues. I plan to clean some things up and address some of the other smaller issues later.

Also, I seem to have done something to mutilate something in this pull request. All I was trying to do was fix a typo in my email address for a single commit. But in the process it seems to have changed the hashes of all the commits in the repo, which I think may be why it thinks there are 994 new commits. I will think about what to do about this.

Edit: I believe I have unmutilated the pull request. I will work on the other issues next (e.g. remove the use of the LZ4 bound function which creates a non-useful dependency on the LZ4 plugin, and look into framerate/bitrate/timebase), and will comment when I am finished.