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 }