libmix: VP8 parser refinement

BZ: 131068

This patch refined content:
1. add trace in parser if meet error
2. remove non-used function

Change-Id: Ib5c7520f0e55a4ed1ba59c41c4c131d9f2dd4ebb
Reviewed-on: http://android.intel.com:8080/139257
Reviewed-by: Shi, PingX <pingx.shi@intel.com>
Tested-by: Shi, PingX <pingx.shi@intel.com>
Reviewed-by: cactus <cactus@intel.com>
Tested-by: cactus <cactus@intel.com>
diff --git a/mixvbp/vbp_manager/vbp_vp8_parser.c b/mixvbp/vbp_manager/vbp_vp8_parser.c
index 203ab75..51f8236 100755
--- a/mixvbp/vbp_manager/vbp_vp8_parser.c
+++ b/mixvbp/vbp_manager/vbp_vp8_parser.c
@@ -205,6 +205,7 @@
     uint32 length = cxt->parse_cubby.size;
     if (length < 3)
     {
+        ETRACE("failure: invalid len %d in parse start code", length);
         return VBP_DATA;
     }
 
@@ -216,6 +217,7 @@
         // check start code
         if ((c[0] != 0x9d) || (c[1] != 0x01) || (c[2] != 0x2a))
         {
+            ETRACE("failure: check start code failure");
             return VBP_PARM;
         }
     }
@@ -484,7 +486,8 @@
     }
 
     pic_data->num_slices++;
-    if (pic_data->num_slices > VP8_MAX_NUM_SLICES) {
+    if (pic_data->num_slices > VP8_MAX_NUM_SLICES)
+    {
         ETRACE("Number of slices (%d) per picture exceeds the limit (%d).", pic_data->num_slices, VP8_MAX_NUM_SLICES);
         return VBP_DATA;
     }
@@ -517,7 +520,10 @@
     {
         error = vbp_add_slice_data_vp8(parser, query_data);
         if (error != VBP_OK)
+        {
+            ETRACE("add slice data error %d", error);
             return error;
+        }
     }
 
     /* Populate codec data */
diff --git a/mixvbp/vbp_plugin/vp8/include/vp8parse.h b/mixvbp/vbp_plugin/vp8/include/vp8parse.h
index a5c9c13..063d635 100755
--- a/mixvbp/vbp_plugin/vp8/include/vp8parse.h
+++ b/mixvbp/vbp_plugin/vp8/include/vp8parse.h
@@ -34,7 +34,7 @@
 
 int32_t vp8_parse_frame_tag(FrameTagHeader *frame_tag, uint8_t *data, uint32_t data_sz);
 
-//vp8_Status vp8_translate_parse_status(vp8_Status status);
+void vp8_translate_parse_status(vp8_Status status);
 
 void vp8_init_Info(vp8_Info *pi);
 
diff --git a/mixvbp/vbp_plugin/vp8/viddec_vp8_parse.c b/mixvbp/vbp_plugin/vp8/viddec_vp8_parse.c
index 4eb5919..860adc0 100755
--- a/mixvbp/vbp_plugin/vp8/viddec_vp8_parse.c
+++ b/mixvbp/vbp_plugin/vp8/viddec_vp8_parse.c
@@ -61,7 +61,12 @@
     vp8_Status status = VP8_NO_ERROR;
 
     vp8_viddec_parser *parser = (vp8_viddec_parser*)ctxt;
-    if (1 != parser->got_start) return VP8_NO_INITIALIZATION;
+    if (1 != parser->got_start)
+    {
+        status = VP8_NO_INITIALIZATION;
+        vp8_translate_parse_status(status);
+        return status;
+    }
 
     vp8_Info *pi = &(parser->info);
     viddec_pm_cxt_t *pm_cxt = (viddec_pm_cxt_t *)parent;
@@ -70,7 +75,7 @@
 
     if (pi->source_sz < 0)
     {
-        return VP8_UNEXPECTED_END_OF_BITSTREAM;
+        status = VP8_UNEXPECTED_END_OF_BITSTREAM;
     }
     else if (pi->source_sz == 0)
     {
@@ -82,13 +87,12 @@
         status = vp8_parse_frame_header(parser);
     }
 
-    return status;
-}
+    if (status != VP8_NO_ERROR)
+    {
+        vp8_translate_parse_status(status);
+    }
 
-uint32_t viddec_vp8_wkld_done(void *parent, void *ctxt, unsigned int next_sc,
-                              uint32_t *codec_specific_errors)
-{
-    return 0;
+    return status;
 }
 
 void viddec_vp8_get_context_size(viddec_parser_memory_sizes_t *size)
@@ -99,20 +103,3 @@
     return;
 }
 
-uint32_t viddec_vp8_is_frame_start(void *ctxt)
-{
-    vp8_viddec_parser* parser = ctxt;
-
-    return parser->got_start;
-}
-
-void viddec_vp8_get_ops(viddec_parser_ops_t *ops)
-{
-    ops->init = viddec_vp8_init;
-
-    ops->parse_syntax = viddec_vp8_parse;
-    ops->get_cxt_size = viddec_vp8_get_context_size;
-    ops->is_wkld_done = viddec_vp8_wkld_done;
-    ops->is_frame_start = viddec_vp8_is_frame_start;
-    return;
-}
diff --git a/mixvbp/vbp_plugin/vp8/vp8parse.c b/mixvbp/vbp_plugin/vp8/vp8parse.c
index 4f15736..f3c789d 100755
--- a/mixvbp/vbp_plugin/vp8/vp8parse.c
+++ b/mixvbp/vbp_plugin/vp8/vp8parse.c
@@ -25,6 +25,7 @@
 
 #include "vp8_tables.h"
 #include "vp8parse.h"
+#include <vbp_trace.h>
 
 static const uint8_t kVp8SyncCodeByte[] = {0x9d, 0x01, 0x2a};
 
@@ -115,7 +116,7 @@
     /* Is segmentation enabled */
     pi->Segmentation.Enabled = (uint8_t)vp8_decode_bool(bc, 128); //chapter 9.2 - macroblock uses segments ?  1: 0
 
-    if(pi->Segmentation.Enabled )
+    if(pi->Segmentation.Enabled)
     {
         /* Signal whether or not the segmentation map is being explicitly updated this frame */
         pi->Segmentation.UpdateMap = (uint8_t)vp8_decode_bool(bc, 128);
@@ -465,29 +466,40 @@
 
 }
 
-#if 0
-vp8_Status vp8_translate_parse_status(vp8_Status status)
+
+void vp8_translate_parse_status(vp8_Status status)
 {
     switch (status)
     {
     case VP8_UNSUPPORTED_VERSION:
-        LOGE("Parser returned VP8_UNSUPPORTED_VERSION");
-       return VP8_UNSUPPORTED_VERSION;
+        ETRACE("Parser returns VP8_UNSUPPORTED_VERSION");
+        break;
     case VP8_UNSUPPORTED_BITSTREAM:
-        LOGE("Parser returned VP8_UNSUPPORTED_BITSTREAM");
-        return VP8_UNSUPPORTED_BITSTREAM;
+        ETRACE("Parser returns VP8_UNSUPPORTED_BITSTREAM");
+        break;
     case VP8_INVALID_FRAME_SYNC_CODE:
-        LOGE("Parser returned VP8_INVALID_FRAME_SYNC_CODE");
-        return VP8_INVALID_FRAME_SYNC_CODE;
+        ETRACE("Parser returns VP8_INVALID_FRAME_SYNC_CODE");
+        break;
     case VP8_UNEXPECTED_END_OF_BITSTREAM:
-        LOGE("Parser returned VP8_UNEXPECTED_END_OF_BITSTREAM");
-        return VP8_UNEXPECTED_END_OF_BITSTREAM;
-    default:
-        LOGE("Parser returned VP8_UNKNOWN_ERROR");
-        return VP8_UNKNOWN_ERROR;
+        ETRACE("Parser returns VP8_UNEXPECTED_END_OF_BITSTREAM");
+        break;
+    case VP8_CORRUPT_FRAME:
+        ETRACE("Parser returns VP8_CORRUPT_FRAME");
+        break;
+    case VP8_MEMORY_ERROR:
+        ETRACE("Parser returns MEMORY_ERROR");
+        break;
+    case VP8_NO_INITIALIZATION:
+        ETRACE("Parser returns VP8_NO_INITIALIZATION");
+        break;
+    case VP8_UNKNOWN_ERROR:
+        ETRACE("Parser returns VP8_UNKNOWN_ERROR");
+        break;
     }
+
+    return;
 }
-#endif
+
 
 /* Parse VP8 frame header */
 int32_t vp8_parse_frame_header(vp8_viddec_parser *parser)
@@ -508,6 +520,7 @@
     ret = vp8_parse_frame_tag(&(pi->frame_tag), data, data_sz);
     if (ret != VP8_NO_ERROR)
     {
+        vp8_translate_parse_status(ret);
         return ret;
     }
 
@@ -523,7 +536,9 @@
         /* Check sync code containg 3 bytes*/
         if ((data[0] != kVp8SyncCodeByte[0]) || (data[1] != kVp8SyncCodeByte[1]) || (data[2] != kVp8SyncCodeByte[2]))
         {
-            return VP8_INVALID_FRAME_SYNC_CODE;
+            ret = VP8_INVALID_FRAME_SYNC_CODE;
+            vp8_translate_parse_status(ret);
+            return ret;
         }
 
         pi->width = (data[3] | (data[4] << 8)) & 0x3fff;
@@ -538,7 +553,9 @@
 
     if (0 == pi->width || 0 == pi->height)
     {
-        return VP8_UNSUPPORTED_BITSTREAM;
+        ret = VP8_UNSUPPORTED_BITSTREAM;
+        vp8_translate_parse_status(ret);
+        return ret;
     }
 
     /* Initialize frame parameters*/