[FFmpeg-devel] [PATCH]: Avoid duplicate last entry in the pass log file for the last frame
Michael Niedermayer
michaelni
Wed Nov 3 03:47:04 CET 2010
On Tue, Nov 02, 2010 at 04:43:09PM -0700, Thierry Foucu wrote:
> On Tue, Nov 2, 2010 at 3:21 PM, Thierry Foucu <tfoucu at gmail.com> wrote:
>
> > $subject
> >
> > Before the patch, i was getting this in the log file:
> >
> > in:131 out:131 type:2 q:1599 itex:0 ptex:9194 mv:878 misc:1710 fcode:1
> > bcode:1 mc-var:47056 var:132365 icount:0 skipcount:1 hbits:42;
> > in:132 out:132 type:2 q:1601 itex:436 ptex:9173 mv:931 misc:1706 fcode:1
> > bcode:1 mc-var:49302 var:137777 icount:2 skipcount:1 hbits:42;
> > in:133 out:133 type:2 q:1600 itex:461 ptex:6090 mv:761 misc:1622 fcode:1
> > bcode:1 mc-var:48901 var:133431 icount:3 skipcount:2 hbits:42;
> > in:134 out:134 type:2 q:1565 itex:379 ptex:14567 mv:951 misc:1749 fcode:1
> > bcode:1 mc-var:57528 var:134434 icount:2 skipcount:1 hbits:42;
> > in:135 out:135 type:1 q:1224 itex:96623 ptex:0 mv:0 misc:1007 fcode:1
> > bcode:1 mc-var:0 var:143173 icount:300 skipcount:0 hbits:42;
> > in:135 out:135 type:1 q:1224 itex:96623 ptex:0 mv:0 misc:1007 fcode:1
> > bcode:1 mc-var:0 var:143173 icount:300 skipcount:0 hbits:42;
> >
> >
> > With the patch, I get this:
> > in:131 out:131 type:2 q:1599 itex:0 ptex:9194 mv:878 misc:1710 fcode:1
> > bcode:1 mc-var:47056 var:132365 icount:0 skipcount:1 hbits:42;
> > in:132 out:132 type:2 q:1601 itex:436 ptex:9173 mv:931 misc:1706 fcode:1
> > bcode:1 mc-var:49302 var:137777 icount:2 skipcount:1 hbits:42;
> > in:133 out:133 type:2 q:1600 itex:461 ptex:6090 mv:761 misc:1622 fcode:1
> > bcode:1 mc-var:48901 var:133431 icount:3 skipcount:2 hbits:42;
> > in:134 out:134 type:2 q:1565 itex:379 ptex:14567 mv:951 misc:1749 fcode:1
> > bcode:1 mc-var:57528 var:134434 icount:2 skipcount:1 hbits:42;
> > in:135 out:135 type:1 q:1224 itex:96623 ptex:0 mv:0 misc:1007 fcode:1
> > bcode:1 mc-var:0 var:143173 icount:300 skipcount:0 hbits:42;
> >
> > Note that before the patch the last frame stats are present twice.
> >
> > It seems that at the end of encoding, we output the stats_out twice:
> >
> > One at line 1254 in function do_video_out
> > 1252 /* if two pass, output log */
> > 1253 if (ost->logfile && enc->stats_out) {
> > 1254 fprintf(ost->logfile, "%s", enc->stats_out);
> > 1255 }
> >
> > There is a if statement before that to make sure that the return value of
> > avcodec_encode_video is greater than 0
> >
> > the second time we output the last frame stat is in output_packet, but we
> > were not checking to see if the return value of avcodec_encode_video is
> > greater than 0
> >
> > The patch does that.
> >
> > Index: ffmpeg.c
> > ===================================================================
> > --- ffmpeg.c (revision 25651)
> > +++ ffmpeg.c (working copy)
> > @@ -1797,7 +1797,7 @@
> > video_size += ret;
> > if(enc->coded_frame &&
> > enc->coded_frame->key_frame)
> > pkt.flags |= AV_PKT_FLAG_KEY;
> > - if (ost->logfile && enc->stats_out) {
> > + if (ost->logfile && enc->stats_out && ret > 0)
> > {
> > fprintf(ost->logfile, "%s",
> > enc->stats_out);
> > }
> > break;
> >
> >
> >
> here is another version to fix the problem where i add a if (ret > 0) around
> the code, instead of just checking the return value for the pass log file
> Index: ffmpeg.c
> ===================================================================
> --- ffmpeg.c (revision 25651)
> +++ ffmpeg.c (working copy)
> @@ -1794,12 +1794,14 @@
> fprintf(stderr, "Video encoding failed\n");
> ffmpeg_exit(1);
> }
> + if (ret > 0) {
> video_size += ret;
> if(enc->coded_frame &&
> enc->coded_frame->key_frame)
> pkt.flags |= AV_PKT_FLAG_KEY;
> if (ost->logfile && enc->stats_out) {
> fprintf(ost->logfile, "%s",
> enc->stats_out);
> }
> + }
> break;
> default:
> ret=-1;
>
>
> If this is the patch you will prefer, i will email another patch
> for indentation (if needed)
this change is incorrect, the encoder is buggy
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Republics decline into democracies and democracies degenerate into
despotisms. -- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20101103/fc1b2e20/attachment.pgp>
More information about the ffmpeg-devel
mailing list