Mercurial > hg > orthanc
comparison OrthancServer/Sources/ServerContext.cpp @ 5363:3c8286e5d07b multiple-jpeg-decoders
wip: try to add a jpeg decoder without colorspace conversion: not working now
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 11 Jul 2023 10:25:58 +0200 |
parents | 566e8d32bd3a |
children |
comparison
equal
deleted
inserted
replaced
5360:165b67c02927 | 5363:3c8286e5d07b |
---|---|
861 | 861 |
862 IDicomTranscoder::DicomImage source; | 862 IDicomTranscoder::DicomImage source; |
863 source.SetExternalBuffer(dicom->GetBufferData(), dicom->GetBufferSize()); | 863 source.SetExternalBuffer(dicom->GetBufferData(), dicom->GetBufferSize()); |
864 | 864 |
865 IDicomTranscoder::DicomImage transcoded; | 865 IDicomTranscoder::DicomImage transcoded; |
866 if (Transcode(transcoded, source, syntaxes, true /* allow new SOP instance UID */)) | 866 if (Transcode(transcoded, source, syntaxes, true /* allow new SOP instance UID */, true /* enableColorMapConversion*/)) |
867 { | 867 { |
868 std::unique_ptr<ParsedDicomFile> tmp(transcoded.ReleaseAsParsedDicomFile()); | 868 std::unique_ptr<ParsedDicomFile> tmp(transcoded.ReleaseAsParsedDicomFile()); |
869 | 869 |
870 std::unique_ptr<DicomInstanceToStore> toStore(DicomInstanceToStore::CreateFromParsedDicomFile(*tmp)); | 870 std::unique_ptr<DicomInstanceToStore> toStore(DicomInstanceToStore::CreateFromParsedDicomFile(*tmp)); |
871 toStore->SetOrigin(dicom->GetOrigin()); | 871 toStore->SetOrigin(dicom->GetOrigin()); |
1922 | 1922 |
1923 | 1923 |
1924 bool ServerContext::Transcode(DicomImage& target, | 1924 bool ServerContext::Transcode(DicomImage& target, |
1925 DicomImage& source /* in, "GetParsed()" possibly modified */, | 1925 DicomImage& source /* in, "GetParsed()" possibly modified */, |
1926 const std::set<DicomTransferSyntax>& allowedSyntaxes, | 1926 const std::set<DicomTransferSyntax>& allowedSyntaxes, |
1927 bool allowNewSopInstanceUid) | 1927 bool allowNewSopInstanceUid, |
1928 bool enableColorMapConversion) | |
1928 { | 1929 { |
1929 if (builtinDecoderTranscoderOrder_ == BuiltinDecoderTranscoderOrder_Before) | 1930 if (builtinDecoderTranscoderOrder_ == BuiltinDecoderTranscoderOrder_Before) |
1930 { | 1931 { |
1931 if (dcmtkTranscoder_->Transcode(target, source, allowedSyntaxes, allowNewSopInstanceUid)) | 1932 if (dcmtkTranscoder_->Transcode(target, source, allowedSyntaxes, allowNewSopInstanceUid, enableColorMapConversion)) |
1932 { | 1933 { |
1933 return true; | 1934 return true; |
1934 } | 1935 } |
1935 } | 1936 } |
1936 | 1937 |
1937 #if ORTHANC_ENABLE_PLUGINS == 1 | 1938 #if ORTHANC_ENABLE_PLUGINS == 1 |
1938 if (HasPlugins() && | 1939 if (HasPlugins() && |
1939 GetPlugins().HasCustomTranscoder()) | 1940 GetPlugins().HasCustomTranscoder()) |
1940 { | 1941 { |
1941 if (GetPlugins().Transcode(target, source, allowedSyntaxes, allowNewSopInstanceUid)) | 1942 if (GetPlugins().Transcode(target, source, allowedSyntaxes, allowNewSopInstanceUid, enableColorMapConversion)) |
1942 { | 1943 { |
1943 return true; | 1944 return true; |
1944 } | 1945 } |
1945 else if (builtinDecoderTranscoderOrder_ == BuiltinDecoderTranscoderOrder_After) | 1946 else if (builtinDecoderTranscoderOrder_ == BuiltinDecoderTranscoderOrder_After) |
1946 { | 1947 { |
1950 } | 1951 } |
1951 #endif | 1952 #endif |
1952 | 1953 |
1953 if (builtinDecoderTranscoderOrder_ == BuiltinDecoderTranscoderOrder_After) | 1954 if (builtinDecoderTranscoderOrder_ == BuiltinDecoderTranscoderOrder_After) |
1954 { | 1955 { |
1955 return dcmtkTranscoder_->Transcode(target, source, allowedSyntaxes, allowNewSopInstanceUid); | 1956 return dcmtkTranscoder_->Transcode(target, source, allowedSyntaxes, allowNewSopInstanceUid, enableColorMapConversion); |
1956 } | 1957 } |
1957 else | 1958 else |
1958 { | 1959 { |
1959 return false; | 1960 return false; |
1960 } | 1961 } |