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