@@ -219,7 +219,7 @@ set_font(DrawingWand *dw, const char *req_font)
219219 MSG (WARNING , "DraweSetFont failed!\n" );
220220 continue ;
221221 }
222- MSG (INFO , "Using font: %s\n" , * font_candidates );
222+ MSG (INFO , "using font %s\n" , * font_candidates );
223223 return MagickTrue ;
224224 }
225225 MSG (VERBOSE , "font %s not found\n" , * font_candidates );
@@ -228,11 +228,19 @@ set_font(DrawingWand *dw, const char *req_font)
228228 if (req_font != NULL ) {
229229 return MagickFalse ;
230230 }
231- MSG (ERROR ,
232- "Could not find useable font! Continue using system one...\n" );
231+ MSG (WARNING ,
232+ "Could not find usable font! Continue using system one...\n" );
233233 return MagickTrue ;
234234}
235235
236+ #define HANDLE_WAND_ERROR (status , wand , msg ) \
237+ do { \
238+ if ((status) != MagickTrue) { \
239+ MSG(ERROR, "%s: %s!\n", msg, get_magick_error(wand)); \
240+ return false; \
241+ } \
242+ } while (0)
243+
236244static bool
237245text_postprocess_reconfigure (void * state , struct video_desc desc )
238246{
@@ -296,22 +304,15 @@ text_postprocess_reconfigure(void *state, struct video_desc desc)
296304
297305 s -> wand_bg = NewMagickWand ();
298306 status = MagickSetFormat (s -> wand_bg , colorspace );
299- if (status != MagickTrue ) {
300- MSG (WARNING , "MagickSetFormat bg failed: %s!\n" ,
301- get_magick_error (s -> wand_bg ));
302- return false;
303- }
307+ HANDLE_WAND_ERROR (status , s -> wand_bg , "MagickSetFormat bg failed" );
304308 s -> wand_text = NewMagickWand ();
305309 status = MagickSetFormat (s -> wand_text , colorspace );
306- if (status != MagickTrue ) {
307- MSG (WARNING , "MagickSetFormat text failed: %s!\n" ,
308- get_magick_error (s -> wand_text ));
309- return false;
310- }
310+ HANDLE_WAND_ERROR (status , s -> wand_text , "MagickSetFormat text failed" );
311311
312312 status = MagickSetDepth (s -> wand_bg , 8 );
313- status &= MagickSetDepth (s -> wand_text , 8 );
314- assert (status == MagickTrue && "[text vo_pp.] MagickSetDepth failed" );
313+ HANDLE_WAND_ERROR (status , s -> wand_bg , "MagickSetDepth bg failed" );
314+ status = MagickSetDepth (s -> wand_text , 8 );
315+ HANDLE_WAND_ERROR (status , s -> wand_text , "MagickSetDepth text failed" );
315316
316317 PixelWand * transparent_bg = NewPixelWand ();
317318 // PixelSetColor(transparent_bg, "#cccccc80"); // for debugging
@@ -325,6 +326,7 @@ text_postprocess_reconfigure(void *state, struct video_desc desc)
325326 if (!metrics ) {
326327 MSG (WARNING , "MagickQueryFontMetrics failed: %s!\n" ,
327328 get_magick_error (s -> wand_text ));
329+ DestroyPixelWand (transparent_bg );
328330 return false;
329331 }
330332 double descender = metrics [3 ]; // has negative value
@@ -334,25 +336,16 @@ text_postprocess_reconfigure(void *state, struct video_desc desc)
334336
335337 MagickRemoveImage (s -> wand_text );
336338 status = MagickNewImage (s -> wand_text , s -> text_width_px , s -> text_height_px , transparent_bg );
337- if (!status ) {
338- MSG (WARNING , "MagickNewImage failed: %s!\n" ,
339- get_magick_error (s -> wand_text ));
340- return false;
341- }
339+ DestroyPixelWand (transparent_bg );
340+ HANDLE_WAND_ERROR (status , s -> wand_text , "MagickNewImage failed" );
342341
343342 double x_off = 0 ;
344343 double y_off_baseline = s -> text_height_px - (- descender ) + 1 ;
345344 double rot = 0 ;
346345 status = MagickAnnotateImage (s -> wand_text , s -> dw , x_off , y_off_baseline , rot , s -> text );
347- if (!status ) {
348- MSG (WARNING ,
349- "MagickAnnotateImage failed: %s!\n\n"
350- "Perhaps the text contains invalid characters?\n" ,
351- get_magick_error (s -> wand_text ));
352- return false;
353- }
354-
355- DestroyPixelWand (transparent_bg );
346+ HANDLE_WAND_ERROR (status , s -> wand_text ,
347+ "MagickAnnotateImage failed (Perhaps the text "
348+ "contains invalid characters?)" );
356349
357350 return true;
358351}
@@ -398,30 +391,26 @@ static bool text_postprocess(void *state, struct video_frame *in, struct video_f
398391 MagickRemoveImage (s -> wand_bg );
399392
400393 status = MagickSetSize (s -> wand_bg , s -> width , s -> text_height_px );
401- assert (status == MagickTrue && "[text vo_pp.] MagickSetSize failed -- " );
394+ HANDLE_WAND_ERROR (status , s -> wand_bg , " MagickSetSize failed" );
402395
403396 status = MagickReadImageBlob (s -> wand_bg , stripe , s -> text_height_px * dst_linesize );
404- if (status != MagickTrue ) {
405- log_msg (LOG_LEVEL_WARNING , "[text vo_pp.] MagickReadImageBlob failed!\n" );
406- return false;
407- }
397+ HANDLE_WAND_ERROR (status , s -> wand_bg , "MagickReadImageBlob failed" );
408398
409399 // compose it with text
410400#ifdef WAND7
411401 status = MagickCompositeImage (s -> wand_bg , s -> wand_text , OverCompositeOp , true, s -> margin_x , 0 );
412402#else
413403 status = MagickCompositeImage (s -> wand_bg , s -> wand_text , OverCompositeOp , s -> margin_x , 0 );
414404#endif
415- if (status != MagickTrue ) {
416- log_msg (LOG_LEVEL_WARNING , "[text vo_pp.] MagickCompositeImage failed!\n" );
417- return false;
418- }
405+ HANDLE_WAND_ERROR (status , s -> wand_bg , "MagickCompositeImage failed" );
419406
420407 // extract the composed data
421408 unsigned char * data ;
422409 size_t data_len ;
423410 data = MagickGetImageBlob (s -> wand_bg , & data_len );
424- assert (data != NULL && "[text vo_pp.] MagickGetImageBlob failed!" );
411+ if (data == NULL ) {
412+ HANDLE_WAND_ERROR (MagickFalse , s -> wand_bg , "MagickGetImageBlob failed" );
413+ }
425414
426415 // send the input stream...
427416 memcpy (out -> tiles [0 ].data , in -> tiles [0 ].data , in -> tiles [0 ].data_len );
0 commit comments