jasonmc / forked-daapd

A re-write of the firefly media server (mt-daapd). It's released under GPLv2+. Please note that this git repository is a mirror of the official one at git://git.debian.org/~jblache/forked-daapd.git
http://blog.technologeek.org/2009/06/12/217
GNU General Public License v2.0
328 stars 45 forks source link

forked-daapd with libav >0.8.4 #98

Open freultwah opened 11 years ago

freultwah commented 11 years ago

At one point I struggled with forked-daapd not compiling with a libav Plain 9 beta and finally managed to cook up a patch that checked the library's API version and used relevant API calls depending on the version. The stuff even ran, but I ran into a problem that I could not solve, since I do not really know how to write code and have just been hacking around to make stuff work.

The problem: newer libav and ffmpeg support cover art in MP3 files. That brings about an interesting issue: many otherwise fine MP3 files heretofore detected as such are now seen as an unknown movie by forked-daapd. Why? Because libav/ffmpeg reports an extra stream all of a sudden and that stream is usually identified as MJPEG. Thus, forked-daapd sees it as a movie.

Is anybody up to the task of fixing it? I have sent my half-baked patch to Mr Blache, but development seems to have stalled and he never wrote back, so I do not know what happened to it. If anybody's interested in digging in filescanner.c or possibly elsewhere, I'll post my semi-patch here.

freultwah commented 11 years ago

Just a quick illustration.

libav 0.8.4:

[snip] Duration: 00:04:31.58, start: 0.000000, bitrate: 128 kb/s Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s At least one output file must be specified [/snip]

ffmpeg 1.1 (behaviour identical to the latest libav release):

[snip] Duration: 00:04:31.59, start: 0.000000, bitrate: 128 kb/s Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s Stream #0:1: Video: mjpeg, yuvj420p, 170x170 [SAR 157:157 DAR 1:1], 90k tbr, 90k tbn, 90k tbc Metadata: title : front comment : Cover (front) At least one output file must be specified [/snip]

As you can see, newer software reports a video stream #0:1.