http://git.pld-linux.org/?p=packages/transcode.git;a=blob_plain;f=imagemagick7.patch;h=8411f89b843764eff8f4aaddb314d7773d1bcec8;hb=HEAD --- transcode-1.1.7/configure.in +++ transcode-1.1.7/configure.in @@ -1105,8 +1105,8 @@ dnl ImageMagick dnl IMAGEMAGICK_EXTRA_LIBS="$IMAGEMAGICK_EXTRA_LIBS $($PKG_CONFIG --libs ImageMagick)" -TC_PKG_CHECK(imagemagick, no, IMAGEMAGICK, no, [magick/api.h], - none, InitializeMagick, Wand, [http://www.imagemagick.org/]) +TC_PKG_CHECK(imagemagick, no, IMAGEMAGICK, no, [MagickWand/MagickWand.h], + none, InitializeMagick, MagickWand, [http://www.imagemagick.org/]) TC_PKG_HAVE(imagemagick, IMAGEMAGICK) if test x"$have_imagemagick" = x"yes" ; then SAVE_CPPFLAGS="$CPPFLAGS" @@ -1114,6 +1114,7 @@ AC_CHECK_HEADER([wand/magick-wand.h], [AC_DEFINE([HAVE_BROKEN_WAND], [1], ["have old wand header"])]) CPPFLAGS="$SAVE_CPPFLAGS" + IMAGEMAGICK_CFLAGS="$IMAGEMAGICK_CFLAGS $($PKG_CONFIG --cflags ImageMagick)" fi dnl --- transcode-1.1.7/export/export_im.c +++ transcode-1.1.7/export/export_im.c @@ -23,7 +23,7 @@ /* Note: because of ImageMagick bogosity, this must be included first, so * we can undefine the PACKAGE_* symbols it splats into our namespace */ -#include +#include #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING @@ -82,7 +82,7 @@ codec = (vob->im_v_codec == CODEC_YUV) ? CODEC_YUV : CODEC_RGB; - InitializeMagick(""); + MagickCoreGenesis("", MagickFalse); image_info=CloneImageInfo((ImageInfo *) NULL); @@ -169,8 +169,8 @@ MOD_encode { - ExceptionInfo exception_info; - char *out_buffer = param->buffer; + ExceptionInfo *exception_info; + unsigned char *out_buffer = param->buffer; Image *image=NULL; int res; @@ -179,7 +179,7 @@ if(param->flag == TC_VIDEO) { - GetExceptionInfo(&exception_info); + exception_info = AcquireExceptionInfo(); res = tc_snprintf(buf2, PATH_MAX, "%s%06d.%s", prefix, counter++, type); if (res < 0) { @@ -193,11 +193,11 @@ out_buffer = tmp_buffer; } - image=ConstituteImage (width, height, "RGB", CharPixel, out_buffer, &exception_info); + image=ConstituteImage (width, height, "RGB", CharPixel, out_buffer, exception_info); strlcpy(image->filename, buf2, MaxTextExtent); - WriteImage(image_info, image); + WriteImage(image_info, image, exception_info); DestroyImage(image); return(0); @@ -220,8 +220,7 @@ if(param->flag == TC_VIDEO) { DestroyImageInfo(image_info); - ConstituteComponentTerminus(); - DestroyMagick(); + MagickCoreTerminus(); free(tmp_buffer); tmp_buffer = NULL; --- transcode-1.1.7/filter/filter_compare.c +++ transcode-1.1.7/filter/filter_compare.c @@ -24,7 +24,7 @@ /* Note: because of ImageMagick bogosity, this must be included first, so * we can undefine the PACKAGE_* symbols it splats into our namespace */ -#include +#include #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING @@ -111,9 +111,9 @@ Image *pattern, *resized, *orig = 0; ImageInfo *image_info; - PixelPacket *pixel_packet; + Quantum *pixel_quantum; pixelsMask *pixel_last; - ExceptionInfo exception_info; + ExceptionInfo *exception_info; if(ptr->tag & TC_FILTER_GET_CONFIG) { char buf[128]; @@ -139,7 +139,7 @@ if(ptr->tag & TC_FILTER_INIT) { - unsigned int t,r,index; + unsigned int t,r; pixelsMask *temp; compare[instance] = tc_malloc(sizeof(compareData)); @@ -190,22 +190,22 @@ tc_log_perror(MOD_NAME, "could not open file for writing"); } - InitializeMagick(""); + MagickCoreGenesis("", MagickFalse); if (verbose > 1) tc_log_info(MOD_NAME, "Magick Initialized successfully"); - GetExceptionInfo(&exception_info); + exception_info = AcquireExceptionInfo(); image_info = CloneImageInfo ((ImageInfo *) NULL); strlcpy(image_info->filename, pattern_name, MaxTextExtent); if (verbose > 1) tc_log_info(MOD_NAME, "Trying to open image"); orig = ReadImage(image_info, - &exception_info); + exception_info); if (orig == (Image *) NULL) { - MagickWarning(exception_info.severity, - exception_info.reason, - exception_info.description); + MagickWarning(exception_info->severity, + exception_info->reason, + exception_info->description); strlcpy(pattern_name, "/dev/null", sizeof(pattern_name)); }else{ if (verbose > 1) @@ -228,42 +228,41 @@ if (orig != NULL){ // Flip and resize if (compare[instance]->vob->im_v_codec == CODEC_YUV) - TransformRGBImage(orig,YCbCrColorspace); + TransformImageColorspace(orig, YCbCrColorspace, exception_info); if (verbose > 1) tc_log_info(MOD_NAME, "Resizing the Image"); resized = ResizeImage(orig, compare[instance]->width, compare[instance]->height, GaussianFilter, - 1, - &exception_info); + exception_info); if (verbose > 1) tc_log_info(MOD_NAME, "Flipping the Image"); - pattern = FlipImage(resized, &exception_info); + pattern = FlipImage(resized, exception_info); if (pattern == (Image *) NULL) { - MagickError (exception_info.severity, - exception_info.reason, - exception_info.description); + MagickError (exception_info->severity, + exception_info->reason, + exception_info->description); } // Filling the matrix with the pixels values not // alpha if (verbose > 1) tc_log_info(MOD_NAME, "GetImagePixels"); - pixel_packet = GetImagePixels(pattern,0,0, + pixel_quantum = GetAuthenticPixels(pattern,0,0, pattern->columns, - pattern->rows); + pattern->rows, + exception_info); if (verbose > 1) tc_log_info(MOD_NAME, "Filling the Image matrix"); for (t = 0; t < pattern->rows; t++) for (r = 0; r < pattern->columns; r++){ - index = t*pattern->columns + r; - if (pixel_packet[index].opacity == 0){ + if (GetPixelAlpha(pattern, pixel_quantum) == QuantumRange) { temp=tc_malloc(sizeof(struct pixelsMask)); temp->row=t; temp->col=r; - temp->r = (uint8_t)ScaleQuantumToChar(pixel_packet[index].red); - temp->g = (uint8_t)ScaleQuantumToChar(pixel_packet[index].green); - temp->b = (uint8_t)ScaleQuantumToChar(pixel_packet[index].blue); + temp->r = (uint8_t)ScaleQuantumToChar(GetPixelRed(pattern, pixel_quantum)); + temp->g = (uint8_t)ScaleQuantumToChar(GetPixelGreen(pattern, pixel_quantum)); + temp->b = (uint8_t)ScaleQuantumToChar(GetPixelBlue(pattern, pixel_quantum)); temp->next=NULL; if (pixel_last == NULL){ @@ -274,6 +273,7 @@ pixel_last = temp; } } + pixel_quantum += GetPixelChannels(pattern); } if (verbose) @@ -297,7 +297,7 @@ fclose(compare[instance]->results); free(compare[instance]); } - DestroyMagick(); + MagickCoreTerminus(); compare[instance]=NULL; return(0); --- transcode-1.1.7/filter/filter_logoaway.c +++ transcode-1.1.7/filter/filter_logoaway.c @@ -70,7 +70,7 @@ /* Note: because of ImageMagick bogosity, this must be included first, so * we can undefine the PACKAGE_* symbols it splats into our namespace */ -#include +#include #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING @@ -103,10 +103,10 @@ int alpha; - ExceptionInfo exception_info; + ExceptionInfo *exception_info; Image *image; ImageInfo *image_info; - PixelPacket *pixel_packet; + Quantum *pixel_packet; int dump; char *dump_buf; @@ -174,7 +174,7 @@ * instance filter instance * @return void nothing *********************************************************/ -static void work_with_rgb_frame(logoaway_data *LD, char *buffer, int width, int height) +static void work_with_rgb_frame(logoaway_data *LD, unsigned char *buffer, int width, int height) { int row, col, i; int xdistance, ydistance, distance_west, distance_north; @@ -201,10 +201,10 @@ } } - LD->dumpimage = ConstituteImage(LD->width-LD->xpos, LD->height-LD->ypos, "RGB", CharPixel, LD->dump_buf, &LD->exception_info); + LD->dumpimage = ConstituteImage(LD->width-LD->xpos, LD->height-LD->ypos, "RGB", CharPixel, LD->dump_buf, LD->exception_info); tc_snprintf(LD->dumpimage->filename, MaxTextExtent, "dump[%d].png", LD->id); - WriteImage(LD->dumpimage_info, LD->dumpimage); + WriteImage(LD->dumpimage_info, LD->dumpimage, LD->exception_info); } switch(LD->mode) { @@ -218,27 +218,28 @@ for(row=LD->ypos; rowheight; ++row) { for(col=LD->xpos; colwidth; ++col) { + Quantum *pixel = LD->pixel_packet + (row*LD->width+col)*GetPixelChannels(LD->image); buf_off = ((height-row)*width+col) * 3; pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos); /* R */ if (!LD->alpha) { buffer[buf_off +0] = LD->rcolor; } else { - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel)); buffer[buf_off +0] = alpha_blending(buffer[buf_off +0], LD->rcolor, alpha_px); } /* G */ if (!LD->alpha) { buffer[buf_off +1] = LD->gcolor; } else { - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].green); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelGreen(LD->image, pixel)); buffer[buf_off +1] = alpha_blending(buffer[buf_off +1], LD->gcolor, alpha_px); } /* B */ if (!LD->alpha) { buffer[buf_off +2] = LD->bcolor; } else { - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].blue); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelBlue(LD->image, pixel)); buffer[buf_off +2] = alpha_blending(buffer[buf_off +2], LD->bcolor, alpha_px); } } @@ -268,6 +269,7 @@ buf_off = ((height-row)*width+col) * 3; pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos); + Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image); /* R */ hcalc = alpha_blending(buffer[buf_off_xpos +0], buffer[buf_off_width +0], alpha_hori); @@ -276,7 +278,7 @@ if (!LD->alpha) { buffer[buf_off +0] = new_px; } else { - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel)); buffer[buf_off +0] = alpha_blending(buffer[buf_off +0], new_px, alpha_px); } /* G */ @@ -286,7 +288,7 @@ if (!LD->alpha) { buffer[buf_off +1] = new_px; } else { - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].green); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelGreen(LD->image, pixel)); buffer[buf_off +1] = alpha_blending(buffer[buf_off +1], new_px, alpha_px); } /* B */ @@ -296,7 +298,7 @@ if (!LD->alpha) { buffer[buf_off +2] = new_px; } else { - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelBlue(LD->image, pixel)); buffer[buf_off +2] = alpha_blending(buffer[buf_off +2], new_px, alpha_px); } } @@ -327,28 +329,28 @@ buf_off_height = ((height-LD->height)*width+col) * 3; i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (col-i>LD->xpos)) i++; buf_off_xpos = ((height-row)*width + col-i) * 3; i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (col+iwidth)) i++; buf_off_width = ((height-row)*width + col+i) * 3; i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (row-i>LD->ypos)) i++; buf_off_ypos = (height*width*3)-((row-i)*width - col) * 3; i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (row+iheight)) i++; buf_off_height = (height*width*3)-((row+i)*width - col) * 3; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image))); /* R */ hcalc = alpha_blending(buffer[buf_off_xpos +0], buffer[buf_off_width +0], alpha_hori); vcalc = alpha_blending(buffer[buf_off_ypos +0], buffer[buf_off_height +0], alpha_vert); @@ -405,7 +407,7 @@ * instance filter instance * @return void nothing *********************************************************/ -static void work_with_yuv_frame(logoaway_data *LD, char *buffer, int width, int height) +static void work_with_yuv_frame(logoaway_data *LD, unsigned char *buffer, int width, int height) { int row, col, i; int craddr, cbaddr; @@ -431,10 +433,11 @@ buf_off = row*width+col; pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos); + Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image); if (!LD->alpha) { buffer[buf_off] = LD->ycolor; } else { - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel)); buffer[buf_off] = alpha_blending(buffer[buf_off], LD->ycolor, alpha_px); } } @@ -446,8 +449,9 @@ buf_off = row*width/2+col; pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos); + Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image); /* sic */ - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel)); if (!LD->alpha) { buffer[craddr + buf_off] = LD->ucolor; buffer[cbaddr + buf_off] = LD->vcolor; @@ -483,10 +487,11 @@ buf_off_height = LD->height*width+col; pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos); + Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image); hcalc = alpha_blending(buffer[buf_off_xpos], buffer[buf_off_width], alpha_hori); vcalc = alpha_blending(buffer[buf_off_ypos], buffer[buf_off_height], alpha_vert); - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel)); new_px = (hcalc*LD->xweight + vcalc*LD->yweight)/100; if (!LD->alpha) { buffer[buf_off] = new_px; @@ -517,7 +522,8 @@ buf_off_height = LD->height/2*width/2+col; pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos); - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel)); /* sic, reuse red alpha_px */ hcalc = alpha_blending(buffer[craddr + buf_off_xpos], buffer[craddr + buf_off_width], alpha_hori); @@ -560,30 +566,30 @@ pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos); i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (col-i>LD->xpos)) i++; buf_off_xpos = (row*width + col-i); i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (col+iwidth)) i++; buf_off_width = (row*width + col+i); i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (row-i>LD->ypos)) i++; buf_off_ypos = ((row-i)*width + col); i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (row+iheight)) i++; buf_off_height = ((row+i)*width + col); hcalc = alpha_blending( buffer[buf_off_xpos], buffer[buf_off_width], alpha_hori ); vcalc = alpha_blending( buffer[buf_off_ypos], buffer[buf_off_height], alpha_vert ); - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image))); new_px = (hcalc*LD->xweight + vcalc*LD->yweight)/100; buffer[buf_off] = alpha_blending(buffer[buf_off], new_px, alpha_px); } @@ -603,23 +609,23 @@ alpha_hori = xdistance * distance_west; i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (col-i>LD->xpos)) i++; buf_off_xpos = (row*width/2 + col-i); i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (col+iwidth)) i++; buf_off_width = (row*width/2 + col+i); i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (row-i>LD->ypos)) i++; buf_off_ypos = ((row-i)*width/2 + col); i = 0; - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image))); while ((alpha_px != 255) && (row+iheight)) i++; buf_off_height = ((row+i)*width/2 + col); @@ -630,7 +636,7 @@ pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos); - alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red); + alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image))); /* sic: reuse the red component */ hcalc = alpha_blending(buffer[craddr + buf_off_xpos], buffer[craddr + buf_off_width], alpha_hori); vcalc = alpha_blending(buffer[craddr + buf_off_ypos], buffer[craddr + buf_off_height], alpha_vert); @@ -815,17 +821,17 @@ } if((data[instance]->alpha) || (data[instance]->dump)) { - InitializeMagick(""); - GetExceptionInfo(&data[instance]->exception_info); + MagickCoreGenesis("", MagickFalse); + data[instance]->exception_info = AcquireExceptionInfo(); if(data[instance]->alpha) { data[instance]->image_info = CloneImageInfo((ImageInfo *) NULL); strlcpy(data[instance]->image_info->filename, data[instance]->file, MaxTextExtent); - data[instance]->image = ReadImage(data[instance]->image_info, &data[instance]->exception_info); + data[instance]->image = ReadImage(data[instance]->image_info, data[instance]->exception_info); if (data[instance]->image == (Image *) NULL) { tc_log_error(MOD_NAME, "\n"); - MagickWarning (data[instance]->exception_info.severity, data[instance]->exception_info.reason, data[instance]->exception_info.description); + MagickWarning (data[instance]->exception_info->severity, data[instance]->exception_info->reason, data[instance]->exception_info->description); return TC_ERROR; } @@ -835,7 +841,7 @@ return TC_ERROR; } - data[instance]->pixel_packet = GetImagePixels(data[instance]->image, 0, 0, data[instance]->image->columns, data[instance]->image->rows); + data[instance]->pixel_packet = GetAuthenticPixels(data[instance]->image, 0, 0, data[instance]->image->columns, data[instance]->image->rows, data[instance]->exception_info); } if(data[instance]->dump) { if((data[instance]->dump_buf = tc_malloc ((data[instance]->width-data[instance]->xpos)*(data[instance]->height-data[instance]->ypos)*3)) == NULL) @@ -865,10 +871,9 @@ if (data[instance]->dumpimage != (Image *)NULL) { DestroyImage(data[instance]->dumpimage); DestroyImageInfo(data[instance]->dumpimage_info); - ConstituteComponentTerminus(); } - DestroyExceptionInfo(&data[instance]->exception_info); - DestroyMagick(); + DestroyExceptionInfo(data[instance]->exception_info); + MagickCoreTerminus(); if(data[instance]->dump_buf) free(data[instance]->dump_buf); if(data[instance]) free(data[instance]); --- transcode-1.1.7/filter/filter_logo.c +++ transcode-1.1.7/filter/filter_logo.c @@ -36,7 +36,7 @@ /* Note: because of ImageMagick bogosity, this must be included first, so * we can undefine the PACKAGE_* symbols it splats into our namespace */ -#include +#include #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING @@ -227,7 +227,8 @@ ImageFormat ifmt, int do_rgbswap) { - PixelPacket *pixel_packet; + ExceptionInfo *exception_info; + Quantum *pixel_packet; uint8_t *dst_ptr = dst; int row, col; @@ -246,16 +247,17 @@ } g_off = 1; - pixel_packet = GetImagePixels(src, 0, 0, width, height); + exception_info = AcquireExceptionInfo(); + pixel_packet = GetAuthenticPixels(src, 0, 0, width, height, exception_info); for (row = 0; row < height; row++) { for (col = 0; col < width; col++) { - *(dst_ptr + r_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->red); - *(dst_ptr + g_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->green); - *(dst_ptr + b_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->blue); + *(dst_ptr + r_off) = (uint8_t)ScaleQuantumToChar(GetPixelRed(src, pixel_packet)); + *(dst_ptr + g_off) = (uint8_t)ScaleQuantumToChar(GetPixelGreen(src, pixel_packet)); + *(dst_ptr + b_off) = (uint8_t)ScaleQuantumToChar(GetPixelBlue(src, pixel_packet)); dst_ptr += 3; - pixel_packet++; + pixel_packet += GetPixelChannels(src); } } @@ -310,7 +312,7 @@ Image *timg; Image *nimg; ImageInfo *image_info; - ExceptionInfo exception_info; + ExceptionInfo *exception_info; int rgb_off = 0; @@ -376,19 +378,19 @@ * semaphore. */ magick_usecount++; - if (!IsMagickInstantiated()) { - InitializeMagick(""); + if (!IsMagickCoreInstantiated()) { + MagickCoreGenesis("", MagickFalse); } - GetExceptionInfo(&exception_info); + exception_info = AcquireExceptionInfo(); image_info = CloneImageInfo((ImageInfo *) NULL); strlcpy(image_info->filename, mfd->file, MaxTextExtent); - mfd->image = ReadImage(image_info, &exception_info); + mfd->image = ReadImage(image_info, exception_info); if (mfd->image == (Image *) NULL) { - MagickWarning(exception_info.severity, - exception_info.reason, - exception_info.description); + MagickWarning(exception_info->severity, + exception_info->reason, + exception_info->description); strlcpy(mfd->file, "/dev/null", PATH_MAX); return 0; } @@ -413,11 +415,11 @@ while (mfd->images != (Image *)NULL) { if (mfd->flip || flip) { - timg = FlipImage(mfd->images, &exception_info); + timg = FlipImage(mfd->images, exception_info); if (timg == (Image *) NULL) { - MagickError(exception_info.severity, - exception_info.reason, - exception_info.description); + MagickError(exception_info->severity, + exception_info->reason, + exception_info->description); return -1; } AppendImageToList(&nimg, timg); @@ -573,7 +575,7 @@ /* Set up image/video coefficient lookup tables */ if (img_coeff_lookup[0] < 0) { int i; - float maxrgbval = (float)MaxRGB; // from ImageMagick + float maxrgbval = (float)QuantumRange; // from ImageMagick for (i = 0; i <= MAX_UINT8_VAL; i++) { float x = (float)ScaleCharToQuantum(i); @@ -615,8 +617,8 @@ } magick_usecount--; - if (magick_usecount == 0 && IsMagickInstantiated()) { - DestroyMagick(); + if (magick_usecount == 0 && IsMagickCoreInstantiated()) { + MagickCoreTerminus(); } return 0; @@ -638,7 +640,8 @@ && (ptr->tag & TC_VIDEO) && !(ptr->attributes & TC_FRAME_IS_SKIPPED) ) { - PixelPacket *pixel_packet; + ExceptionInfo *exception_info; + Quantum *pixel_packet; uint8_t *video_buf; int do_fade = 0; @@ -647,6 +650,7 @@ /* Note: ImageMagick defines opacity = 0 as fully visible, and * opacity = MaxRGB as fully transparent. + * alpha rather than opacity (0 transparent; QuantumRange opaque). */ Quantum opacity; @@ -682,9 +686,11 @@ mfd->cur_delay = mfd->images->delay * vob->fps/100; } - pixel_packet = GetImagePixels(mfd->images, 0, 0, + exception_info = AcquireExceptionInfo(); + pixel_packet = GetAuthenticPixels(mfd->images, 0, 0, mfd->images->columns, - mfd->images->rows); + mfd->images->rows, + exception_info); if (vob->im_v_codec == CODEC_RGB) { unsigned long r_off, g_off, b_off; @@ -702,30 +708,30 @@ video_buf = ptr->video_buf + 3 * ((row + mfd->posy) * vob->ex_v_width + mfd->posx); for (col = 0; col < mfd->image->columns; col++) { - opacity = pixel_packet->opacity; + opacity = QuantumRange - GetPixelAlpha(mfd->images, pixel_packet); if (do_fade) - opacity += (Quantum)((MaxRGB - opacity) * fade_coeff); + opacity += (Quantum)((QuantumRange - opacity) * fade_coeff); if (opacity == 0) { - *(video_buf + r_off) = ScaleQuantumToChar(pixel_packet->red); - *(video_buf + g_off) = ScaleQuantumToChar(pixel_packet->green); - *(video_buf + b_off) = ScaleQuantumToChar(pixel_packet->blue); - } else if (opacity < MaxRGB) { + *(video_buf + r_off) = ScaleQuantumToChar(GetPixelRed(mfd->images, pixel_packet)); + *(video_buf + g_off) = ScaleQuantumToChar(GetPixelGreen(mfd->images, pixel_packet)); + *(video_buf + b_off) = ScaleQuantumToChar(GetPixelBlue(mfd->images, pixel_packet)); + } else if (opacity < QuantumRange) { unsigned char opacity_uchar = ScaleQuantumToChar(opacity); img_coeff = img_coeff_lookup[opacity_uchar]; vid_coeff = vid_coeff_lookup[opacity_uchar]; *(video_buf + r_off) = (uint8_t)((*(video_buf + r_off)) * vid_coeff) - + (uint8_t)(ScaleQuantumToChar(pixel_packet->red) * img_coeff); + + (uint8_t)(ScaleQuantumToChar(GetPixelRed(mfd->images, pixel_packet)) * img_coeff); *(video_buf + g_off) = (uint8_t)((*(video_buf + g_off)) * vid_coeff) - + (uint8_t)(ScaleQuantumToChar(pixel_packet->green) * img_coeff); + + (uint8_t)(ScaleQuantumToChar(GetPixelGreen(mfd->images, pixel_packet)) * img_coeff); *(video_buf + b_off) = (uint8_t)((*(video_buf + b_off)) * vid_coeff) - + (uint8_t)(ScaleQuantumToChar(pixel_packet->blue) * img_coeff); + + (uint8_t)(ScaleQuantumToChar(GetPixelBlue(mfd->images, pixel_packet)) * img_coeff); } video_buf += 3; - pixel_packet++; + pixel_packet += GetPixelChannels(mfd->images); } } } else { /* !RGB */ @@ -745,10 +751,10 @@ vid_pixel_V = vid_pixel_U + vid_size/4; for (col = 0; col < mfd->images->columns; col++) { int do_UV_pixels = (mfd->grayout == 0 && !(row % 2) && !(col % 2)) ? 1 : 0; - opacity = pixel_packet->opacity; + opacity = QuantumRange - GetPixelAlpha(mfd->images, pixel_packet); if (do_fade) - opacity += (Quantum)((MaxRGB - opacity) * fade_coeff); + opacity += (Quantum)((QuantumRange - opacity) * fade_coeff); if (opacity == 0) { *vid_pixel_Y = *img_pixel_Y; @@ -756,7 +762,7 @@ *vid_pixel_U = *img_pixel_U; *vid_pixel_V = *img_pixel_V; } - } else if (opacity < MaxRGB) { + } else if (opacity < QuantumRange) { unsigned char opacity_uchar = ScaleQuantumToChar(opacity); img_coeff = img_coeff_lookup[opacity_uchar]; vid_coeff = vid_coeff_lookup[opacity_uchar]; --- transcode-1.1.7/import/import_im.c +++ transcode-1.1.7/import/import_im.c @@ -34,9 +34,9 @@ /* Note: because of ImageMagick bogosity, this must be included first, so * we can undefine the PACKAGE_* symbols it splats into our namespace */ #ifdef HAVE_BROKEN_WAND -#include +#include #else /* we have a SANE wand header */ -#include +#include #endif /* HAVE_BROKEN_WAND */ #undef PACKAGE_BUGREPORT --- transcode-1.1.7/import/import_imlist.c +++ transcode-1.1.7/import/import_imlist.c @@ -34,9 +34,9 @@ /* Note: because of ImageMagick bogosity, this must be included first, so * we can undefine the PACKAGE_* symbols it splats into our namespace */ #ifdef HAVE_BROKEN_WAND -#include +#include #else /* we have a SANE wand header */ -#include +#include #endif /* HAVE_BROKEN_WAND */ #undef PACKAGE_BUGREPORT --- transcode-1.1.7/import/probe_im.c +++ transcode-1.1.7/import/probe_im.c @@ -40,9 +40,9 @@ # undef PACKAGE_VERSION # ifdef HAVE_BROKEN_WAND -# include +# include # else /* we have a SANE wand header */ -# include +# include # endif /* HAVE_BROKEN_WAND */ # undef PACKAGE_BUGREPORT