[mythtv] YV12 problem
pb.mythtv at gmail.com
Wed Dec 12 23:54:32 UTC 2018
On 12/12/18 5:49 PM, Jean-Yves Avenard wrote:
> TV broadcasts use exclusively mpeg2, h264 and h265.
> Most embedded system like the fire2 have a hardware decoder for those.
> So what you get out of the decoder will be a GPU based nv12 image.
> For other codecs like say vp8, vp9, av1: you have to use a software
> decoder and they will output yuv420 (if 8 bits).
> I was just saying earlier that dropping yuv420, means you'll have to
> do a conversion to nv12 right outside the decoder, so an extra memory
> allocation and unnecessary copy.
> All when converting any nv12 shader to do yv12 is trivial; you could
> even use the same code for both.
Jya - some quick notes on what i have been up to -
I have added MythTV code to decode using mediacodec via FFmpeg, also new
code to support vaapi with deinterlacing (called vaapi2 in MythTV) and I
am working on nvdec. However, I need to implement direct output from
decoder to video. Currently for all of those I have added it is decoding
to memory and then using the existing MythTV OpenGL to render. This is
not fast enough for 4K video. I will have to learn how to do the direct
output from decode to OpenGL.
One problem with mediacodec decoding is that in most devices it does not
do deinterlacing and it does not pass MythTV the indicator to say video
is interlaced. This forces me to use software decoding for mpeg2 so that
we can detect the interlace and use the OpenGL deinterlacer.
On some devices (e.g. fire stick g2), the MythTV OpenGL implementation
is not fast enough to display 30 fps, so we are dropping frames. I
believe that the OpenGL processing we use is too much, causing the
slowdown. I believe we need a lightweight OpenGL render that renders the
images without all the filters we normally use. The decoding part of it
seems to be fast enough, audio and video sync nicely, just the video is
jerky becuase of the dropped frames.
I need to spend some time learning OpenGL so that I can figure this all out.
Any help or advice would be welcome.
More information about the mythtv-dev