[mythtv-commits] Ticket #9282: ASF plays too fast, frontend crashes on exit
MythTV
mythtv at cvs.mythtv.org
Mon Nov 29 10:19:22 UTC 2010
#9282: ASF plays too fast, frontend crashes on exit
-----------------------------------+----------------------------------------
Reporter: jan@… | Owner: jyavenard
Type: Bug Report | Status: closed
Priority: major | Milestone: unknown
Component: MythTV - Audio Output | Version: 0.24-fixes
Severity: medium | Resolution: Fixed
Keywords: | Ticket locked: 0
-----------------------------------+----------------------------------------
Changes (by jyavenard):
* status: infoneeded_new => closed
* resolution: => Fixed
Comment:
(In [27368]) Fixes #9282. This ticket revealed massive issues with a few
of the classes used with the audio framework.
- Resampler used a 32k and 128k statically allocated buffer. If the
resampling ratio was greater than 4, memory corruption would occur. The
resampler now uses a dynamically allocated memory buffer that is increased
when required and freed when the audio class is closed.
- Float audio processing, if the samples received were greater than the
statically allocated buffer (32k), memory corruption would occur. The
audio float processing is now done in 32k blocks at a time that guarantee
no memory overflow can occur.
- Audio upmixer uses a statically allocated buffer (8192 bytes). If the
samples converted were greater than 8k, corruption would occur. The
upmixer is now called iteratively 8k at a time.
- AC3 encoder uses a staticaly allocted buffer (128k). If the samples
converted were greater than 128k, audio data would be loss and audio
buffer would be left in an undetermine state. The AC3 encoder is now
called in blocks according to how many free space exists in the AC3
encoder buffer.
All issues mentioned above are corner cases scenarios and unlikely to be
experienced by the user ; typically the size of audio frames received at a
given time is typically between 80 and 300 bytes. However, in theory
ffmpeg can decode and provide samples of up to 190kB. In the sample
provided in #9282 (WM3 audio codec), the audio framework is called with
60-90kB of samples triggering most of the bugs mentioned above. The
resampler, upmixer and AC3 encoder has been in use in myth for several
years, yet the issue had never been seen up to now. Now that was fun...
Spent a whole week-end tracing what was going on. The ideal solution would
be to change all the sub-classes so they do not work with static size
buffer and be able to work with anything you throw at the,
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/9282#comment:14>
MythTV <http://www.mythtv.org/>
MythTV Media Center
More information about the mythtv-commits
mailing list