- if (producer->get_double("meta.media.frame_rate_den") > 0) {
- filePropertyMap["fps"] = locale.toString(producer->get_double("meta.media.frame_rate_num") / producer->get_double("meta.media.frame_rate_den"));
- } else filePropertyMap["fps"] = producer->get("source_fps");
-
- if (frame && frame->is_valid()) {
- filePropertyMap["frame_size"] = QString::number(frame->get_int("width")) + 'x' + QString::number(frame->get_int("height"));
- filePropertyMap["frequency"] = QString::number(frame->get_int("frequency"));
- filePropertyMap["channels"] = QString::number(frame->get_int("channels"));
- filePropertyMap["aspect_ratio"] = frame->get("aspect_ratio");
-
- if (frame->get_int("test_image") == 0) {
- if (url.path().endsWith(".mlt") || url.path().endsWith(".westley") || url.path().endsWith(".kdenlive")) {
- filePropertyMap["type"] = "playlist";
- metadataPropertyMap["comment"] = QString::fromUtf8(producer->get("title"));
- } else if (frame->get_int("test_audio") == 0)
- filePropertyMap["type"] = "av";
- else
- filePropertyMap["type"] = "video";
-
- int variance;
- QImage img;
- do {
- variance = 100;
- img = KThumb::getFrame(frame, imageWidth, fullWidth, info.imageHeight);
- variance = KThumb::imageVariance(img);
- if (frameNumber == 0 && variance< 6) {
- // Thumbnail is not interesting (for example all black, seek to fetch better thumb
- frameNumber = 100;
- producer->seek(frameNumber);
- delete frame;
- frame = producer->get_frame();
- variance = -1;
- }
- } while (variance == -1);
- emit replyGetImage(info.clipId, img);
- } else if (frame->get_int("test_audio") == 0) {
- emit replyGetImage(info.clipId, "audio-x-generic", fullWidth, info.imageHeight);
- filePropertyMap["type"] = "audio";
+ if (producer->get_double("meta.media.frame_rate_den") > 0) {
+ filePropertyMap["fps"] = locale.toString(producer->get_double("meta.media.frame_rate_num") / producer->get_double("meta.media.frame_rate_den"));
+ } else filePropertyMap["fps"] = producer->get("source_fps");
+
+ Mlt::Frame *frame = producer->get_frame();
+ if (frame && frame->is_valid()) {
+ filePropertyMap["frame_size"] = QString::number(frame->get_int("width")) + 'x' + QString::number(frame->get_int("height"));
+ filePropertyMap["frequency"] = QString::number(frame->get_int("frequency"));
+ filePropertyMap["channels"] = QString::number(frame->get_int("channels"));
+ filePropertyMap["aspect_ratio"] = frame->get("aspect_ratio");
+
+ if (frame->get_int("test_image") == 0) {
+ if (url.path().endsWith(".mlt") || url.path().endsWith(".westley") || url.path().endsWith(".kdenlive")) {
+ filePropertyMap["type"] = "playlist";
+ metadataPropertyMap["comment"] = QString::fromUtf8(producer->get("title"));
+ } else if (frame->get_int("test_audio") == 0)
+ filePropertyMap["type"] = "av";
+ else
+ filePropertyMap["type"] = "video";
+
+ int variance;
+ QImage img;
+ do {
+ variance = 100;
+ img = KThumb::getFrame(frame, imageWidth, fullWidth, info.imageHeight);
+ variance = KThumb::imageVariance(img);
+ if (frameNumber == -1 && variance< 6) {
+ // Thumbnail is not interesting (for example all black, seek to fetch better thumb
+ frameNumber = duration > 100 ? 100 : duration / 2 ;
+ producer->seek(frameNumber);
+ delete frame;
+ frame = producer->get_frame();
+ variance = -1;
+ }
+ } while (variance == -1);
+ if (frameNumber > -1) filePropertyMap["thumbnail"] = frameNumber;
+ emit replyGetImage(info.clipId, img);
+ } else if (frame->get_int("test_audio") == 0) {
+ emit replyGetImage(info.clipId, "audio-x-generic", fullWidth, info.imageHeight);
+ filePropertyMap["type"] = "audio";
+ }