[mythtv-users] Pi3 Playback problems with 1080i MPEG2?

Curtis Gedak gedakc at gmail.com
Mon Jun 6 18:27:20 UTC 2016



On 2016-06-05 06:26 PM, Tom Harris wrote:
> On Sun, Jun 5, 2016 at 2:17 PM, Peter Bennett <cats22 at comcast.net> wrote:
> 
>>
>>
>> ------------------------------
>> *From: *"Tom Harris" <thom.j.harris at gmail.com>
>> *To: *"Discussion about MythTV" <mythtv-users at mythtv.org>
>> *Sent: *Saturday, June 4, 2016 2:05:02 PM
>> *Subject: *Re: [mythtv-users] Pi3 Playback problems with 1080i MPEG2?
>>
>>
>>
>>
>> On Wed, Jun 1, 2016 at 8:39 AM, Tom Harris <thom.j.harris at gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Mon, May 30, 2016 at 7:35 AM, Peter Bennett (cats22) <
>>> cats22 at comcast.net> wrote:
>>>>
>>>> On 05/29/2016 09:58 PM, Tom Harris wrote:
>>>>> I just set up a new Pi3 frontend on Raspbian Lenny + Peter’s .deb
>>>>> package for 0.27.
>>>>> After some tweaking of various settings in raspbian and mythfrontend,
>>>>> it is working well.
>>>>>
>>>>> The one issue is that playback of 1080i content has problems.  It
>>>>> misses frames, pauses, and is generally not watchable.  720p video is
>>>>> fine.
>>>>>
>>>>> I verified a few things in debugging it:  content streams are fine,
>>>>> bandwidth to frontend is fine, settings are correct (as far as I can
>>>>> tell).   I played back the same videos just fine via Kodi’s mythtv
>>>>> add-on on my Pi2 as well as the Apple TV mythfrontend.
>>>>>
>>>>> ‘-v playback’ confirms openmax is enabled.   But, there is an error,
>>>>> which I’m not sure if it’s normal or a real problem: “E  AFD: Unknown
>>>>> decoding error"
>>>>>
>>>>> Has anyone else run into this?   Any more settings I should check?
>>>>>
>>>> Check your playback profile. You should have "Openmax normal" selected.
>>>> Also edit the profile and check that the decoder and renderer are both
>>>> set to openmax. Set the number of processors to 4.
>>>
>>> Yes, all of those settings are correct.   The other settings on those
>>> pages, I just left default:
>>>
>>> ‘Deblocking filter’ is selected
>>> ‘OSD fade’ is not selected
>>> ‘OSD renderer’ is soft blend
>>>
>>> Primary deinterlacer: Advanced (HW)
>>>
>>> Fallback deinterlacer: One field
>>>
>>>
>>>
>>>>
>>>> Do you have the latest version? There was a bug with dropping frames
>>>> that has been fixed. "Unknown decoding error" is one message that
>>>> occurred with that bug.
>>>
>>> Yes, it appears to be current (same version currently downloadable from
>>> your site).
>>>
>>>>
>>>>
>>>> What type of content is this? Is it MPEG2 or H264? Is it recordings or
>>>> videos? Is it only one particular recording?
>>>
>>> MPEG2.  It’s Comcast cable TV recordings, from several stations - some
>>> local NBC/CBS, some national TNT, etc.
>>>
>>>>
>>>> Are you using an on screen display (e.g. Subtitles or Info)?
>>>
>>> No. No subtitles, etc.
>>>
>>>>
>>>> If you still have problems let us know your version (mythfrontend
>>>> --version).
>>>
>>> MythTV Version : v0.27.6-86-ge2ccfdf
>>> MythTV Branch : raspi/0.27
>>> Network Protocol : 77
>>> Library API : 0.27.20151025-1
>>> QT Version : 5.3.2
>>> Options compiled in:
>>>  linux profile use_hidesyms using_asa using_oss using_pulse
>>> using_pulseoutput using_backend using_bindings_perl using_bindings_python
>>> using_bindings_php using_dvb using_firewire using_frontend using_hdhomerun
>>> using_ceton using_hdpvr using_ivtv using_joystick_menu using_libcrypto
>>> using_libdns_sd using_libfftw3 using_libxml2 using_lirc using_mheg
>>> using_qtwebkit using_qtscript using_qtdbus using_sdl using_taglib
>>> using_v4l2 using_x11 using_xrandr using_xv using_profiletype
>>> using_bindings_perl using_bindings_python using_bindings_php
>>> using_mythtranscode using_opengles using_openmax using_ffmpeg_threads
>>> using_mheg using_libass using_libxml2
>>>
>>>  Here is some more complete output from ‘-v playback’.. anything else I
>>> can enable for more debugging detail?
>>>
>>> 2016-05-31 19:35:47.336368 I
>>>  FileRingBuf(myth://mythbackend/1720_20160531230000.mpg):
>>> OpenFile(myth://mythbackend/1720_20160531230000.mpg, 2000 ms)
>>> 2016-05-31 19:35:49.477791 I  MythCoreContext: Connecting to backend
>>> server: 10.1.1.11:6543 (try 1 of 1)
>>> 2016-05-31 19:35:49.502527 I  TV: StartPlayer(0, WatchingRecording, main)
>>> -- begin
>>> 2016-05-31 19:35:49.502727 I  TV: Elapsed time since TV constructor was
>>> called: 2709 ms
>>> 2016-05-31 19:35:49.931088 N  AudioPlayer: Enabling Audio
>>> 2016-05-31 19:35:50.109956 I  Player(0): Stretch Factor 1, allow passthru
>>> 2016-05-31 19:35:50.128786 I  AFD: Buffer size: 32768 streamed 0 seekable
>>> 1
>>> 2016-05-31 19:35:50.629389 I  AFD: Stream #0, has id 0xe23 codec id
>>> MPEG2VIDEO, type Video, bitrate 0 at 0x1f67420
>>> 2016-05-31 19:35:50.629440 I  AFD: Stream #1, has id 0xe24 codec id AC3,
>>> type Audio, bitrate 384000 at 0x1f64570
>>> 2016-05-31 19:35:50.629462 I  AFD: codec AC3 has 6 channels
>>> 2016-05-31 19:35:50.629477 I  AFD: Looking for decoder for AC3
>>> 2016-05-31 19:35:50.630466 I  AFD: Opened codec 0x1f64770, id(AC3)
>>> type(Audio)
>>> 2016-05-31 19:35:50.636921 I  AFD: Stream #2, has id 0xe25 codec id AC3,
>>> type Audio, bitrate 192000 at 0x1f64d70
>>> 2016-05-31 19:35:50.636954 I  AFD: codec AC3 has 2 channels
>>> 2016-05-31 19:35:50.636971 I  AFD: Looking for decoder for AC3
>>> 2016-05-31 19:35:50.637973 I  AFD: Opened codec 0x2450270, id(AC3)
>>> type(Audio)
>>> 2016-05-31 19:35:50.638221 I  AFD: Trying to select best video track
>>> 2016-05-31 19:35:50.638325 I  AFD: Selected track #0 (id 0xe23 codec id
>>> MPEG2VIDEO, type Video, bitrate 500000 at 0x1f67420)
>>> 2016-05-31 19:35:50.675151 I  VDP: Accepting: cmp(> 0 0) dec(openmax)
>>> cpus(4) skiploop(enabled) rend(openmax) osd(softblend) osdfade(disabled)
>>> deint(openmaxadvanced,onefield) filt()
>>> 2016-05-31 19:35:50.675233 I  VDP: LoadBestPreferences(2048x2048, 0)
>>> 2016-05-31 19:35:50.675309 I  VDP: LoadBestPreferences(2048x2048, 60)
>>> 2016-05-31 19:35:50.675362 I  VDP: LoadBestPreferences(1920x1080, 60)
>>> 2016-05-31 19:35:50.704657 I  DOMX:2 Codec MPEG2VIDEO =>
>>> OMX_VIDEO_CodingMPEG2
>>> 2016-05-31 19:35:50.707993 I  AFD: Using 1 CPUs for decoding
>>> 2016-05-31 19:35:50.708047 I  AFD: InitVideoCodec() 0x1f64190
>>> id(MPEG2VIDEO) type (Video).
>>> 2016-05-31 19:35:50.708163 I  AFD: Selected FPS is 29.97 (avg 29.97 codec
>>> 29.97 container 90000 estimated 29.97)
>>> 2016-05-31 19:35:50.708237 I  Player(0): SetFrameInterval ps:1 scan:3
>>> 2016-05-31 19:35:50.708309 I  Player(0): detectInterlace(Detect Scan,
>>> Interlaced Scan, 29.97, 1080) ->Interlaced Scan
>>> 2016-05-31 19:35:50.708492 I  AFD: Using openmax for video decoding
>>> 2016-05-31 19:35:50.708560 I  AFD: Opened codec 0x1f64190, id(MPEG2VIDEO)
>>> type(Video)
>>> 2016-05-31 19:35:50.752930 I  AOBase: Opening audio device 'OpenMAX:hdmi'
>>> ch 2(6) sr 48000 sf signed 16 bit reenc 0
>>> 2016-05-31 19:35:50.773447 I  Dec: Selected track #1 (type 2) in the
>>> Unknown language(0)
>>> 2016-05-31 19:35:50.773522 I  Dec: Resyncing position map. posmapStarted
>>> = 0 livetv(0) watchingRec(1)
>>> 2016-05-31 19:35:51.427047 I  Dec: Position map filled from DB to: 388010
>>> 2016-05-31 19:35:51.519841 I  Dec: Duration map filled from DB to: 388010
>>> 2016-05-31 19:35:51.529885 I  Dec: SyncPositionMap watchingrecording,
>>> from DB: 17072 entries
>>> 2016-05-31 19:35:51.529991 I  Player(0): Filling position map from 388011
>>> to end
>>> 2016-05-31 19:35:51.562345 I  Dec: Position map filled from Encoder to:
>>> 388070
>>> 2016-05-31 19:35:51.562516 I  Dec: Duration map filled from Encoder to:
>>> 388070
>>> 2016-05-31 19:35:51.562550 I  Dec: SyncPositionMap watchingrecording
>>> total: 17076 entries
>>> 2016-05-31 19:35:51.562600 I  Dec: SyncPositionMap, new totframes:
>>> 388070, new length: 12948, posMap size: 17076
>>> 2016-05-31 19:35:51.571581 I  AFD: Partial position map found
>>> 2016-05-31 19:35:51.571619 I  AFD: Successfully opened decoder for file:
>>> "myth://mythbackend/1720_20160531230000.mpg". novideo(0)
>>> 2016-05-31 19:35:51.638587 I  VideoOutput: Allowed renderers:
>>> xv-blit,xshm,xlib,openmax
>>> 2016-05-31 19:35:51.638644 I  VideoOutput: Allowed renderers (filt:
>>> openmax): openmax
>>> 2016-05-31 19:35:51.681016 I  VDP: Accepting: cmp(> 0 0) dec(openmax)
>>> cpus(4) skiploop(enabled) rend(openmax) osd(softblend) osdfade(disabled)
>>> deint(openmaxadvanced,onefield) filt()
>>> 2016-05-31 19:35:51.681067 I  VDP: LoadBestPreferences(2048x2048, 0)
>>> 2016-05-31 19:35:51.681135 I  VDP: LoadBestPreferences(2048x2048, 60)
>>> 2016-05-31 19:35:51.681188 I  VDP: LoadBestPreferences(1920x1080, 60)
>>> 2016-05-31 19:35:51.681254 I  VideoOutput: Preferred renderer: openmax
>>> 2016-05-31 19:35:51.681285 I  VideoOutput: Trying video renderer:
>>> 'openmax'
>>> 2016-05-31 19:35:51.976045 I  VDP: Accepting: cmp(> 0 0) dec(openmax)
>>> cpus(4) skiploop(enabled) rend(openmax) osd(softblend) osdfade(disabled)
>>> deint(openmaxadvanced,onefield) filt()
>>> 2016-05-31 19:35:51.976099 I  VDP: LoadBestPreferences(2048x2048, 0)
>>> 2016-05-31 19:35:51.976171 I  VDP: LoadBestPreferences(2048x2048, 60)
>>> 2016-05-31 19:35:52.027648 I  VideoOutWindow::SetPIPState. pip_state: 0]
>>> 2016-05-31 19:35:52.027702 I  VDP: LoadBestPreferences(2048x2048, 29.97)
>>> 2016-05-31 19:35:52.027815 I  VOMX:3 Init vbuf=1920x1088 vdisp=1920x1080
>>> aspect=1.77778 win=0,0,1920x1080 codec=MPEG2
>>> 2016-05-31 19:35:52.027855 I  Snapping width to avoid scaling: width:
>>> 1920, left: 0
>>> 2016-05-31 19:35:52.027888 I  Display Rect  left: 0, top: 135, width:
>>> 1920, height: 810, aspect: 1.33333
>>> 2016-05-31 19:35:52.027920 I  Video Rect    left: 0, top: 0, width: 1920,
>>> height: 1080, aspect: 1.77778
>>> 2016-05-31 19:35:52.027949 I  VDP: LoadBestPreferences(1920x1088, 29.97)
>>> 2016-05-31 19:35:52.027993 I  Snapping width to avoid scaling: width:
>>> 1920, left: 0
>>> 2016-05-31 19:35:52.028025 I  Display Rect  left: 0, top: 135, width:
>>> 1920, height: 810, aspect: 1.33333
>>> 2016-05-31 19:35:52.028061 I  Video Rect    left: 0, top: 0, width: 1920,
>>> height: 1080, aspect: 1.77778
>>> 2016-05-31 19:35:52.028091 I  VDP: SetVideoRenderer(openmax)
>>> 2016-05-31 19:35:52.028115 I  VDP: SetVideoRender(openmax) ==
>>> GetVideoRenderer()
>>> 2016-05-31 19:35:52.029805 E  X11 ModeLine query returned zeroes
>>> 2016-05-31 19:35:52.030347 I  VideoOutput: Pixel dimensions: Screen
>>> 1920x1080, window 1920x1080
>>> 2016-05-31 19:35:52.030404 I  VideoOutput: Actual display dimensions:
>>> 508x286 mm  Aspect: 1.77622
>>> 2016-05-31 19:35:52.030538 I  VideoOutput: Estimated window dimensions:
>>> 508x286 mm  Aspect: 1.77622
>>> 2016-05-31 19:35:52.136229 I  Snapping height to avoid scaling: height:
>>> 1080, top: 0
>>> 2016-05-31 19:35:52.136281 I  Snapping width to avoid scaling: width:
>>> 1920, left: 0
>>> 2016-05-31 19:35:52.136347 I  Display Rect  left: 0, top: 0, width: 1920,
>>> height: 1080, aspect: 1.77778
>>> 2016-05-31 19:35:52.136414 I  Video Rect    left: 0, top: 0, width: 1920,
>>> height: 1080, aspect: 1.77778
>>> 2016-05-31 19:35:52.136531 I  VOMX:3 SetVideoRect display=0,0,1920x1080
>>> (1.77622) video=0,0,1920x1080 (1.77778)
>>> 2016-05-31 19:35:52.205637 I  Over/underscan. V: 0, H: 0
>>> 2016-05-31 19:35:52.205687 I  Snapping height to avoid scaling: height:
>>> 1080, top: 0
>>> 2016-05-31 19:35:52.205706 I  Snapping width to avoid scaling: width:
>>> 1920, left: 0
>>> 2016-05-31 19:35:52.205747 I  Display Rect  left: 0, top: 0, width: 1920,
>>> height: 1080, aspect: 1.77778
>>> 2016-05-31 19:35:52.205780 I  Video Rect    left: 0, top: 0, width: 1920,
>>> height: 1080, aspect: 1.77778
>>> 2016-05-31 19:35:52.205960 I  Player(0): LoadFilters(''..) -> 0x0
>>> 2016-05-31 19:35:52.242865 I  Player(0): Decoder thread starting.
>>> 2016-05-31 19:35:52.259468 I  OSD: Loaded window osd_message
>>> 2016-05-31 19:35:52.272461 I  OSD: Loaded window osd_input
>>> 2016-05-31 19:35:52.304081 E  MythFontProperties: Failed to load
>>> 'Liberation Sans', got 'DejaVu Sans' instead
>>>                         Location: /usr/share/mythtv/themes/Terra/osd.xml
>>> @ 119
>>>                         Name: 'timefont'        Type: 'fontdef'
>>> 2016-05-31 19:35:52.308133 I  OSD: Loaded window program_info
>>> 2016-05-31 19:35:52.325793 E  MythFontProperties: Failed to load
>>> 'Liberation Sans', got 'DejaVu Sans' instead
>>>                         Location: /usr/share/mythtv/themes/Terra/osd.xml
>>> @ 247
>>>                         Name: 'timefont'        Type: 'fontdef'
>>> 2016-05-31 19:35:52.329043 I  OSD: Loaded window browse_info
>>> 2016-05-31 19:35:52.340911 I  OSD: Loaded window osd_status
>>> 2016-05-31 19:35:52.356016 I  OSD: Loaded window osd_program_editor
>>> 2016-05-31 19:35:52.394023 I  OSD: Loaded window osd_debug
>>> 2016-05-31 19:35:52.394120 I  OSD: Loaded OSD: size 1920x1080 offset 0+0
>>> 2016-05-31 19:35:52.394604 I  OSD: Created window aa_OSD_SUBTITLES
>>> 2016-05-31 19:35:52.394787 I  Player(0): ClearAfterSeek(0)
>>> 2016-05-31 19:35:52.396431 E  X11 ModeLine query returned zeroes
>>> 2016-05-31 19:35:52.396708 I  VDP: GetFilteredDeint() : openmax ->
>>> 'openmaxadvanced'
>>> 2016-05-31 19:35:52.396782 I  VOMX:3 SetupDeinterlace switching on
>>> 'openmaxadvanced'
>>> 2016-05-31 19:35:52.397203 I  VSYNC: DRMVideoSync: Could not open device
>>> /dev/dri/card0, No such file or directory
>>> 2016-05-31 19:35:52.397324 E  VSYNC: RTCVideoSync: Could not open
>>> /dev/rtc:
>>>                         eno: No such file or directory (2)
>>> 2016-05-31 19:35:52.398550 E  X11 ModeLine query returned zeroes
>>> 2016-05-31 19:35:52.398790 I  Player(0): Video timing method: USleep with
>>> busy wait
>>> 2016-05-31 19:35:52.398867 I  Player(0): Display Refresh Rate: 59.941
>>> Video Frame Rate: 29.970
>>> 2016-05-31 19:35:52.398921 I  Player(0): SetFrameInterval ps:1 scan:1
>>> 2016-05-31 19:35:52.402965 I  playCtx: StartPlaying(): took 0 ms to start
>>> player.
>>> 2016-05-31 19:35:52.403052 I  TV: Created player.
>>> 2016-05-31 19:35:52.403146 I  TV: StartPlayer(0, WatchingRecording, main)
>>> -- end ok
>>> 2016-05-31 19:35:52.403280 I  TV: Changing from None to WatchingRecording
>>> 2016-05-31 19:35:52.442642 I  TV: DrawUnusedRects() -- begin
>>> 2016-05-31 19:35:52.442686 I  TV: DrawUnusedRects() -- end
>>> 2016-05-31 19:35:52.442857 I  TV: Main UI disabled.
>>> 2016-05-31 19:35:52.442885 I  TV: HandleStateChange(0) -- end
>>> 2016-05-31 19:35:52.443040 I  TV: tv->Playback() -- end
>>> 2016-05-31 19:35:52.443099 I  TV: Entering main playback loop.
>>> 2016-05-31 19:35:52.481832 I  DOMX:2 SettingsChanged - begin
>>> 2016-05-31 19:35:52.483807 I  OMX:2 Port 131: output, bufs=2(1)
>>> bufsize=3133440 at 16 discontiguous, disabled, unpopulated
>>> 2016-05-31 19:35:52.483963 I  OMX:2 Port 131: video, w=1920 h=1080
>>> stride=1920 sliceH=1088 bps=0 fps=29.97 compress=OMX_VIDEO_CodingUnused
>>> enc=OMX_COLOR_FormatYUV420PackedPlanar
>>> 2016-05-31 19:35:52.484300 I  DOMX:2
>>> OMX_InterlaceFieldsInterleavedUpperFirst
>>> 2016-05-31 19:35:52.484466 I  DOMX:2 Pixel aspect x/y = 1/1
>>> 2016-05-31 19:35:52.499934 I  ScreenSaverX11Private: DPMS Deactivated 1
>>> 2016-05-31 19:35:52.501348 I  Player(0): Waiting for video buffers...
>>> 2016-05-31 19:35:52.504373 I  DOMX:2 SettingsChanged - end
>>> 2016-05-31 19:35:52.504407 E  AFD: Unknown decoding error
>>> 2016-05-31 19:35:52.569794 I  VDP: GetFilteredDeint() : openmax ->
>>> 'openmaxadvanced'
>>> 2016-05-31 19:35:52.569854 I  Player(0): Enabled deinterlacing
>>> 2016-05-31 19:35:53.019851 I  VideoOutput: Created YV12 OSD.
>>> 2016-05-31 19:35:53.029279 I  TV: DrawUnusedRects() -- begin
>>> 2016-05-31 19:35:53.029310 I  TV: DrawUnusedRects() -- end
>>> 2016-05-31 19:35:53.033187 I  TV: DrawUnusedRects() -- begin
>>> 2016-05-31 19:35:53.033217 I  TV: DrawUnusedRects() -- end
>>> 2016-05-31 19:35:53.131675 I  TV: DrawUnusedRects() -- begin
>>> 2016-05-31 19:35:53.131711 I  TV: DrawUnusedRects() -- end
>>> 2016-05-31 19:35:53.171827 I  Player(0): Video is 6.27117 frames behind
>>> audio (too slow), dropping frame to catch up.
>>> 2016-05-31 19:35:53.189281 I  Player(0): Video is 10.7273 frames behind
>>> audio (too slow), dropping frame to catch up.
>>>
>>>  (snip..  it keeps generating messages about skipping frames, etc.)
>>>
>>
>> I scanned through all the list postings about Pi setup to verify my
>> settings.  The only one that differed in some posts was the number of CPU
>> cores used for playback.  I changed mine from 4 to 1, but that made no
>> difference.
>>
>> I also installed Kodi on raspbian, as a sanity check on the
>> hardware/software/network, and playback is perfect in Kodi with the
>> mythtv.pvr add-on playback the same recordings in Kodi that didn’t play
>> well in mythtv.    I’m not sure where to go from here..  is there any way
>> to get more debugging information out of OpenMax to narrow down the issue?
>>
>>
>>
>> Other things to check
>> - GPU memory, must be at least 128MB, but try 256MB to see if that helps
>>
> 
> I’ve got it set to 256MB.  At that level, there is still free memory
> available and zero swap usage.
> 
> 
>> - Perhaps some other process is using CPU. Try running top from ssh while
>> playing back and see if anything other than mythfrontend is using lots of
>> CPU.
>>
> 
> Mythfrontend is the only significant CPU user, and there is plenty of idle
> CPU.
> 
> 
>> - Is the mpeg2 license correctly installed?
>>
> 
> Yes, confirmed via the command “vcgencmd codec_enabled MPG2” and also via
> playback in Kodi.
> 
> 
> Thanks for the help.    At this point, I think I’ll continue with Kodi for
> MythTV playback, and maybe when the next mythtv update is available I’ll
> give that another try.
> 


Since you mentioned that playback of 1080i content worked well in Kodi,
did you also check to see what resolution was being used with Kodi?

With a default OpenELEC 6.0.3 (Kodi) install on my RPi2, the default
resolution was set to "DESKTOP" which turned out to be 1280x720p in my
situation.

The video resolution can be found at:

System -> Settings -> System -> Video output

If your Kodi resolution is less than 1920x1080 then you might try using
the same resolution in mythfrontend to see if it also works well with
1080i content.

Curtis


More information about the mythtv-users mailing list