Hans Verkuil wrote:
> On Tuesday 29 August 2006 20:52, Cyrus A wrote:
>   
>> Hans Verkuil wrote:
>>     
>>> On Tuesday 29 August 2006 19:46, Cyrus A wrote:
>>>       
>>>> Hans Verkuil wrote:
>>>>         
>>>>> On Sunday 27 August 2006 03:38, Cyrus A wrote:
>>>>>           
>>>>>> Here is my experience trying to encode into MPEG-4 on the fly
>>>>>> while also recording closed captions on a PVR-250.
>>>>>>
>>>>>> First I tried 'cat /dev/video0 > outputfile.mpg' to get the
>>>>>> hardware MPEG-2. That worked perfectly.
>>>>>>
>>>>>> Then I had some trouble encoding on the fly with ffmpeg. The
>>>>>> audio was out of sync for some unknown reason. After a couple of
>>>>>> days, I found that '-async 1' solved my problem. My ffmpeg
>>>>>> command is ' ffmpeg -i /dev/video0 -async 1 -s 480x384 -b 1750
>>>>>> outfile.mpg' I have thoroughly tested it and it works well for
>>>>>> long periods of time (recording an hourlong show, for instance).
>>>>>> Now onto closed captioning.
>>>>>>
>>>>>> zvbi-ntsc-cc doesn't work. I think the program "drives" the
>>>>>> video device at the same time the drivers are trying to "drive"
>>>>>> the device and it causes conflicts. This results in choppy,
>>>>>> unusable video. The same thing happened with bttv.
>>>>>>
>>>>>> Then I tried the $ivtvhome/test/vbi program and VIOLA, I got the
>>>>>> captions I needed and the video was unaffected.... or so I
>>>>>> thought...
>>>>>>
>>>>>> After a short period, errors start showing up in the video
>>>>>> encoding terminal:
>>>>>>
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 12
>>>>>> 5=2091.2kbits/s [mpeg2video @ 0x2aaaab031030]Warning MVs not
>>>>>> available
>>>>>> [mpeg2video @ 0x2aaaab031030]concealing 1125 DC, 1125 AC, 1125
>>>>>> MV errors [mpeg2video @ 0x2aaaab031030]00 motion_type at 33
>>>>>> 11=2077.1kbits/s [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]slice mismatch
>>>>>> [mpeg2video @ 0x2aaaab031030]slice mismatch
>>>>>> [mpeg2video @ 0x2aaaab031030]slice mismatch
>>>>>> [mpeg2video @ 0x2aaaab031030]slice mismatch
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 0 20
>>>>>> [mpeg2video @ 0x2aaaab031030]invalid cbp at 11 21
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 0 22
>>>>>> [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 0 24
>>>>>> [mpeg2video @ 0x2aaaab031030]slice mismatch
>>>>>> [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 1 27
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 0 28
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 0 29
>>>>>> [mpeg2video @ 0x2aaaab031030]concealing 855 DC, 855 AC, 855 MV
>>>>>> errors [mpeg2video @ 0x2aaaab031030]00 motion_type at 19
>>>>>> 22=2087.8kbits/s [mpeg2video @ 0x2aaaab031030]invalid mb type in
>>>>>> B Frame at 13 23 [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 7 25
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 3 26
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 1 27
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 1 28
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 4 29
>>>>>> [mpeg2video @ 0x2aaaab031030]Warning MVs not available
>>>>>> [mpeg2video @ 0x2aaaab031030]concealing 360 DC, 360 AC, 360 MV
>>>>>> errors [mpeg2video @ 0x2aaaab031030]00 motion_type at 1
>>>>>> 12e=2086.9kbits/s [mpeg2video @ 0x2aaaab031030]00 motion_type at
>>>>>> 1 13
>>>>>> [mpeg2video @ 0x2aaaab031030]slice mismatch
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 6 15
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 1 16
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 13 17
>>>>>> [mpeg2video @ 0x2aaaab031030]ac-tex damaged at 1 18
>>>>>> [mpeg2video @ 0x2aaaab031030]invalid mb type in B Frame at 34 19
>>>>>> [mpeg2video @ 0x2aaaab031030]invalid cbp at 8 20
>>>>>> [mpeg2video @ 0x2aaaab031030]slice mismatch
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 3 22
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 27 23
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 16 24
>>>>>> [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]00 motion_type at 28 26
>>>>>> [mpeg2video @ 0x2aaaab031030]ac-tex damaged at 4 27
>>>>>> [mpeg2video @ 0x2aaaab031030]invalid mb type in B Frame at 3 28
>>>>>> [mpeg2video @ 0x2aaaab031030]mb incr damaged
>>>>>> [mpeg2video @ 0x2aaaab031030]Warning MVs not available
>>>>>> [mpeg2video @ 0x2aaaab031030]concealing 810 DC, 810 AC, 810 MV
>>>>>> errors
>>>>>>
>>>>>> Normally I would just ignore the errors, but they corresponded
>>>>>> with an audio desyncing from the video. The more errors
>>>>>> appeared, the more the audio became de-synced from the video.
>>>>>>
>>>>>> If anyone can provide any insight, it would be greatly
>>>>>> appreciated.
>>>>>>             
>>>>> Are you embedding the VBI data into the stream (using the ivtvctl
>>>>> -x1 option) or just reading the VBI data as a separate stream
>>>>> with the vbi tool?
>>>>>
>>>>> Please also give the INIT IVTV messages from the kernel log. Also
>>>>> check the log for any other errors that it may have printed
>>>>> during capturing.
>>>>>
>>>>> What command(s) do you use to get these results?
>>>>>
>>>>>   Hans
>>>>>
>>>>> _______________________________________________
>>>>> ivtv-users mailing list
>>>>> [email protected]
>>>>> http://ivtvdriver.org/mailman/listinfo/ivtv-users
>>>>>           
>>>> Here are my commands. In the first terminal window I used:
>>>>
>>>> ffmpeg -i /dev/video0 -async 1 -s 480x384 -b 1750 outfile.mpg
>>>>
>>>> and in the second:
>>>>
>>>> /usr/local/ivtv-0.7.0/test/vbi
>>>>
>>>> I have not attempted anything with ivtvctl. Should I?
>>>>
>>>> Dmesg had an interesting message:
>>>>
>>>> ivtv0 warning: Starting VBI after starting an encoding, seems to
>>>> not work.
>>>>
>>>> However, starting vbi before the ffmpeg process didn't work
>>>> either. But, the errors seemed different (at least to my untrained
>>>> eye). What do you make of this?
>>>>         
>>> What happens if you don't do life transcoding but first record it
>>> and at the same time capture the VBI, and do the ffmpeg transcoding
>>> when the recording is finished? Do you still get the errors?
>>>
>>> I've recently discovered that when the hardware is under heavy load
>>> all sorts of things may go wrong. I'm working on improving the
>>> driver to be better and faster at handling DMA in an attempt to
>>> minimize this from happening.
>>>
>>> Regards,
>>>
>>>     Hans
>>>
>>> _______________________________________________
>>> ivtv-users mailing list
>>> [email protected]
>>> http://ivtvdriver.org/mailman/listinfo/ivtv-users
>>>       
>> Using 'cat /dev/video0 > outfile.mpg', the audio and video did not
>> desync as before. However, when I would start up the closed
>> captioning (via the test/vbi script) I did notice the video would
>> momentarily go nuts (random blocks of green and pink, etc) just as
>> before. The video was mostly ok (and stayed in sync), but does have
>> "blips" of encoding strangeness. When I stop the test/vbi program,
>> the video is much more stable. dmesg had no additional information.
>>
>> I would shy away from assuming the audio desyncing with ffmpeg is a
>> load problem. My computer has plenty of CPU and RAM to go around. I
>> don't know anything about ivtv, but I know ffmpeg is very efficient.
>> I've recorded 4 channels simultaneously with 4 bttv cards with ffmpeg
>> (while also running voice recognition in the background).
>>
>> My guess would be that there is some sort of device sharing conflict
>> between the video driver on the card and the test/vbi script. This
>> conflict seems to cause the "blips" which screw up the video, which
>> in turn mess up ffmpeg. It's not until ffmpeg is run on the output
>> file (catted from /dev/video0) that the desyncing occurs.
>>
>> Here's the real kicker: After using cat /dev/video0 to get an MPEG-2
>> file and running test/vbi off and on to generate some "blips" during
>> the recording, I then tried to convert the resulting output file to
>> MPEG-4 with ffmpeg. Lo and behold... the audio desync'd. This lends
>> creedence to the idea that the encoding goofs resulting from the use
>> of test/vbi cause ffmpeg to desync the audio, regardless if it's
>> on-the-fly from /dev/video0 or simply used on a corrupted video file.
>> I don't think that the load on the system is the problem.
>>
>> What do you suggest?
>>     
>
> Wait. I think I know what is going on, and it has all to do with the way 
> DMA is handled by the card and the driver. However, before I can really 
> work on that I first need to refactor a big part of the driver that 
> currently makes it very difficult to actually debug and fix this stuff.
>
> What makes this so frustrating is that a large part of these problems 
> seem to depend on the hardware and possibly software used. If you are 
> using any kind of CPU frequency changer tool I'd certainly suggest 
> disabling it. It looks like it's quite hard on DMA.
>
> Anyway, in about two weeks time from now I hope to have a much better 
> idea on how to go forward. For now I'll just continue refactoring 
> several years worth of sometimes quite ugly code.
>
>       Hans
>
> _______________________________________________
> ivtv-users mailing list
> [email protected]
> http://ivtvdriver.org/mailman/listinfo/ivtv-users
>   
(I'll just keep the bottom-posting tradition of this thread alive...)

I tried disabling cpuspeed but I don't believe it helped. It may have 
cleared up slightly, but the problem is definitely still there.

I appreciate your work on this. How long do you think it'll take to have 
video/caps/sound all working simultaneously on the PVR-250 and 500? In 
time for the 2.6.18 kernel?

Is there anything I can do to help? If only they'd enable dog-walking 
and clothes-ironing over the internet maybe I could lighten your load a 
bit... I do have some of the sample video with the glitches in it. Would 
you like me to give it to you?

Cyrus

_______________________________________________
ivtv-users mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-users

Reply via email to