ref: 374b21b27748b14799ae6178b5e6a16c6035531e
parent: 99d648b943b18b9a35c17d2c449df7408b18a1f3
parent: f4b736a64640702aa3ab6ba36434faeb96c9b548
author: Dmitry Kovalev <dkovalev@google.com>
date: Wed Jun 18 12:42:29 EDT 2014
Merge "Removing decode_one_iter() function."
--- a/vp9/vp9_dx_iface.c
+++ b/vp9/vp9_dx_iface.c
@@ -352,34 +352,11 @@
}
}
-static vpx_codec_err_t decode_one_iter(vpx_codec_alg_priv_t *ctx,
- const uint8_t **data_start_ptr,
- const uint8_t *data_end,
- uint32_t frame_size, void *user_priv,
- long deadline) {
- const vpx_codec_err_t res = decode_one(ctx, data_start_ptr, frame_size,
- user_priv, deadline);
- if (res != VPX_CODEC_OK)
- return res;
-
- // Account for suboptimal termination by the encoder.
- while (*data_start_ptr < data_end) {
- const uint8_t marker = read_marker(ctx->decrypt_cb, ctx->decrypt_state,
- *data_start_ptr);
- if (marker)
- break;
- (*data_start_ptr)++;
- }
-
- return VPX_CODEC_OK;
-}
-
static vpx_codec_err_t decoder_decode(vpx_codec_alg_priv_t *ctx,
const uint8_t *data, unsigned int data_sz,
void *user_priv, long deadline) {
const uint8_t *data_start = data;
const uint8_t *const data_end = data + data_sz;
- vpx_codec_err_t res;
uint32_t frame_sizes[8];
int frame_count;
@@ -393,7 +370,9 @@
int i;
for (i = 0; i < frame_count; ++i) {
+ const uint8_t *data_start_copy = data_start;
const uint32_t frame_size = frame_sizes[i];
+ vpx_codec_err_t res;
if (data_start < data ||
frame_size > (uint32_t)(data_end - data_start)) {
ctx->base.err_detail = "Invalid frame size in index";
@@ -400,18 +379,28 @@
return VPX_CODEC_CORRUPT_FRAME;
}
- res = decode_one_iter(ctx, &data_start, data_end, frame_size,
- user_priv, deadline);
+ res = decode_one(ctx, &data_start_copy, frame_size, user_priv, deadline);
if (res != VPX_CODEC_OK)
return res;
+
+ data_start += frame_size;
}
} else {
while (data_start < data_end) {
- res = decode_one_iter(ctx, &data_start, data_end,
- (uint32_t)(data_end - data_start),
- user_priv, deadline);
+ const uint32_t frame_size = (uint32_t)(data_end - data_start);
+ const vpx_codec_err_t res = decode_one(ctx, &data_start, frame_size,
+ user_priv, deadline);
if (res != VPX_CODEC_OK)
return res;
+
+ // Account for suboptimal termination by the encoder.
+ while (data_start < data_end) {
+ const uint8_t marker = read_marker(ctx->decrypt_cb, ctx->decrypt_state,
+ data_start);
+ if (marker)
+ break;
+ ++data_start;
+ }
}
}
--
⑨