diff options
Diffstat (limited to 'src/plugins/thumbnailffmpeg_extractor.c')
-rw-r--r-- | src/plugins/thumbnailffmpeg_extractor.c | 48 |
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 | ||
295 | cleanup: | ||
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 | */ |
647 | static const struct MIMEToDecoderMapping m2d_map[] = | 673 | static 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 | ||