[mythtv] Mythtranscode .mpg => .mpg not .mpg => .nuv

Geoffrey Hausheer mythtv0368 at phracturedblue.com
Sun Nov 6 11:09:39 EST 2005


On 11/6/05, Cory Papenfuss wrote:
>         My bad... that was out of less.  A raw cat of the logfile stops
> printing there, but does not send a \n
>
> [papenfuss at juneau deleteme]$ tail log.txt
> AUD: pts: 124386840
> Id:1:  0:23:02.076 V:2602264 6159 A:612075 3959
> AUD: pts: 124389000
> Id:1:  0:23:02.100 V:2602264 6159 A:611499 3915
> AUD: pts: 124391160
> Id:1:  0:23:02.124 V:2602264 6159 A:610923 3871
> AUD: pts: 124393320
> Id:1:  0:23:02.148 V:2602264 6159 A:610347 3827
> AUD: pts: 124395480
> Id:1:  0:23:02.172 V:2602264 6159 A:609771 [papenfuss at juneau deleteme]$
no I meant that you need to just let it run (dumpingto the screen). 
you still have the same buffering going on.  It is 23 minutes into the
program though, so it did get through quite a bit of it.

> > Running through gdb would be very helpful as well, and is very easy:
> > gdb --args ./mpeg2fix -i infile.nuv -o out.mpg -t
> > then type 'run'
> > when it hangs, hit ctrl-c and type:
> > thread apply all bt
> >
> > send me that, plus the previous 20 lines of output, and I'll have a
> > much better idea what is going on.
> >
>
> Loaded system supplied DSO at 0xffffe000
> [Thread debugging using libthread_db enabled]
> [New Thread -1212172608 (LWP 32329)]
> Opening ../sync.nuv
> Input #0, mpeg, from '../sync.nuv':
>    Duration: N/A, bitrate: N/A
>    Stream #0.0[0x1e0], 29.97 fps: Video: mpeg2video, yuv420p, 704x480, 5370
> kb/s
>    Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, 192 kb/s
> [New Thread -1214624848 (LWP 32332)]
> 16022 -178 3003 0
> V: 16200 A: 16200 delta: 0
> V-queue: 1 A-queue: 0
> Delta: 0.000000ms
> Mux rate: 6.62 Mbit/s
>
> Program received signal SIGINT, Interrupt.
> [Switching to Thread -1212172608 (LWP 32329)]
> 0x08053416 in mpeg2_parse_header ()
> (gdb) thread apply all bt
>
> Thread 2 (Thread -1214624848 (LWP 32332)):
> #0  0xffffe410 in __kernel_vsyscall ()
> #1  0x450c6a86 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
> #2  0x0804962a in fill_buffers (r=0xbf8da750, finish=0) at mpeg2fix.c:171
> #3  0x0804d441 in check_times (mx=0xb79a3150, video_ok=0xb79a3048, audio_ok=0xb79a30d0,
>      ac3_ok=0xb79a3050, start=0xb79a304c) at multiplex.c:411
> #4  0x080497a8 in replex_start (data=0xb79a3150) at mpeg2fix.c:230
> #5  0x450c4341 in start_thread () from /lib/tls/libpthread.so.0
> #6  0x44f446fe in clone () from /lib/tls/libc.so.6
>
> Thread 1 (Thread -1212172608 (LWP 32329)):
> #0  0x08053416 in mpeg2_parse_header ()
> (gdb)
Again, don't redirect the output. I'm more interested in the end than
the beginning.
Can you recompile libmpeg2 with debug on?
just:
pushd libmpeg2
edit Makefile and add '-g' to the start of CFLAGS like so:
CFLAGS = -g -pipe ...
then
make clean && make
popd
rm mpeg2fix
make
(you don't need to remove the -g when you're done, it will have
virtually no impact on perfromance), besides which, mythtv is
statically linked against libmpeg2.

then repeat your gdb experiment.
It appears to be stuck during the decode, which is very odd.  I'm just
guessing here, but I think you'll see something like:
#0  mpeg2_parse_header (mpeg2dec=0x0) at decode.c:218
#1  0x08331468 in mpeg2_header_picture_start (mpeg2dec=0x8417040)
    at header.c:487
#2  0x0831c2b6 in mpeg2_seek_header (mpeg2dec=0x8417040) at decode.c:146
#3  0x0831c2fa in mpeg2_parse (mpeg2dec=0x8417040) at decode.c:159
#4  0x0804bd7b in process_video (pktPtr=0xbfafe19c, decode_pic=0)
    at mpeg2fix.c:467
#5  0x0804c3e3 in get_frame (pkt=0xbfafb490, vid=0xbfafa1cc, aud=0xbfafe1d0)
    at mpeg2fix.c:627
#6  0x0804cfd7 in main (argc=5, argv=0x3f48) at mpeg2fix.c:904

(note it may stop in a different place).  Besides the actual
backtrace, I need you to find process_video (in this case it is #4),
then do:
frame 4 (use the actual # in place of '4')
print state
print *info

Hopefully, this'll help to narrow down the problem.

> > Looks fine to me.  This PTS is < what you sent before (124399622-16200
> > < 124395480) which reinforces my thought that this is purely a decoder
> > issue, and isn't thread related.
> >
>         I thought we were after number2 (-178)...  Let me know if you need
> another chunk of the log.
Yeah, that's cause I gave you the wrong instructions :)
the PTS you see from mpeg2fix is -178 from the original sync.nuv file.
 the PTS you see from mpegparse (run on the output file) is always
16200 from what mpeg2fix reports (replex adds 16200 to the PTS).

Thanks again,
.Geoff


More information about the mythtv-dev mailing list