You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
Fixed a bug with bitshifting float color values. ImageMagick can be built with different types of Quantum color values, and Im trying to make libopenshot work seemlessl with them.
This commit is contained in:
@@ -338,7 +338,7 @@
|
||||
</target>
|
||||
<target name="Linux: CMake Debug" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>cmake</buildCommand>
|
||||
<buildArguments>-G "Unix Makefiles" ../ -D"ENABLE_TESTS=1" -D"ENABLE_BLACKMAGIC=0" -D"CMAKE_BUILD_TYPE:STRING=Debug"</buildArguments>
|
||||
<buildArguments>-G "Unix Makefiles" ../ -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -D"ENABLE_BLACKMAGIC=0" -D"CMAKE_BUILD_TYPE:STRING=Debug"</buildArguments>
|
||||
<buildTarget/>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>false</useDefaultCommand>
|
||||
|
||||
@@ -265,9 +265,9 @@ void DeckLinkOutputDelegate::WriteFrame(tr1::shared_ptr<openshot::Frame> frame)
|
||||
{
|
||||
// Update buffer (which is already linked to the AVFrame: pFrameRGB)
|
||||
castBytes[row] = 0; // alpha
|
||||
castBytes[row+1] = pixel_packets[packet].red >> bit_shift;
|
||||
castBytes[row+2] = pixel_packets[packet].green >> bit_shift;
|
||||
castBytes[row+3] = pixel_packets[packet].blue >> bit_shift;
|
||||
castBytes[row+1] = (int) pixel_packets[packet].red >> bit_shift;
|
||||
castBytes[row+2] = (int) pixel_packets[packet].green >> bit_shift;
|
||||
castBytes[row+3] = (int) pixel_packets[packet].blue >> bit_shift;
|
||||
}
|
||||
|
||||
#pragma omp critical (blackmagic_output_queue)
|
||||
|
||||
@@ -1231,13 +1231,13 @@ void FFmpegWriter::process_video_packet(tr1::shared_ptr<Frame> frame)
|
||||
{
|
||||
// Update buffer (which is already linked to the AVFrame: pFrameRGB)
|
||||
// Each color needs to be 8 bit (so I'm bit shifting the 16 bit ints)
|
||||
frame_source->data[0][row] = pixel_packets[packet].red >> bit_shift;
|
||||
frame_source->data[0][row+1] = pixel_packets[packet].green >> bit_shift;
|
||||
frame_source->data[0][row+2] = pixel_packets[packet].blue >> bit_shift;
|
||||
frame_source->data[0][row] = (int) pixel_packets[packet].red >> bit_shift;
|
||||
frame_source->data[0][row+1] = (int) pixel_packets[packet].green >> bit_shift;
|
||||
frame_source->data[0][row+2] = (int) pixel_packets[packet].blue >> bit_shift;
|
||||
|
||||
// Copy alpha channel (if needed)
|
||||
if (step == 4)
|
||||
frame_source->data[0][row+3] = pixel_packets[packet].opacity >> bit_shift;
|
||||
frame_source->data[0][row+3] = (int) pixel_packets[packet].opacity >> bit_shift;
|
||||
}
|
||||
|
||||
// Resize & convert pixel format
|
||||
|
||||
@@ -75,9 +75,9 @@ void RendererBase::paint(const std::tr1::shared_ptr<Frame> & frame)
|
||||
// Iterate through the pixel packets, and load our own buffer
|
||||
const Magick::PixelPacket *pixels = frame->GetPixels();
|
||||
for (int n = 0, i = 0; n < width * height; n += 1, i += 3) {
|
||||
buffer[i+0] = pixels[n].red >> bit_shift;
|
||||
buffer[i+1] = pixels[n].green >> bit_shift;
|
||||
buffer[i+2] = pixels[n].blue >> bit_shift;
|
||||
buffer[i+0] = (int) pixels[n].red >> bit_shift;
|
||||
buffer[i+1] = (int) pixels[n].green >> bit_shift;
|
||||
buffer[i+2] = (int) pixels[n].blue >> bit_shift;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user