[Libav-user] Timestamps for AVPaket

zhivago zhivagoserg at yandex.ua
Fri Sep 16 18:31:36 CEST 2011


Help me please properly set the timestamps. I have created an output filter,
which takes video (MEDIASUBTAYPE_H264) and audio (MEDIASUBTAYPE_AAC). I have
to put it all into a container FLV. To mix the streams, I use libav. How to
calculate for AVPacket presentation timestamp (pts).

    static const REFERENCE_TIME UNITS_PER_SECOND = 10000000i64;
         ....
    REFERENCE_TIME startTime = m_lastSampleTime.startTime;

    AVPacket pkt;
    av_init_packet( &pkt );
    pkt.data = pbData;
    pkt.size = lDataLength;
    pkt.flags |= AV_PKT_FLAG_KEY;

    if ( video )
    {
        ASSERT( m_codecContextVideo );

        num = m_codecContextVideo->time_base.num;
        den = m_codecContextVideo->time_base.den;

        pkt1.pts          ??? // = ::MulDiv( startTime * den, 1, num *
UNITS_PER_SECOND );
        pkt1.stream_index = m_streamVideoOutput->index;
    }
    else
    {
       ASSERT( m_codecContextAudio );

       num = m_codecContextAudio->time_base.num;
       den = m_codecContextAudio->time_base.den;

       pkt1.pts          ??? // = ::MulDiv( startTime * den, 1, num *
UNITS_PER_SECOND );
       pkt1.stream_index = m_streamAudioOutput->index;
    }

    ASSERT( m_formatContextOutput );

    if ( AllConnected() )
    {

        av_interleaved_write_frame( m_formatContextOutput, &pkt1 );
    }
    else
    {
        av_write_frame( m_formatContextOutput, &pkt1 );
    }

--
View this message in context: http://libav-users.943685.n4.nabble.com/Timestamps-for-AVPaket-tp3818534p3818534.html
Sent from the libav-users mailing list archive at Nabble.com.


More information about the Libav-user mailing list