aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/thumbnailffmpeg_extractor.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/thumbnailffmpeg_extractor.c')
-rw-r--r--src/plugins/thumbnailffmpeg_extractor.c48
1 files changed, 43 insertions, 5 deletions
diff --git a/src/plugins/thumbnailffmpeg_extractor.c b/src/plugins/thumbnailffmpeg_extractor.c
index 4f4fe94..cd7ca6e 100644
--- a/src/plugins/thumbnailffmpeg_extractor.c
+++ b/src/plugins/thumbnailffmpeg_extractor.c
@@ -168,6 +168,12 @@ create_thumbnail (int src_width, int src_height,
168 uint8_t *encoder_output_buffer; 168 uint8_t *encoder_output_buffer;
169 size_t encoder_output_buffer_size; 169 size_t encoder_output_buffer_size;
170 int err; 170 int err;
171
172 AVPacket pkt;
173 av_init_packet(&pkt);
174 pkt.data = NULL;
175 pkt.size = 0;
176 int gotPacket;
171 177
172 if (NULL == (encoder_codec = avcodec_find_encoder_by_name ("png"))) 178 if (NULL == (encoder_codec = avcodec_find_encoder_by_name ("png")))
173 { 179 {
@@ -264,9 +270,29 @@ create_thumbnail (int src_width, int src_height,
264 sws_freeContext (scaler_ctx); 270 sws_freeContext (scaler_ctx);
265 return 0; 271 return 0;
266 } 272 }
273
274
275#if LIBAVCODEC_BUILD >= AV_VERSION_INT(54,25,0)
276 //err = encode_frame (encoder_codec_ctx, dst_frame);
277 err = avcodec_encode_video2 (encoder_codec_ctx,
278 &pkt,
279 dst_frame, &gotPacket);
280
281 if(err < 0)
282 goto cleanup;
283 err = pkt.size;
284 memcpy(encoder_output_buffer,pkt.data, pkt.size);
285
286 av_free_packet(&pkt);
287
288
289#else
267 err = avcodec_encode_video (encoder_codec_ctx, 290 err = avcodec_encode_video (encoder_codec_ctx,
268 encoder_output_buffer, 291 encoder_output_buffer,
269 encoder_output_buffer_size, dst_frame); 292 encoder_output_buffer_size, dst_frame);
293
294#endif
295cleanup:
270 av_dict_free (&opts); 296 av_dict_free (&opts);
271 avcodec_close (encoder_codec_ctx); 297 avcodec_close (encoder_codec_ctx);
272 av_free (encoder_codec_ctx); 298 av_free (encoder_codec_ctx);
@@ -327,13 +353,12 @@ calculate_thumbnail_dimensions (int src_width,
327#endif 353#endif
328} 354}
329 355
330#if AV_VERSION_INT(54,25,0) > LIBAVUTIL_VERSION_INT 356#if LIBAVCODEC_BUILD >= AV_VERSION_INT(54,25,0)
331#define ENUM_CODEC_ID enum CodecID 357 #define ENUM_CODEC_ID enum AVCodecID
332#else 358#else
333#define ENUM_CODEC_ID enum AvCodecID 359 #define ENUM_CODEC_ID enum CodecID
334#endif 360#endif
335 361
336
337/** 362/**
338 * Perform thumbnailing when the input is an image. 363 * Perform thumbnailing when the input is an image.
339 * 364 *
@@ -608,6 +633,7 @@ extract_video (struct EXTRACTOR_ExtractContext *ec)
608 &encoded_thumbnail, MAX_THUMB_BYTES); 633 &encoded_thumbnail, MAX_THUMB_BYTES);
609 if (err > 0) 634 if (err > 0)
610 { 635 {
636
611 ec->proc (ec->cls, 637 ec->proc (ec->cls,
612 "thumbnailffmpeg", 638 "thumbnailffmpeg",
613 EXTRACTOR_METATYPE_THUMBNAIL, 639 EXTRACTOR_METATYPE_THUMBNAIL,
@@ -646,13 +672,25 @@ struct MIMEToDecoderMapping
646 */ 672 */
647static const struct MIMEToDecoderMapping m2d_map[] = 673static const struct MIMEToDecoderMapping m2d_map[] =
648 { 674 {
649 { "image/x-bmp", CODEC_ID_BMP }, 675
676#if LIBAVCODEC_BUILD >= AV_VERSION_INT(54,25,0)
677 { "image/x-bmp", AV_CODEC_ID_BMP },
678 { "image/gif", AV_CODEC_ID_GIF },
679 { "image/jpeg", AV_CODEC_ID_MJPEG },
680 { "image/png", AV_CODEC_ID_PNG },
681 { "image/x-png", AV_CODEC_ID_PNG },
682 { "image/x-portable-pixmap", AV_CODEC_ID_PPM },
683 { NULL, AV_CODEC_ID_NONE }
684#else
685 { "image/x-bmp", CODEC_ID_BMP },
650 { "image/gif", CODEC_ID_GIF }, 686 { "image/gif", CODEC_ID_GIF },
651 { "image/jpeg", CODEC_ID_MJPEG }, 687 { "image/jpeg", CODEC_ID_MJPEG },
652 { "image/png", CODEC_ID_PNG }, 688 { "image/png", CODEC_ID_PNG },
653 { "image/x-png", CODEC_ID_PNG }, 689 { "image/x-png", CODEC_ID_PNG },
654 { "image/x-portable-pixmap", CODEC_ID_PPM }, 690 { "image/x-portable-pixmap", CODEC_ID_PPM },
655 { NULL, CODEC_ID_NONE } 691 { NULL, CODEC_ID_NONE }
692#endif
693
656 }; 694 };
657 695
658 696