external/libvpx/libwebm: Update snapshot

Update libwebm snapshot. This update contains security fixes from upstream.

Upstream git hash: 229f49347d19b0ca0941e072b199a242ef6c5f2b

BUG=23167726

Change-Id: Id3e140e7b31ae11294724b1ecfe2e9c83b4d4207
(cherry picked from commit d0281a15b3c6bd91756e453cc9398c5ef412d99a)

long VideoTrack::Seek(long long time_ns, const BlockEntry*& pResult) const {
 const long status = GetFirst(pResult);

 if (status < 0) // buffer underflow, etc
 return status;

  assert(pResult);

 if (pResult->EOS())
 return 0;

 const Cluster* pCluster = pResult->GetCluster();
  assert(pCluster);
  assert(pCluster->GetIndex() >= 0);

 if (time_ns <= pResult->GetBlock()->GetTime(pCluster))
 return 0;

 Cluster** const clusters = m_pSegment->m_clusters;
  assert(clusters);

 const long count = m_pSegment->GetCount(); // loaded only, not pre-loaded
  assert(count > 0);

 Cluster** const i = clusters + pCluster->GetIndex();
  assert(i);
  assert(*i == pCluster);
  assert(pCluster->GetTime() <= time_ns);

 Cluster** const j = clusters + count;

 Cluster** lo = i;
 Cluster** hi = j;

 while (lo < hi) {

 Cluster** const mid = lo + (hi - lo) / 2;
    assert(mid < hi);

    pCluster = *mid;
    assert(pCluster);
    assert(pCluster->GetIndex() >= 0);
    assert(pCluster->GetIndex() == long(mid - m_pSegment->m_clusters));

 const long long t = pCluster->GetTime();

 if (t <= time_ns)
      lo = mid + 1;
 else
      hi = mid;

    assert(lo <= hi);
 }

  assert(lo == hi);
  assert(lo > i);
  assert(lo <= j);

  pCluster = *--lo;
  assert(pCluster);
  assert(pCluster->GetTime() <= time_ns);

  pResult = pCluster->GetEntry(this, time_ns);

 if ((pResult != 0) && !pResult->EOS()) // found a keyframe
 return 0;

 while (lo != i) {
    pCluster = *--lo;

     assert(pCluster);
     assert(pCluster->GetTime() <= time_ns);
 
     pResult = pCluster->GetEntry(this, time_ns);
 
     if ((pResult != 0) && !pResult->EOS())
       return 0;
 }


  pResult = GetEOS();
 return 0;
}

long VideoTrack::Seek(long long time_ns, const BlockEntry*& pResult) const {
 const long status = GetFirst(pResult);

 if (status < 0) // buffer underflow, etc
 return status;

  assert(pResult);

 if (pResult->EOS())
 return 0;

 const Cluster* pCluster = pResult->GetCluster();
  assert(pCluster);
  assert(pCluster->GetIndex() >= 0);

 if (time_ns <= pResult->GetBlock()->GetTime(pCluster))
 return 0;

 Cluster** const clusters = m_pSegment->m_clusters;
  assert(clusters);

 const long count = m_pSegment->GetCount(); // loaded only, not pre-loaded
  assert(count > 0);

 Cluster** const i = clusters + pCluster->GetIndex();
  assert(i);
  assert(*i == pCluster);
  assert(pCluster->GetTime() <= time_ns);

 Cluster** const j = clusters + count;

 Cluster** lo = i;
 Cluster** hi = j;

 while (lo < hi) {

 Cluster** const mid = lo + (hi - lo) / 2;
    assert(mid < hi);

    pCluster = *mid;
    assert(pCluster);
    assert(pCluster->GetIndex() >= 0);
    assert(pCluster->GetIndex() == long(mid - m_pSegment->m_clusters));

 const long long t = pCluster->GetTime();

 if (t <= time_ns)
      lo = mid + 1;
 else
      hi = mid;

    assert(lo <= hi);
 }

  assert(lo == hi);
  assert(lo > i);
  assert(lo <= j);

  pCluster = *--lo;
  assert(pCluster);
  assert(pCluster->GetTime() <= time_ns);

  pResult = pCluster->GetEntry(this, time_ns);

 if ((pResult != 0) && !pResult->EOS()) // found a keyframe
 return 0;

 while (lo != i) {
    pCluster = *--lo;

     assert(pCluster);
     assert(pCluster->GetTime() <= time_ns);
 
#if 0
        pResult = pCluster->GetMaxKey(this);
#else
     pResult = pCluster->GetEntry(this, time_ns);
#endif
 
     if ((pResult != 0) && !pResult->EOS())
       return 0;
 }


  pResult = GetEOS();
 return 0;
}
