(int64_t)s->pts_den * FRAME_RATE_BASE);
(int64_t)s->pts_den * st->codec.frame_rate_base);
int av_write_frame(AVFormatContext *s, int stream_index, const uint8_t *buf,                    int size){    AVStream *st;    int64_t pts_mask;    int ret, frame_size;    st = s->streams[stream_index];    pts_mask = (1LL << s->pts_wrap_bits) - 1;    ret = s->oformat->write_packet(s, stream_index, (uint8_t *)buf, size,                                    st->pts.val & pts_mask);    if (ret < 0)        return ret;    /* update pts */    switch (st->codec.codec_type) {    case CODEC_TYPE_AUDIO:        if (st->codec.frame_size <= 1) {            frame_size = size / st->codec.channels;            /* specific hack for pcm codecs because no frame size is provided */            switch(st->codec.codec_id) {            case CODEC_ID_PCM_S16LE:            case CODEC_ID_PCM_S16BE:            case CODEC_ID_PCM_U16LE:            case CODEC_ID_PCM_U16BE:                frame_size >>= 1;                break;            default:                break;            }        } else {            frame_size = st->codec.frame_size;        }        av_frac_add(&st->pts,                     (int64_t)s->pts_den * frame_size);        break;    case CODEC_TYPE_VIDEO:        av_frac_add(&st->pts,                     (int64_t)s->pts_den * FRAME_RATE_BASE);        break;    default:        break;    }    return ret;}