On Thu, 28 Oct 2004, Dik Takken wrote: > Sorry, lame mistake. Rephrase:
:) > Ok, thanks for pointing that out. Should -q 2 be safe enough? The thing is It might be. And you might be lucky enough to not encounter the artifacting - it's dependent on the material to a degree. > that I don't care about filesize, as long as my stand-alone DVD player > will play it. The only restriction I need for that is to use -f 8 and -b < > 9700 IIRC. Oh, it's not just the filesize or AVERAGE bitrate that's going to be the problem. It's the bitrate spikes! Low values of -q have pushed the average bitrate close to the value specified with '-b' leaving very little room for the inevitable peaks. There's a "thou shall not exceed" rate for DVDs and some players are very allergic to values over 9800. It's not uncommon to have the rate 10 or 20% (temporary) over the "-b" value. If you're using '-b 8400' you're probably OK, but at 9700 + 10%, well, you're over the limit. > > Ah, but are they compression artifacts or interlacing "artifacts"? > > They are clearly compression artifacts. It's the typical blocking and > ringing effect of MPEG compression, especially around sharp edges. There Ok. But I have taken progressive data and interlaced it (that's what 'y4minterlace' is for - but it's only in the CVS version at the moment) and not encountered the problem. One of the HDTV formats in the US is 1280x720 progressive at 60000/1001 frames/sec. So to put that on a DVD I need to scale (obviously) and interlace (which drops the rate from 60000/1001 to 30000/1001 of course). > I know, but that's not the problem. In fact, my input frames are pictures > generated by ImageMagick. So, encoding them to progressive/interlaced MPEG > should make no visual difference (at least not on a computer monitor, it Maybe it makes a difference how you're doing the interlacing. More on that in a minute or two ... > I'll try -q 4. Using -q 1 with progressive encoding looked very nice > while the default value of 6 looked horrible. The input frames contain a Hmmm, the default used to be 8 as far as I recall. Should be fine for "adequate but not great" quality. 6 should be fairly good looking. Creating/designing titles/text so that it looks good on an interlaced display is an artform. The font used, width of lines, etc all need to be carefully chosen and tweeked. > I had a little theory about what might go wrong, but I'm no expert, it's ... > > The frames that I feed to mpeg2enc are actually not interlaced, they are > ordinary 'progressive' images. But since I use png2yuv to generate an Ok - that's what I figured. Now to interlace that you need to take the "top" field from frame #1 and the "bottom" field from frame #2! It sounds like you're taking the two fields from the same frame - the top lines of frame #1 and the bottom lines of frame #1. That's not how interlacing needs to be done (if I'm not totally off base - and if I'm spouting off incorrectly someone will let me know I'm sure ;)). The two fields in an interlaced frame are (forgive the "shouting" ;)) "FROM DIFFERENT POINTS IN TIME". You don't want to take two fields from the same point in time. In a progressive image both fields ARE FROM THE SAME POINT IN TIME. Assuming a 625 line 50 field/sec video system... 1) Your input data is a 50 frame/sec (100 field/sec) progressive stream. 2) FIELD 1 is the first 1/50th of a second and comes from the "top" lines of frame #1. NOTE: field 2 of frame 1 is _still_ from the first 1/50th of a second! 3) FIELD 2 is the second 1/50th of a second and comes from the "bottom" lines of frame #2 - NOT the bottom lines of frame #1! 4) The output stream rate should be set to 25:1 instead of 50:1 y4minterlace will do this automatically). Frame #1 is a complete representation of the first 1/50th of a second - both fields of frame #1 come from the same instant in time. > Each source frame has been split by png2yuv into two fields. One field So you have 2 fields FROM THE SAME POINT IN TIME. You can't use both of those - you can only use either the "top" or the "bottom" field. The NEXT point in time (the next 1/50th of a second) has to come from the NEXT FRAME - and you take the "bottom" field from that frame. > frames per second. Mpeg2enc 'sees' this jumping and it needs a lot of bits > to encode it. When the final mpeg2 stream is played on a computer monitor, I think mpeg2enc is seeing the replicated fields from the same point in time and going a bit nuts ;) > frame again. So, we actually found a *very* inefficient way to store > progressive material in an interlaced mpeg2 stream. > Could this wild guess be correct? > Close - I think what's actually been discovered is an incorrect way to interlace a progressive stream :-) If you check out the cvs version (or just browse the source online thru the cvsweb interface) take a look at 'y4minterlace'. That works, it's what I've used to deal with progressive streams that need to end up on a interlaced based medium. On the other hand you can just feed the progressive data into mpeg2enc and it'll "do the right thing" - set the appropriate flags in the MPEG2 headers to say that the two fields come from the same point in time. Basically mpeg2enc will do what you're trying to accomplish ;) > Thanks for answering my mail, Quite welcome. Cheers, Steven Schultz ------------------------------------------------------- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click _______________________________________________ Mjpeg-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/mjpeg-users