From c8bc8ef4a4600f80250b27027a0029212cf1ac09 Mon Sep 17 00:00:00 2001 From: maggievu-pdftron <91563619+maggievu-pdftron@users.noreply.github.com> Date: Mon, 13 Dec 2021 17:47:25 -0800 Subject: [PATCH] add FPS information (#12) --- src/ffprobe-wasm-wrapper.cpp | 4 ++++ www/src/components/Frames.vue | 1 + 2 files changed, 5 insertions(+) diff --git a/src/ffprobe-wasm-wrapper.cpp b/src/ffprobe-wasm-wrapper.cpp index 315b899..d8fc1a2 100644 --- a/src/ffprobe-wasm-wrapper.cpp +++ b/src/ffprobe-wasm-wrapper.cpp @@ -68,6 +68,7 @@ typedef struct FramesResponse { int gop_size; int duration; double time_base; + double avg_frame_rate; } FramesResponse; FileInfoResponse get_file_info(std::string filename) { @@ -195,11 +196,13 @@ FramesResponse get_frames(std::string filename, int timestamp) { } AVRational stream_time_base = pFormatContext->streams[video_stream_index]->time_base; + AVRational avg_frame_rate = pFormatContext->streams[video_stream_index]->avg_frame_rate; // printf("stream_time_base: %d / %d = %.5f\n", stream_time_base.num, stream_time_base.den, av_q2d(stream_time_base)); FramesResponse r; r.nb_frames = nb_frames; r.time_base = av_q2d(stream_time_base); + r.avg_frame_rate = av_q2d(avg_frame_rate); r.duration = pFormatContext->streams[video_stream_index]->duration; // If the duration value isn't in the stream, get from the FormatContext. @@ -316,6 +319,7 @@ EMSCRIPTEN_BINDINGS(structs) { .field("gop_size", &FramesResponse::gop_size) .field("duration", &FramesResponse::duration) .field("time_base", &FramesResponse::time_base) + .field("avg_frame_rate", &FramesResponse::avg_frame_rate) ; function("get_frames", &get_frames); } \ No newline at end of file diff --git a/www/src/components/Frames.vue b/www/src/components/Frames.vue index e0c9129..31783a0 100644 --- a/www/src/components/Frames.vue +++ b/www/src/components/Frames.vue @@ -54,6 +54,7 @@ export default { { name: 'Duration', value: this.data.duration }, { name: 'Timebase', value: this.data.time_base }, { name: 'Total Frames', value: this.data.nb_frames }, + { name: 'FPS', value: this.data.avg_frame_rate }, ] } },