[mythtv] Mediacodec problem with fire stick 4K

Aman Gupta aman at tmm1.net
Sat Dec 15 19:46:49 UTC 2018


On Wed, Dec 5, 2018 at 3:13 PM Aman Gupta <aman at tmm1.net> wrote:

>
> On Wed, Nov 21, 2018 at 9:46 PM Aman Gupta <aman at tmm1.net> wrote:
>
>>
>> On Tue, Nov 20, 2018 at 2:32 PM Aman Gupta <aman at tmm1.net> wrote:
>>
>>>
>>>
>>> On Tue, Nov 20, 2018 at 2:28 PM Peter Bennett <pb.mythtv at gmail.com>
>>> wrote:
>>>
>>>> Hi Aman
>>>>
>>>> When running with mediacodec on the fire stick 4K, there is a problem
>>>> with MPEG2. Perhaps the 4K does not support MPEG2 or the interlacing is
>>>> causing a problem. What appears to happen is that we get the situation
>>>> where we have done avcodec_send_packet until it returns
>>>> AVERROR(EAGAIN).
>>>> The avcodec_receive_frame also returns AVERROR(EAGAIN) and this
>>>> continues forever, we never get a frame out of it. With h264 it works
>>>> fine. If there is no MPEG2 support, maybe we should get an error return
>>>> or it should revert to software decoding. Is there anything ffmpeg can
>>>> do to avoid this, or do I have something wrong in my code?
>>>>
>>>
>>> The hardware mpeg2 decoder on that device is extremely buggy.
>>>
>>> For some interlaced streams, it will generate flashing green output:
>>> https://github.com/amzn/exoplayer-amazon-port/issues/58
>>>
>>
> Amazon has verified this bug and says they are waiting on a vendor driver
> update to resolve
>

I'm hearing that this green flash issue is fixed in the latest FireOS
update.

it.
>
> <https://github.com/amzn/exoplayer-amazon-port/issues/58>
>>>
>>> For videos where it works, the decoder will randomly lock up after some
>>> time and stop accepting new packets and also stop returning new frames (as
>>> you noticed).
>>>
>>
>> The green screen issue is definitely hardware specific, but this freezing
>> issue may actually be an ffmpeg bug.
>>
>
> I've gotten reports that this freeze issue also happens with h264
> MediaCodec decoding on the 4K Stick, which further suggests this is an
> issue with ffmpeg's mediacodec wrapper.
>
> Since this seems like some sort of race condition, one thing to try would
> be adjusting the timeouts used when dequeuing input/output buffers:
>
> https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/mediacodecdec_common.c#L84-L85
>
> Another (much bigger) change would be to introduce threads and use one
> dedicated thread for output buffers. VLC uses a similar technique and I got
> similar advice from a developer on the Android media team- mediacodec is
> thread safe and using separate threads for input and output is recommended.
>
> Aman
>
>
>> I recall that I've seen the freeze happen on other FireOS devices, like
>> the older FireTV boxes.
>>
>> Further, none of these devices (including the new 4K stick) seem to
>> reproduce the hang when using Exoplayer or VLC.
>>
>> However I'm not sure what ffmpeg could do differently to avoid this
>> issue. The code in ffmpeg is already very similar to Exoplayer.
>>
>> I've spent dozens of hours trying to debug this at various times this
>> year and sadly made no progress. It seems to happen quite regularly on the
>> 4K stick, which at least makes it easier to try out potential fixes.
>>
>> If anyone wants to spend time on this I'm happy to advise, but I have
>> given up on trying to fix this myself.
>>
>> Aman
>>
>>
>>> These are issues in the underlying codec/hardware/OS and not something
>>> ffmpeg can work-around.
>>>
>>> Aman
>>>
>>>
>>>>
>>>> I have set ffmpeg debug logging and captured the log. That is here ->
>>>> https://pastebin.com/ZF9JiMTX
>>>> The code where we process packets is here ->
>>>>
>>>> https://github.com/MythTV/mythtv/blob/a1349d7f535dfcc5993a1f515e4ee2cb257e3aa6/mythtv/libs/libmythtv/avformatdecoder.cpp#L3686
>>>>
>>>> Peter
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mythtv.org/pipermail/mythtv-dev/attachments/20181215/feca1b34/attachment.html>


More information about the mythtv-dev mailing list