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

How to implement additional transfer syntaxes? #3

Closed
ibaryshnikov opened this issue Aug 8, 2019 · 4 comments
Closed

How to implement additional transfer syntaxes? #3

ibaryshnikov opened this issue Aug 8, 2019 · 4 comments
Labels

Comments

@ibaryshnikov
Copy link
Contributor

ibaryshnikov commented Aug 8, 2019

Hi @Enet4 ! I'd like to implement additional transfer syntax in my local fork, in particular
JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1]) 1.2.840.10008.1.2.4.70
Can you give any advice about doint it? Even link to a good doc would be helpful, because at the moment I'm stuck with the question how do transfer syntaxes work together, for example is any of the JPEG transfer syntaxes a big endian or little endian?
I also would be happy to share these changes once you are ready to accept PRs

@Enet4
Copy link
Owner

Enet4 commented Aug 8, 2019

Hello!

I'm a bit surprised to find people already working on top of this project. My estimated plan for the time being is to launch the first release soon, hopefully this month. Afterwards, I intend to write a concrete roadmap for future developments, so as to also make way for having multiple contributors to the project.

Being able to add more transfer syntaxes is quite relevant, and I'll see what should be adapted in the currently existing crates to harness TS'es with some some form of data compression in an extendable fashion. Thank you for reporting!

@ibaryshnikov
Copy link
Contributor Author

I'm making a prototype. I had good experience working with this library, thank you for your work! This library already handles half of the files I need to open. To open another half I need either to use C++ library or to make some additions here. As I'm compiling to WebAssembly, the task becomes more tricky.

@Enet4
Copy link
Owner

Enet4 commented Sep 2, 2019

I have yet to make a more extensive documentation, but right now the library as is should provide partial support for any standard transfer syntaxes without data set deflating. That is, one should be able to load DICOM objects from files with that transfer syntax, but a proper abstraction for pixel data (as well as similar kinds of data such as waveform) is yet to be designed and implemented. The pixel data can still be retrieved in its encapsulated form and manipulated using other tools, if this happens to be a serious blocker.

In the future, full support can be added by other crates via the inventory registry pattern. The steps will be: (1) implement the necessary encoding/decoding adapters; (2) create a TransferSyntax instance encompassing the adapters; (3) submit it using the submit_transfer_syntax macro.

@Enet4 Enet4 added the question label Sep 13, 2019
@ibaryshnikov
Copy link
Contributor Author

This is solved by now, since there is a big selection of built-in transfer syntaxes, sumbit_transfer_syntax macro, and even the ability to provide an external transfer syntax registry, which was introduced in #17 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants