提交 0a4d826c 编写于 作者: Z Zhang Rui

ff_ffplay: remember fps/dps

上级 3db74331
......@@ -699,6 +699,7 @@ static void sort_amc_buf_out(AMC_Buf_Out *buf_out, int size) {
static int drain_output_buffer_l(JNIEnv *env, IJKFF_Pipenode *node, int64_t timeUs, int *dequeue_count)
{
IJKFF_Pipenode_Opaque *opaque = node->opaque;
FFPlayer *ffp = opaque->ffp;
int ret = 0;
SDL_AMediaCodecBufferInfo bufferInfo;
ssize_t output_buffer_index = 0;
......@@ -794,7 +795,7 @@ static int drain_output_buffer_l(JNIEnv *env, IJKFF_Pipenode *node, int64_t time
}
}
} else if (output_buffer_index >= 0) {
SDL_SpeedSamplerAdd(&opaque->sampler, FFP_SHOW_VDPS_MEDIACODEC, "vdps[MediaCodec]");
ffp->vdps = SDL_SpeedSamplerAdd(&opaque->sampler, FFP_SHOW_VDPS_MEDIACODEC, "vdps[MediaCodec]");
if (dequeue_count)
++*dequeue_count;
......
......@@ -499,7 +499,7 @@ static int decoder_decode_frame(FFPlayer *ffp, Decoder *d, AVFrame *frame, AVSub
case AVMEDIA_TYPE_VIDEO: {
ret = avcodec_decode_video2(d->avctx, frame, &got_frame, &d->pkt_temp);
if (got_frame) {
SDL_SpeedSamplerAdd(&ffp->vdps_sampler, FFP_SHOW_VDPS_AVCODEC, "vdps[avcodec]");
ffp->vdps = SDL_SpeedSamplerAdd(&ffp->vdps_sampler, FFP_SHOW_VDPS_AVCODEC, "vdps[avcodec]");
if (ffp->decoder_reorder_pts == -1) {
frame->pts = av_frame_get_best_effort_timestamp(frame);
} else if (ffp->decoder_reorder_pts) {
......@@ -740,7 +740,7 @@ static void video_image_display2(FFPlayer *ffp)
vp = frame_queue_peek(&is->pictq);
if (vp->bmp) {
SDL_VoutDisplayYUVOverlay(ffp->vout, vp->bmp);
SDL_SpeedSamplerAdd(&ffp->vfps_sampler, FFP_SHOW_VFPS_FFPLAY, "vfps[ffplay]");
ffp->vfps = SDL_SpeedSamplerAdd(&ffp->vfps_sampler, FFP_SHOW_VFPS_FFPLAY, "vfps[ffplay]");
if (!ffp->first_video_frame_rendered) {
ffp->first_video_frame_rendered = 1;
ffp_notify_msg1(ffp, FFP_MSG_VIDEO_RENDERING_START);
......
......@@ -580,6 +580,9 @@ typedef struct FFPlayer {
SDL_SpeedSampler vfps_sampler;
SDL_SpeedSampler vdps_sampler;
float vfps;
float vdps;
} FFPlayer;
#define fftime_to_milliseconds(ts) (av_rescale(ts, 1000, AV_TIME_BASE));
......@@ -685,6 +688,9 @@ inline static void ffp_reset_internal(FFPlayer *ffp)
SDL_SpeedSamplerReset(&ffp->vfps_sampler);
SDL_SpeedSamplerReset(&ffp->vdps_sampler);
ffp->vfps = 0.0f;
ffp->vdps = 0.0f;
msg_queue_flush(&ffp->msg_queue);
}
......
......@@ -414,7 +414,7 @@ void VTDecoderCallback(void *decompressionOutputRefCon,
goto failed;
}
SDL_SpeedSamplerAdd(&ctx->sampler, FFP_SHOW_VDPS_VIDEOTOOLBOX, "vdps[VideoToolbox]");
ffp->vdps = SDL_SpeedSamplerAdd(&ctx->sampler, FFP_SHOW_VDPS_VIDEOTOOLBOX, "vdps[VideoToolbox]");
#ifdef FFP_VTB_DISABLE_OUTPUT
goto failed;
#endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册