From df46372eeedc5bb0330c00bd5caffc0906504697 Mon Sep 17 00:00:00 2001 From: Dmitry Kovalev Date: Wed, 15 Jan 2014 15:10:12 -0800 Subject: [PATCH] Cleaning up ivf-related code. Change-Id: I80f3e197562f3424acddbff786a5d0d209fbd666 --- ivfdec.c | 42 +++++++++++++++++++++--------------------- ivfenc.c | 3 --- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/ivfdec.c b/ivfdec.c index 65415ccd8..c7f4a8947 100644 --- a/ivfdec.c +++ b/ivfdec.c @@ -13,6 +13,25 @@ #include #include +static void fix_framerate(int *num, int *den) { + // Some versions of vpxenc used 1/(2*fps) for the timebase, so + // we can guess the framerate using only the timebase in this + // case. Other files would require reading ahead to guess the + // timebase, like we do for webm. + if (*num < 1000) { + // Correct for the factor of 2 applied to the timebase in the encoder. + if (*num & 1) + *den *= 2; + else + *num /= 2; + } else { + // Don't know FPS for sure, and don't have readahead code + // (yet?), so just default to 30fps. + *num = 30; + *den = 1; + } +} + int file_is_ivf(struct VpxInputContext *input_ctx) { char raw_hdr[32]; int is_ivf = 0; @@ -32,27 +51,8 @@ int file_is_ivf(struct VpxInputContext *input_ctx) { input_ctx->height = mem_get_le16(raw_hdr + 14); input_ctx->framerate.numerator = mem_get_le32(raw_hdr + 16); input_ctx->framerate.denominator = mem_get_le32(raw_hdr + 20); - - /* Some versions of vpxenc used 1/(2*fps) for the timebase, so - * we can guess the framerate using only the timebase in this - * case. Other files would require reading ahead to guess the - * timebase, like we do for webm. - */ - if (input_ctx->framerate.numerator < 1000) { - /* Correct for the factor of 2 applied to the timebase in the - * encoder. - */ - if (input_ctx->framerate.numerator & 1) - input_ctx->framerate.denominator <<= 1; - else - input_ctx->framerate.numerator >>= 1; - } else { - /* Don't know FPS for sure, and don't have readahead code - * (yet?), so just default to 30fps. - */ - input_ctx->framerate.numerator = 30; - input_ctx->framerate.denominator = 1; - } + fix_framerate(&input_ctx->framerate.numerator, + &input_ctx->framerate.denominator); } } diff --git a/ivfenc.c b/ivfenc.c index 611d6676f..0041ff044 100644 --- a/ivfenc.c +++ b/ivfenc.c @@ -41,9 +41,6 @@ void ivf_write_frame_header(FILE *outfile, const struct vpx_codec_cx_pkt *pkt) { char header[12]; vpx_codec_pts_t pts; - if (pkt->kind != VPX_CODEC_CX_FRAME_PKT) - return; - pts = pkt->data.frame.pts; mem_put_le32(header, (int)pkt->data.frame.sz); mem_put_le32(header + 4, pts & 0xFFFFFFFF);