[mythtv] concealing errors

Bruce Markey bjm at lvcm.com
Thu Feb 6 03:29:14 EST 2003


With bookmarks, cutlist, pixmaps, icons all working this
week (amazing work in such a short span of time Isaac!)
the backend spins no longer happening and DB queries
not timing out, multiple remote frontends with a single
backend is almost up to par with a localhost frontend.

The most significant problem I still see is ocassional
random "hangs". I've seen these for a couple months and
keep trying to find a solution but no luck so far. I'm
hoping someone might have some ideas about what to look
for or maybe a solution.

While watching a recording from a remote frontend, the
audio will stop and the video will freeze on a single
frame. Sometimes it will exit to the previous menu but
usually it is frozen indefinately. ESC will bring up the
exit window but it remains frozen after making a
selection. This will happen from a system on the same
hub using 100Mb ethernet but happens more frequently
on a system that is a couple hops away over a pair of
bridges. I don't believe it is a problem with the
network but latency and timing may be involved.

This might not happen at all for an entire hour or it
may happen 4 or 5 times in a half hour. It does not
happen at the same points in the files but at random
times.

If I print the 'payload' in WriteStringList, these events
all look like this:

...(playback crusing along)...
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
ac-tex damaged at 1 23
Error at MB: 507
concealing errors
31      QUERY_FILETRANSFER 19[]:[]PAUSE
69      QUERY_FILETRANSFER 
19[]:[]SEEK[]:[]-1[]:[]-12[]:[]1[]:[]0[]:[]9009053
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
31      QUERY_FILETRANSFER 19[]:[]PAUSE
69      QUERY_FILETRANSFER 
19[]:[]SEEK[]:[]-1[]:[]-11[]:[]1[]:[]0[]:[]9009053
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
31      QUERY_FILETRANSFER 19[]:[]PAUSE
69      QUERY_FILETRANSFER 
19[]:[]SEEK[]:[]-1[]:[]-11[]:[]1[]:[]0[]:[]9009054
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
31      QUERY_FILETRANSFER 19[]:[]PAUSE
69      QUERY_FILETRANSFER 
19[]:[]SEEK[]:[]-1[]:[]-11[]:[]1[]:[]0[]:[]9009055
50      QUERY_FILETRANSFER 19[]:[]REQUEST_BLOCK[]:[]128000
31      QUERY_FILETRANSFER 19[]:[]PAUSE
69      QUERY_FILETRANSFER 
19[]:[]SEEK[]:[]-1[]:[]-11[]:[]1[]:[]0[]:[]9009056
...etc...

The "ac-tex" message comes from libavcodec. There are
different variations of these errors but they all end with
"concealing errors".

The PAUSE, SEEK, REQUEST_BLOCK comes from a loop at about
line 1100 of NuppelVideoPlayer.cpp near the top of GetFrame.
This is looking for a valid 'frametype' in the frameheader.
If not found, it tries to step froward a byte at a time to
find a valid header. So it reads 12 bytes then seeks back
11 bytes, reads 12 bytes etc. Unfortunately, it pulls 128k
over the network for every 1 byte move which is why it seems
to hang forever. However, I've never seem it successfully
correct itself. But this is a symptom and not the cause of
the problem.

The problem is, why does the decoding get confused and why
isn't the data stream aligned on a valid frame header?

I've been assuming the frontend and backend file positions
are out of sync, the decoder is left in a bad state that
needs to be reset, or both.

I've tried things like FastForward(1.0) hoping to jump to
a valid frame position, using SEEK_SET rather than SEEK_CUR
in hopes of making sure the backend and frontend are really
at the same file position and lots of other experiments but
nothing yet has gotten playback back on track.

--  bjm





More information about the mythtv-dev mailing list