diff options
author | Matt Ranostay <matt.ranostay@konsulko.com> | 2017-03-10 06:53:45 +0200 |
---|---|---|
committer | Matt Ranostay <matt.ranostay@konsulko.com> | 2017-03-10 23:34:31 +0200 |
commit | c88a0f0a1f38d21a5209c73d7dbcfda363635681 (patch) | |
tree | fa22c30577494dbd91a9e8b0278b8496e92cb33d | |
parent | c843aae4dba380f79471e3e818922a0d7ab3fd73 (diff) |
lightmediascanner: add fix for ogg metadata parsing
Some ogg headers have large album art that goes past the
hardcoded 40960 byte header parsing limit, and this change
uses a dynamic check.
Change-Id: Iee565454633f43fc82ecfbf681ee634f8e47a033
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
-rw-r--r-- | meta-agl/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch | 53 | ||||
-rw-r--r-- | meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend | 4 |
2 files changed, 56 insertions, 1 deletions
diff --git a/meta-agl/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch b/meta-agl/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch new file mode 100644 index 000000000..6a0b8ff93 --- /dev/null +++ b/meta-agl/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch @@ -0,0 +1,53 @@ +From 3e66b97221440b17a184feb48692dce7e0561cac Mon Sep 17 00:00:00 2001 +From: Matt Ranostay <matt.ranostay@konsulko.com> +Date: Wed, 8 Mar 2017 16:30:01 -0800 +Subject: [PATCH] plugin: ogg: fix chucksize issue + +There are some OGG files that have metadata chucks that go over the +hardcoded 10 * 4096 size due to album art. This patchset just parses +each chuck and continues till it runs out of valid chunks. + +Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> +--- + src/plugins/ogg/ogg.c | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +diff --git a/src/plugins/ogg/ogg.c b/src/plugins/ogg/ogg.c +index 1c0818e..c94dc38 100644 +--- a/src/plugins/ogg/ogg.c ++++ b/src/plugins/ogg/ogg.c +@@ -47,8 +47,6 @@ + int CHUNKSIZE = 4096; + #endif + +-#define MAX_CHUNKS_PER_PAGE 10 +- + struct stream { + struct lms_stream base; + int serial; +@@ -122,10 +120,8 @@ _set_lms_info(struct lms_string_size *info, const char *tag) + + static bool _ogg_read_page(FILE *fp, ogg_sync_state *osync, ogg_page *page) + { +- int i; +- +- for (i = 0; i < MAX_CHUNKS_PER_PAGE && ogg_sync_pageout(osync, page) != 1; +- i++) { ++ while(ogg_sync_pageout(osync, page) != 1) ++ { + lms_ogg_buffer_t buffer = lms_get_ogg_sync_buffer(osync, CHUNKSIZE); + int bytes = fread(buffer, 1, CHUNKSIZE, fp); + +@@ -136,9 +132,6 @@ static bool _ogg_read_page(FILE *fp, ogg_sync_state *osync, ogg_page *page) + ogg_sync_wrote(osync, bytes); + } + +- if (i > MAX_CHUNKS_PER_PAGE) +- return false; +- + return true; + } + +-- +2.7.4 + diff --git a/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend b/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend index 521724f32..231b3e665 100644 --- a/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend +++ b/meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend @@ -3,7 +3,9 @@ PACKAGECONFIG = "ogg flac wave m3u pls jpeg png" FILESEXTRAPATHS_prepend := "${THISDIR}/files:" -SRC_URI += "file://lightmediascanner.service" +SRC_URI += "file://lightmediascanner.service \ + file://plugin-ogg-fix-chucksize-issue.patch \ + " inherit systemd |