Opened 7 years ago
Closed 7 years ago
#12547 closed bug (fixed)
MediaPlayer aborts with assertion a->planar failed at libswresample/swresample.c:284
|Reported by:||markh||Owned by:||stippi|
MediaPlayer aborts with assertion a->planar failed at libswresample/swresample.c:284 when playing some files. A test file where this occurs can be found at http://samples.ffmpeg.org/A-codecs/WMA/mplayer_sample-audio_0x161.wmv
This worked fine previously, though I don't know exactly which revision it stopped working. I am not getting a debug report, so I have not attached one. Is there another way to create it?
Created as a new ticket on the suggestion of pulkomandy instead of as part of #12509.
Change History (9)
comment:1 by , 7 years ago
comment:3 by , 7 years ago
By the time we initialize libswresample, it doesn't know the number of audio channels yet:
[SWR @ 0x18778f30] Input channel count and layout are unset
So, it doesn't initialize properly, and later on, there is an assert() in the code so it just stops (which is why you don't get the "debug" dialog, this is a purposeful exit from ffmpeg).
A possible solution is delaying the init as much as possible, to a point where we are sure the audio channels layout is known.
comment:4 by , 7 years ago
hrev49930 - media files of all formats - MediaPlayer work fine.
by , 7 years ago
comment:5 by , 7 years ago
|patch:||0 → 1|
comment:6 by , 7 years ago
FWIW, this fixes playback of the files in zipfile provided by kim1963. The mplayer sample video plays for a little while, then runs into some playback error -- same error also happens when trying to seek.
Existing working files still work, YouTube audio still works (doesn't fix the video playback).
I'm not sure whether this is the right approach to take, so have attached as a patch rather than committing.
comment:7 by , 7 years ago
I would use
int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt) if possible. (https://ffmpeg.org/doxygen/2.0/samplefmt_8h.html#a06ba8a64dc4382c422789a5d0b6bf592)
If we do this, since ffmpeg 0.10 always uses packed formats, we can remove the check on version I have added on the resampling version of the code (it will always be used only with newer ffmpeg anyway).
comment:8 by , 7 years ago
|Status:||new → closed|
Applied in hrev49952, with an extra change to use an existing ffmpeg function to detect if a format is planar.
hrev49937 open playlist item: Son ar Sistr.m4a [SWR @ 0x19810220] Input channel count and layout are unset _InitFromTrack(): keyframes: 1, frame count: 8504831 Assertion a->planar failed at libswresample/swresample.c:284 Abort Abort ~> open playlist item: Los_Palmeras_-_El_Bombon_Asesino.wma [SWR @ 0x18778f30] Input channel count and layout are unset _InitFromTrack(): keyframes: 1, frame count: 9081645 Assertion a->planar failed at libswresample/swresample.c:284 Abort Abort ~> hrev49930 - OK!!!