[Libav-user] How to calculate pts/dts ???

wolverin wolverin82 at mail.ru
Mon Jan 2 17:51:01 EET 2023

>Did I understand you correctly that I need to multiply time_base and system time between adjacent frames and add the resulting time to the previous PTS?
>PTS is just timebase * seconds represented as int64 number
>There are no additions with next/prev pts values.
Then pts is the time of one frame?
>>I used av_rescale_q to scale time_base from an incoming MJPEG stream to an outgoing H264 one, but for some reason timestamps pts/dts are meaningless in this case.
>Show your code.
I have greatly simplified it to understand how I am trying to use avscale, as it is done in different threads using buffers to use other ARM cores.
avcodec_send_packet(pCdcCtxInp, pPktInp);
avcodec_receive_frame(pCdcCtxInp, pFrm);
pFrm->pts = av_rescale_q(pPktInp->pts, pFmtCtxInp->streams[0]->time_base, pCdcCtxInp->time_base);
avcodec_send_frame(pCdcCtxOut, pFrm);
avcodec_receive_packet(pCdcCtxOut, pPktOut);
pPktOut->pts = av_rescale_q(pFrm->pts, pCdcCtxInp->time_base, pCdcCtxOut->time_base);
pPktOut->dts = pPktOut->pts;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20230102/8b8621be/attachment.htm>

More information about the Libav-user mailing list