[FFmpeg-devel] [RFC] Eliminate -re and make -rate_emu set by AVOption

Luca Abeni lucabe72
Wed Jul 16 21:35:47 CEST 2008


Hi Stefano,

sorry for the late reply, but I wanted to triple-think about this issue 
before writing something...

Stefano Sabatini wrote:
[...]
> My solution is to make -rate_emu settable through AVOption options
> using rate_emu, then remove the -re option.
> 
> This alone doesn't fix the problems for audio-only multimedia streams
> streaming, there are still timestamp issues to be addressed.

If I understand your patch correctly, it allows to set the rate_emu 
field in the audio codec context, but it does not provide support for 
"audio frame rate emulation". In fact, I believe that the following code 
can only work for the video streams:
>         /* frame rate emulation */
>         if (ist->st->codec->rate_emu) {
>             int64_t pts = av_rescale((int64_t) ist->frame * ist->st->codec->time_base.num, 1000000, ist->st->codec->time_base.den);
>             int64_t now = av_gettime() - ist->start;
>             if (pts > now)
>                 usleep(pts - now);
> 
>             ist->frame++;
>         }
(I do not believe that an audio pts can be computed as frame number * 
time base).

So, I suspect that setting rate_emu for audio codecs is quite pointless...
(In other words: if we really want to go this path, I believe we should 
first fix audio frame rate emulation, and then enable it in a second time)

Moreover, why does the rate emulation code cited above compute a pts in 
that way? Cannot ist->next_pts (or something similar) be used?



I also have a second (bigger) doubt: in my opinion, rate_emu should not 
be a field in AVCodecContext. In fact, nothing else than ffmpeg.c uses 
it (unless I misread some code). So, I would be tempted to remove this 
field from AVCodecContext, and to use the global rate_emu variable in 
the "if()" quoted above (so, I would change "if 
(ist->st->codec->rate_emu) {" in "if (rate_emu) {").

I believe this should not break anything, but I am not completely sure 
(comments welcome).


			Thanks,
				Luca




More information about the ffmpeg-devel mailing list