simp_ffmpeg_t* priv = io->priv;
AVStream* s = priv->fmt_ctx->streams[idx];
- int64_t pts = frame->pts;
-
int ret = avcodec_send_frame(c, frame);
if (ret < 0) {
scf_loge("avcodec_send_frame error, ret: %s\n", av_err2str(ret));
pkt->pts = pkt->pts * av_q2d(c->time_base) / av_q2d(s->time_base);
pkt->dts = pkt->dts * av_q2d(c->time_base) / av_q2d(s->time_base);
- scf_logw("idx: %d, frame->pts: %ld, pkt->stream_index: %d, pkt->pts: %ld, pts: %ld, c->time_base: %d:%d, s->time_base: %d:%d\n",
- idx, frame->pts, pkt->stream_index, pkt->pts, pts, c->time_base.num, c->time_base.den, s->time_base.num, s->time_base.den);
+ scf_logw("idx: %d, pkt->stream_index: %d, pkt->pts: %ld, c->time_base: %d:%d, s->time_base: %d:%d\n",
+ idx, pkt->stream_index, pkt->pts, c->time_base.num, c->time_base.den, s->time_base.num, s->time_base.den);
ret = av_write_frame(priv->fmt_ctx, pkt);
av_packet_unref(pkt);
f = NULL;
}
+ ret = __ffmpeg_encode(io, priv->vcodec_ctx, priv->vpkt, NULL, priv->vidx);
+ if (ret < 0)
+ scf_loge("ret: %d\n", ret);
+ io->error = ret;
+
while (!scf_list_empty(&io->aout)) {
l = scf_list_head(&io->aout);
f = scf_list_data(l, simp_frame_t, list);
}
}
}
+
+ ret = __ffmpeg_encode(io, priv->acodec_ctx, priv->apkt, NULL, priv->aidx);
+ if (ret < 0)
+ scf_loge("ret: %d\n", ret);
+ io->error = ret;
+
pthread_mutex_unlock(&io->mutex);
end: