Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

G-API: Introduce a Queue Source #24178

Merged
merged 5 commits into from Sep 4, 2023
Merged

Conversation

dmatveev
Copy link
Contributor

@dmatveev dmatveev commented Aug 18, 2023

  • Added a new IStreamSource class: in fact, a wrapper over a concurrent queue;
  • Added minimal example on how it can be used;
  • Extended IStreamSource with optional "halt" interface to break the blocking calls in the emitter threads when required to stop.
  • Introduced a QueueInput class which allows to pass the whole graph's input vector at once. In fact it is a thin wrapper atop of individual Queue Sources.

There is a hidden trap found with our type system as described in https://github.com/orgs/g-api-org/discussions/2

While it works even in this form, it should be addressed somewhere in the 5.0 timeframe.

Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

  • I agree to contribute to the project under Apache 2 License.
  • To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake

dmatveev and others added 5 commits August 18, 2023 23:32
- Added a new IStreamSource class: in fact, a wrapper over a concurrent
  queue;
- Added minimal example on how it can be used;
- Extended IStreamSource with optional "halt" interface to break the
  blocking calls in the emitter threads when required to stop.
- Fixed compilation issues on Linux;
- Moved timestamping into the push() context (user context) not pull() (emitter context)
Now the whole input vector can be pushed to a Streaming compiled in a
single call
Copy link
Contributor

@TolyaTalamanov TolyaTalamanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great, LTGM 👍
Thank you!

@dmatveev dmatveev added this to the 4.9.0 milestone Aug 22, 2023
@dmatveev dmatveev self-assigned this Aug 22, 2023
@dmatveev dmatveev marked this pull request as ready for review August 22, 2023 13:42
@dmatveev
Copy link
Contributor Author

@asmorkalov can you please merge this one?

@asmorkalov asmorkalov merged commit d19fc12 into opencv:4.x Sep 4, 2023
23 checks passed
@dmatveev
Copy link
Contributor Author

dmatveev commented Sep 6, 2023

Wow, thanks!

@asmorkalov asmorkalov mentioned this pull request Sep 11, 2023
thewoz pushed a commit to thewoz/opencv that referenced this pull request Jan 4, 2024
G-API: Introduce a Queue Source opencv#24178

- Added a new IStreamSource class: in fact, a wrapper over a concurrent queue;
- Added minimal example on how it can be used;
- Extended IStreamSource with optional "halt" interface to break the blocking calls in the emitter threads when required to stop.
- Introduced a QueueInput class which allows to pass the whole graph's input vector at once. In fact it is a thin wrapper atop of individual Queue Sources.

There is a hidden trap found with our type system as described in https://github.com/orgs/g-api-org/discussions/2

While it works even in this form, it should be addressed somewhere in the 5.0 timeframe.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants