this time I set
EXTRASAMPLE_UNASSALPHA; because associated alpha image
was too dark, IMO, compared to what I saw in compositor window
diff --git a/cinelerra-5.1/cinelerra/filetiff.C b/cinelerra-5.1/cinelerra/filetiff.C
index cde59a0..ea2247c 100644
--- a/cinelerra-5.1/cinelerra/filetiff.C
+++ b/cinelerra-5.1/cinelerra/filetiff.C
@@ -109,6 +109,12 @@ const char* FileTIFF::compression_to_str(int value)
case FileTIFF::PACK_BITS: return "Pack Bits"; break;
case FileTIFF::DEFLATE: return "Deflate"; break;
case FileTIFF::JPEG: return "JPEG"; break;
+ case FileTIFF::PIXARFILM: return "PIXARFILM"; break;
+ case FileTIFF::PIXARLOG: return "PIXARLOG"; break;
+ case FileTIFF::JP2000: return "JP2000"; break;
+ case FileTIFF::SGILOG: return "SGILOG"; break;
+ case FileTIFF::LZMA: return "LZMA"; break;
+ case FileTIFF::ADOBE_DEFLATE: return "Adobe Deflate"; break;
default:
return "None";
break;
@@ -474,17 +480,39 @@ int FileTIFF::write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit)
case FileTIFF::JPEG:
compression = COMPRESSION_JPEG;
break;
+ case FileTIFF::PIXARFILM:
+ compression = COMPRESSION_PIXARFILM;
+ break;
+ case FileTIFF::PIXARLOG:
+ compression = COMPRESSION_PIXARLOG;
+ break;
+ case FileTIFF::JP2000:
+ compression = COMPRESSION_JP2000;
+ break;
+ case FileTIFF::LZMA:
+ compression = COMPRESSION_LZMA;
+ break;
+ case FileTIFF::SGILOG:
+ compression = COMPRESSION_SGILOG;
+ break;
+ case FileTIFF::ADOBE_DEFLATE:
+ compression = ADOBE_DEFLATE;
+ break;
default:
compression = COMPRESSION_NONE;
break;
}
+ uint16 out[1];
+ out[0] = EXTRASAMPLE_UNASSALPHA;
TIFFSetField(stream, TIFFTAG_IMAGEWIDTH, asset->width);
TIFFSetField(stream, TIFFTAG_IMAGELENGTH, asset->height);
TIFFSetField(stream, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
TIFFSetField(stream, TIFFTAG_SAMPLESPERPIXEL, components);
TIFFSetField(stream, TIFFTAG_BITSPERSAMPLE, bits);
- TIFFSetField(stream, TIFFTAG_SAMPLEFORMAT, sampleformat);
+ TIFFSetField(stream, TIFFTAG_SAMPLEFORMAT, sampleformat);
+ if(components == 4)
+ TIFFSetField(stream, TIFFTAG_EXTRASAMPLES, 1, &out);
TIFFSetField(stream, TIFFTAG_COMPRESSION, compression);
TIFFSetField(stream, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField(stream, TIFFTAG_ROWSPERSTRIP,
@@ -492,7 +520,7 @@ int FileTIFF::write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit)
// TIFFSetField(stream, TIFFTAG_ROWSPERSTRIP,
// (8 * 1024) / bytesperrow);
TIFFSetField(stream, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
-
+
if(frame->get_color_model() == color_model)
{
for(int i = 0; i < asset->height; i++)
@@ -656,9 +684,15 @@ int TIFFCompression::handle_event()
void TIFFCompression::create_objects()
{
add_item(new TIFFCompressionItem(gui, FileTIFF::NONE));
-// add_item(new TIFFCompressionItem(gui, FileTIFF::LZW));
+ add_item(new TIFFCompressionItem(gui, FileTIFF::LZW)); // patent expired in 2004 ?
add_item(new TIFFCompressionItem(gui, FileTIFF::PACK_BITS));
-// add_item(new TIFFCompressionItem(gui, FileTIFF::DEFLATE));
+ add_item(new TIFFCompressionItem(gui, FileTIFF::DEFLATE)); // works!
+// add_item(new TIFFCompressionItem(gui, FileTIFF::SGILOG)); scanline encoding not implemented
+ add_item(new TIFFCompressionItem(gui, FileTIFF::LZMA)); // works, a bit new for data exchange?
+// add_item(new TIFFCompressionItem(gui, FileTIFF::ADOBE_DEFLATE)); scanline encoding not implemented
+// add_item(new TIFFCompressionItem(gui, FileTIFF::PIXARFILM)); not supported for scanline encoding
+// add_item(new TIFFCompressionItem(gui, FileTIFF::PIXARLOG)); only 8 bit ?
+// add_item(new TIFFCompressionItem(gui, FileTIFF::JP2000)); doesn't support scanline encoding
// add_item(new TIFFCompressionItem(gui, FileTIFF::JPEG));
}
diff --git a/cinelerra-5.1/cinelerra/filetiff.h b/cinelerra-5.1/cinelerra/filetiff.h
index 321ea9b..c6e21f5 100644
--- a/cinelerra-5.1/cinelerra/filetiff.h
+++ b/cinelerra-5.1/cinelerra/filetiff.h
@@ -70,7 +70,13 @@ public:
LZW,
PACK_BITS,
DEFLATE,
- JPEG
+ JPEG,
+ PIXARFILM,
+ PIXARLOG,
+ JP2000,
+ ADOBE_DEFLATE,
+ SGILOG,
+ LZMA
};
Mutex *unit_lock;
--
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin