Log in

View Full Version : Converting 24p HD to NTSC DV for broadcast


audiohominis
25th March 2010, 20:47
Hi guys. I hope this is the right section.
Everywhere I look I see great tutorials on de-telecining but I can't seem to find one that walks you through the process of applying interlacing (Must be due to its recent decline in relevance:)).
I need to convert a 1920x1088 24.000 show to NTSC DV for broadcast by tomorrow morning. The station said they needed it in DV but I neglected to ask whether it should be progressive or interlaced, widescreen 16:9 or 4:3 letterboxed to 16:9, etc. Since It's too late to contact them now, I'd like prepare a couple of versions to be safer.

Below are parameters for the widescreen 16:9 NTSC DV:

VirtualDub filter stack:

Resize: Size Options: 720x480, Framing options: Do not letterbox or crop, Codec-friendly sizing: Multiple of 2
Interpolate: Target frame rate: 59.94, Interpolation mode: Linear blending
Interlace: Source format: Progressive frames, Field order: Odd field first

MainConvept DV Codec (v2.4.16) parameters (all unchecked but the 16:9 option)
Encoder:

RGB 16..235
Change Fields Order
Fastest
Clamb YUV to ITU601r
16:9

Decoder:

RGB 16..235
Change Fields Order
Preview Quality
Clamb YUV to ITU601r
YUY2 disable
UYVY disable




Below are parameters for letterboxed 4:3 NTSC DV:

AviSynth script:

AVISource("MySource1920x1080pMovie.avi")
LanczosResize(720,370)
AddBorders(0, 55, 0, 55, $000000)

VirtualDub filter stack:

Interpolate: Target frame rate: 59.94, Interpolation mode: Linear blending
Interlace: Source format: Progressive frames, Field order: Odd field first

Again, MainConvept DV Codec's parameters (This time all unchecked, including the 16:9 option)
Encoder:

RGB 16..235
Change Fields Order
Fastest
Clamb YUV to ITU601r
16:9

Decoder:

RGB 16..235
Change Fields Order
Preview Quality
Clamb YUV to ITU601r
YUY2 disable
UYVY disable


Also, do broadcasting standards support progressive DV? Does it make sense to also submit a 23.976p version?
Thank you for reading this. As you can tell, I'm still a learner:p

Blue_MiSfit
25th March 2010, 23:51
If it's for broadcast, I'd make your DV at NTSC 29.97fps interlaced, at 16x9 Anamorphic.

If your source is truly 24.00fps, and not 24000/1001, you should slow it down to 24000/1001. You can do this with eac3to. Simply feed your WAV into eac3to like this:


eac3to.exe input.wav output.wav -24.000 -slowdown


Do all the video work in AviSynth like this:

AVISource("movie.avi")

#Assuming 1920x1088 @24.00 fps, let's slow it down
Assumefps("NTSC_Film")

#And scale down to NTSC frame size
BicubicResize(720,480)

#And convert colors from Rec 701 to Rec 601
ColorMatrix(preset="Rec.701->Rec.601")

#Now, let's apply some vertical lowpass filtering, break it into fields, and then apply 3:2 pulldown
AssumeFrameBased()
Blur(0,.3)

SeparateFields()
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave()


I think this should return proper NTSC 29.97fps interlaced video with a standard 3:2 pulldown pattern. Encode this with your MainConcept DV encoder. BTW, your source is truly TV range (16-235) only, correct? If it's full range, do use ColorYUV or SmoothLevels in your script to scale down without clipping (before ColorMatrix).

Then you can mux the AVI with the slowed down WAV you created in eac3to, and should have no problems.

~MiSfit

audiohominis
26th March 2010, 02:28
BTW, your source is truly TV range (16-235) only, correct? If it's full range, do use ColorYUV or SmoothLevels in your script to scale down without clipping (before ColorMatrix).
...Yyyyyyyyeah... see this is why I'm a learner.:confused: The source is a Lagarith RGB avi.
Do ColorYUV and SmoothLevels expect arguments of any sorts? Also, do you see any options in the encoder's dialog that you think I should check?
Thank you so very much.:thanks:

audiohominis
29th March 2010, 20:35
I ran the audio through eac3to using the command you provided and it converted a 16-bit araw to a 24-bit pcm. Is that normal? Also, how do you mux AVIs with eac3to, same as you would with mkv?
PS. I was not sure how to apply SmoothLeveles, so what I did was ConvertToYV12(matrix="Rec601", interlaced=false). Are there any particular params you'd recommend with SmoothLeveles in this case, so I could do it properly?
Thank you again.

Blue_MiSfit
5th April 2010, 21:05
Sorry I didn't get back to you before now :)

eac3to is processing internally at 64 bit float, so it dithers down to 24 bit to keep most/all the perceptual quality. In practice, you can add "-down16" to output normal 16 bit audio if you want to save the space / have compatibility issues. I would do this, since you're trying to output DV, which doesn't support 24 bit PCM AFAIK.

eac3to cannot mux AVI, so you need to use an app like VirtualDub or AVIMuxGUI to handle this task.

SmoothLevels is only necessary if your source contains video in the full "PC" range. To check this, write a simple script like this:


AVISource("movie.avi")
histogram



Here's a sample that uses full PC range:
http://i.imgur.com/gIPJzs.jpg (http://i.imgur.com/gIPJz.jpg)

And another that uses only TV range:
http://i.imgur.com/JSnets.jpg (http://i.imgur.com/JSnet.jpg)

See the brown area? If there's lots of data in it (shows up as yellow), then you have a PC range file. A note, my TV range example has some overflow into PC range (probably from the subtitling).

If you have PC range, you should convert it via SmoothLevels(preset="PC2TV")

Finally, do configure your DV codec accordingly. I would encourage you to look at Cedocida. It's an amazingly good VFW DV encoder. http://www.student.uni-kl.de/~dittrich/cedocida/

~MiSfit