[mythtv] commflag debugging

Daniel Chassot daniel.chassot at gmail.com
Mon Jan 2 05:55:19 EST 2006


On 1/2/06, Jim Westfall <jwestfall at surrealistic.net> wrote:
> In the main recording I have been looking at commflag finds the first
> break as frame 40130 (verified with your debugging code).  When this video
> frame (not number) shows up in mythfrontend its frame number 37319.  This
> of course screws up commbreak skips, when mythfrontend get to what it
> calls frame #40130 ist no where near the commercial.

This makes me think to a similar problem I have while rebuilding the
seek indexes on my DVB recordings, perhaps it is the same one as
yours.

While rebuilding the seed indexes, I get these messages (--rebuild -v playback):
2006-01-02 11:31:30.969 NVP: ClearAfterSeek()
2006-01-02 11:31:30.971 AFD: positionMap[ 0 ] == 376.
2006-01-02 11:31:30.979 AFD: positionMap[ 0 ] == 213192.
2006-01-02 11:31:30.996 AFD: HandleGopStart: gopset not set, syncing positionMap
2006-01-02 11:31:30.996 Resyncing position map. posmapStarted = 0
livetv(0) watchingRec(0)
2006-01-02 11:31:30.997 SyncPositionMap prerecorded, from DB: 2 entries
2006-01-02 11:31:30.997 AFD: HandleGopStart: Initial key frame distance: 15.
2006-01-02 11:31:30.997 AFD: positionMap[ 1 ] == 715152.
2006-01-02 11:31:31.017 AFD: HandleGopStart: Key frame distance
changed from 16 to 18.
2006-01-02 11:31:31.017 AFD: positionMap[ 2 ] == 1272948.
2006-01-02 11:31:31.031 AFD: HandleGopStart: Key frame distance
changed from 18 to 17.
2006-01-02 11:31:31.031 AFD: positionMap[ 3 ] == 1768704.
2006-01-02 11:31:31.046 AFD: positionMap[ 4 ] == 2286268.
2006-01-02 11:31:31.063 AFD: HandleGopStart: Key frame distance
changed from 17 to 18.
2006-01-02 11:31:31.063 AFD: positionMap[ 5 ] == 2921332.
2006-01-02 11:31:31.080 AFD: HandleGopStart: Key frame distance
changed from 18 to 19.
2006-01-02 11:31:31.080 AFD: positionMap[ 6 ] == 3582904.
2006-01-02 11:31:31.092 AFD: HandleGopStart: Key frame distance
changed from 19 to 16.
2006-01-02 11:31:31.092 AFD: positionMap[ 8 ] == 3961724.
2006-01-02 11:31:31.106 AFD: HandleGopStart: Key frame distance
changed from 16 to 13.
2006-01-02 11:31:31.106 AFD: positionMap[ 11 ] == 4415744.
2006-01-02 11:31:31.122 AFD: HandleGopStart: Key frame distance
changed from 13 to 20.
2006-01-02 11:31:31.139 AFD: HandleGopStart: Key frame distance
changed from 20 to 18.
2006-01-02 11:31:31.157 AFD: positionMap[ 11 ] == 6360792.
2006-01-02 11:31:31.177 AFD: HandleGopStart: Key frame distance
changed from 18 to 19.
2006-01-02 11:31:31.177 AFD: positionMap[ 11 ] == 7091736.
2006-01-02 11:31:31.194 AFD: HandleGopStart: Key frame distance
changed from 19 to 18.
2006-01-02 11:31:31.195 AFD: positionMap[ 13 ] == 7782260.
2006-01-02 11:31:31.207 AFD: HandleGopStart: Key frame distance
changed from 18 to 12.
2006-01-02 11:31:31.207 AFD: positionMap[ 20 ] == 8180820.
2006-01-02 11:31:31.240 AFD: HandleGopStart: Key frame distance
changed from 12 to 16.
2006-01-02 11:31:31.255 AFD: HandleGopStart: Key frame distance
changed from 16 to 18.
2006-01-02 11:31:31.267 AFD: HandleGopStart: Key frame distance
changed from 18 to 11.
2006-01-02 11:31:31.267 AFD: positionMap[ 26 ] == 9594956.
2006-01-02 11:31:31.283 AFD: HandleGopStart: Key frame distance
changed from 11 to 17.
2006-01-02 11:31:31.296 AFD: HandleGopStart: Key frame distance
changed from 17 to 20.
2006-01-02 11:31:31.311 AFD: HandleGopStart: Key frame distance
changed from 20 to 25.
2006-01-02 11:31:31.326 AFD: HandleGopStart: Key frame distance
changed from 25 to 23.
2006-01-02 11:31:31.340 AFD: HandleGopStart: Key frame distance
changed from 23 to 24.
2006-01-02 11:31:31.355 AFD: HandleGopStart: Key frame distance
changed from 24 to 17.
2006-01-02 11:31:31.370 AFD: HandleGopStart: Key frame distance
changed from 17 to 18.
2006-01-02 11:31:31.376 AFD: HandleGopStart: Key frame distance
changed from 18 to 11.
2006-01-02 11:31:31.376 AFD: positionMap[ 40 ] == 13251556.
.....
2006-01-02 11:31:52.837 AFD: HandleGopStart: Key frame distance
changed from 21 to 1.
2006-01-02 11:31:52.838 AFD: positionMap[ 24578 ] == 510143828.
2006-01-02 11:31:52.856 AFD: positionMap[ 24598 ] == 510661580.
2006-01-02 11:31:52.871 AFD: positionMap[ 24616 ] == 511148124.
2006-01-02 11:31:52.874 AFD: positionMap[ 24625 ] == 511306420.

When editing the show in mythtv, it is not (everywhere) seekable, the
displayed size of the movie is wrong.

I'v noticed in the log that more position map are inserted when the
keyframe distance is set to 1 and this corresponds the the place where
the file becomes seekable.

looking in avformatdecoder.cpp around line 794, I found that the
keyframe distance is initially set to 15 except for AVI file because
the avi keyframes are too irregular. As it seems to be my problem too
for my DVB recordings, I've commented out the line 794: if
(!strcmp(fmt->name, "avi")).

With this modification, the file is again seekable and it's size
becomes correct.
Give it a try (rebuild seek tables + commflag again) and let's see if it helps.

Daniel


More information about the mythtv-dev mailing list