MPEG TS Support

  • Hello,


    Are there any plans to implement support for RT Image objects encoded using the MPEG2MainProfile@MainLevel (1.2.840.10008.1.2.4.100) transfer syntax? I'm interested in storing / sending Varian TrueBeam cine images.


    Looking back through the forum I can see mention of MPEG support being explored a few years ago, but very little since. My understanding is it's only the image portion which uses "special" encoding whilst everything else is standard. I guess the first step is to be able to communicate and store the data - visualization is a different challenge!


    Best wishes,


    Andrew

  • Hi Andrew,


    the current assumption in conquest is that all data can be 'transcoded' by conquest from one syntax to another. With mpeg that would not be a good idea. So it is a rather fundamental change.


    Thus:
    one would need to add mpeg as acceptd syntax during negotation (simple)
    one would need to ignore incoming compression for mpeg images (simple)
    when negation an outgoing transfer syntax and a mpeg image is part of the set to be sent, mpeg would need to be added as syntax (more complex).
    one would need to ignore outgoing compression for mpeg images (simple)


    These things require some fairly major code changes. However, when I looked at it before I tried to add the coder/decoder for mpeg.


    If you are on linux, you could relatively easily try / help to add these. Compiling on windows is a bit more involved.


    Marcel

  • Hm,


    just looked a bit more: it is more complex because transfer syntax is not maintained in the database. I.e. to know if mpeg needs to be added in an outgoing data request, one would have to first read all the image headers. Alternatively one could always request mpeg outgoing, but that would mean that images must be skipped on the fly if mpeg was not accepted. Needs some more thought....


    Marcel

  • Hi Marcel,


    I'd be happy to have a go at trying to add this.


    I've managed to compile the code in the Github repository on Windows, then got it running with the GUI by swapping the files into a 1.4.17 distribution.


    Would you be able to give me access to the most recent code?


    Best wishes,


    Andrew

  • Hi Andrew,


    the latest source code is part of the release 1.4.19b zip. Yesterday I tested adding TransferSyntaxUID to the database at image level by modifying dicom.sql (which breaks database compatibility with existing databases), but the server than still seems to run correctly once the database is regenerated.


    You would need to add:


    if(!DDOPtr->GetVR(0x0002, 0x0010))
    {
    vr = new VR ( 0x0002, 0x0010, 0, FALSE );
    DDOPtr->Push(vr);
    }


    to every


    Retrieve :: SearchOn


    routine in dgate.cpp to make that any move will get the transferSyntax infomation. This is the same mechanism to get the private filename and device field. The actual move is in StandardRetrieveNKI :: Read in nkiqrsop.cpp. Compression and decompressing of images is centralized in recompress() in the same file.


    Please keep code changes to a minimum, localized and well documented and update the manual update history in the files. I will merge code changes through a file compare.


    thanks!


    Marcel

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!