Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Unified Diff: source/libvpx/vp8/decoder/onyxd_if.c

Issue 12077018: libvpx: Pull from upstream (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/libvpx/vp8/common/postproc.c ('k') | source/libvpx/vp8/decoder/onyxd_int.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/libvpx/vp8/decoder/onyxd_if.c
===================================================================
--- source/libvpx/vp8/decoder/onyxd_if.c (revision 179051)
+++ source/libvpx/vp8/decoder/onyxd_if.c (working copy)
@@ -92,9 +92,6 @@
pbi->decoded_key_frame = 0;
- pbi->input_fragments = oxcf->input_fragments;
- pbi->num_fragments = 0;
-
/* Independent partitions is activated when a frame updates the
* token probability table to have equal probabilities over the
* PREV_COEF context.
@@ -282,60 +279,13 @@
return err;
}
-int vp8dx_receive_compressed_data(VP8D_COMP *pbi, size_t size,
- const uint8_t *source,
- int64_t time_stamp)
+int check_fragments_for_errors(VP8D_COMP *pbi)
{
-#if HAVE_NEON
- int64_t dx_store_reg[8];
-#endif
- VP8_COMMON *cm = &pbi->common;
- int retcode = -1;
-
- pbi->common.error.error_code = VPX_CODEC_OK;
-
- if (pbi->num_fragments == 0)
- {
- /* New frame, reset fragment pointers and sizes */
- vpx_memset((void*)pbi->fragments, 0, sizeof(pbi->fragments));
- vpx_memset(pbi->fragment_sizes, 0, sizeof(pbi->fragment_sizes));
- }
- if (pbi->input_fragments && !(source == NULL && size == 0))
- {
- /* Store a pointer to this fragment and return. We haven't
- * received the complete frame yet, so we will wait with decoding.
- */
- assert(pbi->num_fragments < MAX_PARTITIONS);
- pbi->fragments[pbi->num_fragments] = source;
- pbi->fragment_sizes[pbi->num_fragments] = size;
- pbi->num_fragments++;
- if (pbi->num_fragments > (1 << EIGHT_PARTITION) + 1)
- {
- pbi->common.error.error_code = VPX_CODEC_UNSUP_BITSTREAM;
- pbi->common.error.setjmp = 0;
- pbi->num_fragments = 0;
- return -1;
- }
- return 0;
- }
-
- if (!pbi->input_fragments)
- {
- pbi->fragments[0] = source;
- pbi->fragment_sizes[0] = size;
- pbi->num_fragments = 1;
- }
- assert(pbi->common.multi_token_partition <= EIGHT_PARTITION);
- if (pbi->num_fragments == 0)
- {
- pbi->num_fragments = 1;
- pbi->fragments[0] = NULL;
- pbi->fragment_sizes[0] = 0;
- }
-
if (!pbi->ec_active &&
pbi->num_fragments <= 1 && pbi->fragment_sizes[0] == 0)
{
+ VP8_COMMON *cm = &pbi->common;
+
/* If error concealment is disabled we won't signal missing frames
* to the decoder.
*/
@@ -361,13 +311,30 @@
/* Signal that we have no frame to show. */
cm->show_frame = 0;
- pbi->num_fragments = 0;
-
/* Nothing more to do. */
return 0;
}
+ return 1;
+}
+
+int vp8dx_receive_compressed_data(VP8D_COMP *pbi, size_t size,
+ const uint8_t *source,
+ int64_t time_stamp)
+{
#if HAVE_NEON
+ int64_t dx_store_reg[8];
+#endif
+ VP8_COMMON *cm = &pbi->common;
+ int retcode = -1;
+
+ pbi->common.error.error_code = VPX_CODEC_OK;
+
+ retcode = check_fragments_for_errors(pbi);
+ if(retcode <= 0)
+ return retcode;
+
+#if HAVE_NEON
#if CONFIG_RUNTIME_CPU_DETECT
if (cm->cpu_caps & HAS_NEON)
#endif
@@ -419,7 +386,13 @@
vp8_clear_system_state();
-#if CONFIG_ERROR_CONCEALMENT
+ if (cm->show_frame)
+ {
+ cm->current_video_frame++;
+ cm->show_frame_mi = cm->mi;
+ }
+
+ #if CONFIG_ERROR_CONCEALMENT
/* swap the mode infos to storage for future error concealment */
if (pbi->ec_enabled && pbi->common.prev_mi)
{
@@ -441,9 +414,6 @@
}
#endif
- if (cm->show_frame)
- cm->current_video_frame++;
-
pbi->ready_for_new_data = 0;
pbi->last_time_stamp = time_stamp;
@@ -458,7 +428,6 @@
#endif
pbi->common.error.setjmp = 0;
- pbi->num_fragments = 0;
return retcode;
}
int vp8dx_get_raw_frame(VP8D_COMP *pbi, YV12_BUFFER_CONFIG *sd, int64_t *time_stamp, int64_t *time_end_stamp, vp8_ppflags_t *flags)
« no previous file with comments | « source/libvpx/vp8/common/postproc.c ('k') | source/libvpx/vp8/decoder/onyxd_int.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698