mirror of
https://github.com/Serial-ATA/lofty-rs
synced 2025-03-04 14:57:17 +00:00
Benches: Add picture and encoder to create_tag benchmark
This commit is contained in:
parent
af3b98d441
commit
66c63afb97
2 changed files with 97 additions and 19 deletions
BIN
benches/assets/cover.jpg
Normal file
BIN
benches/assets/cover.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 203 KiB |
|
@ -5,12 +5,14 @@ use lofty::iff::aiff::AIFFTextChunks;
|
|||
use lofty::iff::wav::RIFFInfoList;
|
||||
use lofty::mp4::Ilst;
|
||||
use lofty::ogg::VorbisComments;
|
||||
use lofty::{Accessor, TagExt};
|
||||
use lofty::{Accessor, MimeType, Picture, PictureType, TagExt};
|
||||
|
||||
use criterion::{criterion_group, criterion_main, Criterion};
|
||||
|
||||
const ENCODER: &str = "Lavf57.56.101";
|
||||
|
||||
macro_rules! bench_tag_write {
|
||||
($c:ident, [$(($NAME:literal, $tag:ty)),+ $(,)?]) => {
|
||||
($c:ident, [$(($NAME:literal, $tag:ty, |$tag_:ident| $extra_block:block)),+ $(,)?]) => {
|
||||
let mut g = $c.benchmark_group("Tag writing");
|
||||
|
||||
$(
|
||||
|
@ -18,17 +20,16 @@ macro_rules! bench_tag_write {
|
|||
$NAME,
|
||||
|b| b.iter(|| {
|
||||
let mut v = Vec::new();
|
||||
let mut tag = <$tag>::default();
|
||||
let mut $tag_ = <$tag>::default();
|
||||
|
||||
tag.set_artist(String::from("Dave Eddy"));
|
||||
tag.set_title(String::from("TempleOS Hymn Risen (Remix)"));
|
||||
tag.set_album(String::from("Summer"));
|
||||
tag.set_year(2017);
|
||||
tag.set_track_number(1);
|
||||
tag.set_genre(String::from("Electronic"));
|
||||
// TODO: Front cover
|
||||
// TODO: Encoder
|
||||
tag.dump_to(&mut v).unwrap();
|
||||
$tag_.set_artist(String::from("Dave Eddy"));
|
||||
$tag_.set_title(String::from("TempleOS Hymn Risen (Remix)"));
|
||||
$tag_.set_album(String::from("Summer"));
|
||||
$tag_.set_year(2017);
|
||||
$tag_.set_track(1);
|
||||
$tag_.set_genre(String::from("Electronic"));
|
||||
$extra_block
|
||||
$tag_.dump_to(&mut v).unwrap();
|
||||
})
|
||||
);
|
||||
)+
|
||||
|
@ -39,13 +40,90 @@ fn bench_write(c: &mut Criterion) {
|
|||
bench_tag_write!(
|
||||
c,
|
||||
[
|
||||
("AIFF Text Chunks", AIFFTextChunks),
|
||||
("APEv2", ApeTag),
|
||||
("ID3v2", Id3v2Tag),
|
||||
("ID3v1", Id3v1Tag),
|
||||
("MP4 Ilst", Ilst),
|
||||
("RIFF INFO", RIFFInfoList),
|
||||
("Vorbis Comments", VorbisComments),
|
||||
("AIFF Text Chunks", AIFFTextChunks, |tag| {}),
|
||||
("APEv2", ApeTag, |tag| {
|
||||
use lofty::ape::ApeItem;
|
||||
use lofty::ItemValue;
|
||||
|
||||
let picture = Picture::new_unchecked(
|
||||
PictureType::CoverFront,
|
||||
MimeType::Jpeg,
|
||||
None,
|
||||
include_bytes!("assets/cover.jpg").to_vec(),
|
||||
);
|
||||
|
||||
tag.insert(
|
||||
ApeItem::new(
|
||||
String::from("Cover (Front)"),
|
||||
ItemValue::Binary(picture.as_ape_bytes()),
|
||||
)
|
||||
.unwrap(),
|
||||
);
|
||||
tag.insert(
|
||||
ApeItem::new(
|
||||
String::from("Encoder"),
|
||||
ItemValue::Text(String::from(ENCODER)),
|
||||
)
|
||||
.unwrap(),
|
||||
);
|
||||
}),
|
||||
("ID3v2", Id3v2Tag, |tag| {
|
||||
use lofty::id3::v2::{Frame, FrameFlags, TextInformationFrame};
|
||||
use lofty::TextEncoding;
|
||||
|
||||
let picture = Picture::new_unchecked(
|
||||
PictureType::CoverFront,
|
||||
MimeType::Jpeg,
|
||||
None,
|
||||
include_bytes!("assets/cover.jpg").to_vec(),
|
||||
);
|
||||
|
||||
tag.insert_picture(picture);
|
||||
tag.insert(
|
||||
Frame::new(
|
||||
"TSSE",
|
||||
TextInformationFrame {
|
||||
encoding: TextEncoding::Latin1,
|
||||
value: String::from(ENCODER),
|
||||
},
|
||||
FrameFlags::default(),
|
||||
)
|
||||
.unwrap(),
|
||||
);
|
||||
}),
|
||||
("ID3v1", Id3v1Tag, |tag| {}),
|
||||
("MP4 Ilst", Ilst, |tag| {
|
||||
use lofty::mp4::{Atom, AtomData, AtomIdent};
|
||||
|
||||
let picture = Picture::new_unchecked(
|
||||
PictureType::CoverFront,
|
||||
MimeType::Jpeg,
|
||||
None,
|
||||
include_bytes!("assets/cover.jpg").to_vec(),
|
||||
);
|
||||
|
||||
tag.insert_picture(picture);
|
||||
tag.insert(Atom::new(
|
||||
AtomIdent::Fourcc(*b"\xa9too"),
|
||||
AtomData::UTF8(String::from(ENCODER)),
|
||||
));
|
||||
}),
|
||||
("RIFF INFO", RIFFInfoList, |tag| {
|
||||
tag.insert(String::from("ISFT"), String::from(ENCODER));
|
||||
}),
|
||||
("Vorbis Comments", VorbisComments, |tag| {
|
||||
use lofty::ogg::OggPictureStorage;
|
||||
|
||||
let picture = Picture::new_unchecked(
|
||||
PictureType::CoverFront,
|
||||
MimeType::Jpeg,
|
||||
None,
|
||||
include_bytes!("assets/cover.jpg").to_vec(),
|
||||
);
|
||||
|
||||
let _ = tag.insert_picture(picture, None).unwrap();
|
||||
tag.push(String::from("ENCODER"), String::from(ENCODER));
|
||||
}),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue