blob: c01b1a712a6b582aff4dd07236259b81fd4cd6e0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
using Dino.Entities;
using Xmpp;
using Xmpp.Xep;
using Gtk;
namespace Dino.Ui.Util {
public class AudioVideoFileMetadataProvider: Dino.FileMetadataProvider, Object {
public bool supports_file(File file) {
string? mime_type = file.query_info("*", FileQueryInfoFlags.NONE).get_content_type();
if (mime_type == null) {
return false;
}
return mime_type.has_prefix("audio") || mime_type.has_prefix("video");
}
public async void fill_metadata(File file, Xep.FileMetadataElement.FileMetadata metadata) {
MediaFile media = MediaFile.for_file(file);
if (!media.prepared) {
media.notify["prepared"].connect((object, pspec) => {
Idle.add(fill_metadata.callback);
});
yield;
}
metadata.length = media.duration / 1000;
}
}
}
|