summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2017-03-10 06:53:45 +0200
committerMatt Ranostay <matt.ranostay@konsulko.com>2017-03-10 23:34:31 +0200
commitc88a0f0a1f38d21a5209c73d7dbcfda363635681 (patch)
treefa22c30577494dbd91a9e8b0278b8496e92cb33d
parentc843aae4dba380f79471e3e818922a0d7ab3fd73 (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.patch53
-rw-r--r--meta-agl/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend4
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