VideoHelp Forum
+ Reply to Thread
Results 1 to 2 of 2
Thread
  1. After a couple of weeks I finally got a 2 hour DVD successfully burned under Linux using nuppelrec, transcode, mpeg2enc, ifoedit (on windoze), and growisofs (CD+R).

    However I would rather not use Windoze at all in the process... I'm not positive if it is tcmplex or dvdauthor at fault (I think it is tcmplex), but for some reason I can only create short DVDs using tcmplex/dvdauthor. For example I can create a 10 minute DVD without a problem, but when I get up to 2 hours tcmplex starts reporting things as negative numbers - leading me to believe it has problems combining audio/video streams for longer movies. Any ideas? I'm using tcmplex from transcode 0.6.4. The command line I've been using for tcmplex is: "tcmplex -m d -i movie.m2v -p movie.ac3 -o movie.mpg"

    The second problem is I'm using ac3 for audio but when I play it on my DVD player I hear nothing if I use the digital link to my receiver (which works fine on store-bought DVDs, so I know it isn't the player) unless I tell the player to send a straight PCM stream - which is fine but it is annoying to have to switch. Any ideas? I used fmpeg to create the ac3, 48 Mhz, 192kbps, 2 ch. I'm going to try using an mp2 instead to see if that works but I'm not very hopeful...

    I actually went thr?ugh 20 discs before getting a successful 2 hour movie...the biggest problem was mpeg2enc...apparently if I pass it both a bitrate and a -q # parameter it doesn't work so well... So I'm giving it only a bitrate (and getting very good results with it). I believe the reason is that when I pass both there isn't a way to tell mpeg2enc a minimum bitrate (if there is, it isn't documented...I've read the docs 20 times or more...) so it turns out dropping too low... During scenes requiring a bitrate it plays fine, but during non-active scenes it plays a few frames, pauses, plays a few, pauses...and I was able to determine the bitrate during those times dropped lower than DVD specs.

    Anyway, I'm pleased with the setup right now and am mostly concerned about having to use windows rather than tcmplex. BTW, mplex didn't work either...in fact, I never got a playable DVD out of mplex for some reason.

    -- Ray
    Quote Quote  
  2. OK, I found solutions to the various problems.

    1) Needed a patch for ffmpeg for ac3. See http://sourceforge.net/mailarchive/message.php?msg_id=5020970
    This got sound going. Note this hasn't been put into the official ffmpeg source tree as of yet...

    2) yuvkineco has an integer overflow problem. I received the following patch for it (I hope it'll make it into an official patch of mjpegtools):

    --- mjpeg_play/yuvfilters/yuvkineco.c.sv 2002-04-29 17:34:29.000000000 +0900
    +++ mjpeg_play/yuvfilters/yuvkineco.c 2003-06-30 23:24:28.000000000 +0900
    @@ -496,7 +496,7 @@
    YfTask_t *h = (YfTask_t *)handle;
    int framebytes = FRAMEBYTES(h->_.width, h->_.height);
    int iadjust = ((h->_.fpscode == h->fpscode0)? 1:
    - ((h->iuse * fp1001s[h->_.fpscode] /
    + (((int64_t)h->iuse * fp1001s[h->_.fpscode] /
    fp1001s[h->fpscode0]) - h->iput));

    /* copy frame to buffer */

    Motion is now very smooth.


    3) I examined the difference in IFO's made with ifoedit and dvdauthor/ifogen. I edited dvdauthor (actually ifogen) to output VTS_TMAP entries on 4-second intervals rather than 1-second intervals. Shorter movies were working with 1-second, but apparently a 2 hour video produces too many entries at 1-second intervals... This was a pretty simple patch (sorry - I forgot to save the original so the following isn't a diff...) It really needs to be modified to dynamically determine the # of seconds to use, but I'm not real sure where the cutoff is and my DVD player doesn't read DVD+RW's so I'm not inclined to waste a lot of DVD's finding out

    ifogen.c:
    int sizeTMAPT(struct vob_summary *va)
    {
    int numpts=0,i;
    for( i=0; i<va->numpgcs; i++ ) {
    /* SRC - added / 4 */
    int v=(numsec(va,i)-1) / 4;
    if( v>0 ) numpts+=v;
    }
    return numpts*4+va->numpgcs*8+8;
    }

    inside CreateTMAPT:

    void CreateTMAPT(FILE *h,struct vob_summary *va)
    {
    int i,mapblock;
    unsigned char buf[8];

    write2(buf,va->numpgcs);
    write2(buf+2,0);
    write4(buf+4,sizeTMAPT(va)-1);
    fwrite(buf,1,8,h);

    mapblock=8+4*va->numpgcs;
    for( i=0; i<va->numpgcs; i++ ) {
    write4(buf,mapblock);
    fwrite(buf,1,4,h);
    mapblock+=4*numsec(va,i);
    }

    for( i=0; i<va->numpgcs; i++ ) {
    int numtmapt=(numsec(va,i)-1) / 4, ptsbase, j, lastsrc=0;
    struct chain *p=&va->pgcs[i];

    /* SRC - was = 1 - ifoedit does 4 for a 75min DVD... */
    buf[0]=4;

    buf[1]=0;
    write2(buf+2,numtmapt);
    fwrite(buf,1,4,h);
    ptsbase=p->sources[0].vi[0].pts[0]-90000/getfrate(va)+0.5;
    for( j=0; j<numtmapt; j++ ) {
    int cursrc;
    struct vobuinfo *vobu=globalfindvobu(p,ptsbase+getptssec(va,(j+1) * 4),&cursrc);
    write4(buf,vobu->sector);

    ...

    With all that in place I now have a working setup.

    -- Ray
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!