Log in

View Full Version : how to transcode interlaced avc?


FirstBorg
15th October 2008, 19:10
Hi!
I captured a video with the panasonic hdc-sd1. It saves them as, at least it seems, as interlaced h264 files. I demuxed them with tsremux, and tried to transcode with mediacoder. but the problem is, that the result is very interlaced and runs at half the speed. How can transcode it, so it runs at normal speed? thx.

Sagekilla
15th October 2008, 19:55
If you have a nvidia GPU, you can buy a copy of neuron2's excellent DGAVCDecodeNV which has support for hardware deinterlacing of H.264 video, which is also -extremely- high quality. You can then pass off the video to be transcoded by x264.

poisondeathray
15th October 2008, 20:03
If you don't have a cuda enabled GPU, you can use neuron2's DGAVCDec: use avisynth, deinterlace with that, and frameserve to any encoder.

This works for Sony and Canon AVCHD content, and it should work for yours as well.

Turtleggjp
15th October 2008, 22:50
keep in mind though that DGAVCDecode still uses a version of libavcodec.dll that has problems with PAFF AVC video, such as from video cameras. It should work, but you may experience macroblock artifacts in your video. DGAVCDecodeNV though will not have this problem, but will require a CUDA capable video card.

poisondeathray
15th October 2008, 23:51
keep in mind though that DGAVCDecode still uses a version of libavcodec.dll that has problems with PAFF AVC video, such as from video cameras. It should work, but you may experience macroblock artifacts in your video. DGAVCDecodeNV though will not have this problem, but will require a CUDA capable video card.

Good point.

You can use DirectShowSource() with newer versions ffdshow tryouts/libavcodec (I tested v2080 and later - that gets rid of the problem, at least on Canon AVCHD cameras), or coreavc as the decoder

FirstBorg
16th October 2008, 00:36
how exactly do I use directshowsource()?

poisondeathray
16th October 2008, 01:02
how exactly do I use directshowsource()?

It's used as a frameserver to any encoder (e.g. MeGUI)

You need avisynth, ffdshow, and haali media splitter installed

An sample script that I use might look something like this:



Load_Stdcall_Plugin("C:\Program Files\AviSynth 2.5\plugins\yadif.dll")

DirectShowSource("C:\PATH\00002.MTS",fps=29.97)
Yadif(order=1) #TFF
LanczosResize(1280x720)



It might change depending on what mode you recorded the file in. You can use mediainfo (view=>text) to determine some characteristics

In this example I resized to 1280x720 and used Yadif to deinterlace, and it's Top Field First (I think almost all AVCHD is TFF). There are many other deinterlacing options

You can use AvsP to preview any avisynth filters/processing added

FirstBorg
16th October 2008, 01:56
NICE, that works well, thx :)

Altough, virtualdub says that in the last line there is some kind of error... "expected a or )"
Well, thats not a big problem. I simply used the resize function of virtual dub.

Guest
16th October 2008, 01:58
LanczosResize(1280,720)