diff --git a/.clang-format b/.clang-format
index 787d47a..9b3f9d9 100644
--- a/.clang-format
+++ b/.clang-format
@@ -14,15 +14,11 @@
 # limitations under the License.
 #
 
-#
-# Below are some minor deviations from the default Google style to
-# accommodate for handling of the large legacy code base.
-#
-
 BasedOnStyle: Google
 CommentPragmas: NOLINT:.*
 DerivePointerAlignment: false
 AllowShortFunctionsOnASingleLine: Inline
+ColumnLimit: 100
 TabWidth: 4
 UseTab: Never
 IndentWidth: 4
diff --git a/audio/2.0/default/Device.cpp b/audio/2.0/default/Device.cpp
index d12f8c0..b696d94 100644
--- a/audio/2.0/default/Device.cpp
+++ b/audio/2.0/default/Device.cpp
@@ -26,7 +26,6 @@
 #include "Conversions.h"
 #include "Device.h"
 #include "HidlUtils.h"
-#include "ParametersUtil.h"
 #include "StreamIn.h"
 #include "StreamOut.h"
 
@@ -36,28 +35,9 @@
 namespace V2_0 {
 namespace implementation {
 
-namespace {
-
-class ParametersUtilImpl : public ParametersUtil {
-   public:
-    ParametersUtilImpl(audio_hw_device_t* device) : mDevice{device} {}
-
-    char* halGetParameters(const char* keys) override {
-        return mDevice->get_parameters(mDevice, keys);
-    }
-
-    int halSetParameters(const char* keysAndValues) override {
-        return mDevice->set_parameters(mDevice, keysAndValues);
-    }
-
-   private:
-    audio_hw_device_t* mDevice;
-};
-
-}  // namespace
-
 Device::Device(audio_hw_device_t* device)
-    : mDevice{device}, mParameters{new ParametersUtilImpl(mDevice)} {}
+        : mDevice(device) {
+}
 
 Device::~Device() {
     int status = audio_hw_device_close(mDevice);
@@ -87,28 +67,12 @@
     mDevice->close_output_stream(mDevice, stream);
 }
 
-Result Device::getParam(const char* name, bool* value) {
-    return mParameters->getParam(name, value);
+char* Device::halGetParameters(const char* keys) {
+    return mDevice->get_parameters(mDevice, keys);
 }
 
-Result Device::getParam(const char* name, int* value) {
-    return mParameters->getParam(name, value);
-}
-
-Result Device::getParam(const char* name, String8* value) {
-    return mParameters->getParam(name, value);
-}
-
-Result Device::setParam(const char* name, bool value) {
-    return mParameters->setParam(name, value);
-}
-
-Result Device::setParam(const char* name, int value) {
-    return mParameters->setParam(name, value);
-}
-
-Result Device::setParam(const char* name, const char* value) {
-    return mParameters->setParam(name, value);
+int Device::halSetParameters(const char* keysAndValues) {
+    return mDevice->set_parameters(mDevice, keysAndValues);
 }
 
 // Methods from ::android::hardware::audio::V2_0::IDevice follow.
@@ -310,22 +274,21 @@
 
 Return<AudioHwSync> Device::getHwAvSync()  {
     int halHwAvSync;
-    Result retval =
-        mParameters->getParam(AudioParameter::keyHwAvSync, &halHwAvSync);
+    Result retval = getParam(AudioParameter::keyHwAvSync, &halHwAvSync);
     return retval == Result::OK ? halHwAvSync : AUDIO_HW_SYNC_INVALID;
 }
 
 Return<Result> Device::setScreenState(bool turnedOn)  {
-    return mParameters->setParam(AudioParameter::keyScreenState, turnedOn);
+    return setParam(AudioParameter::keyScreenState, turnedOn);
 }
 
 Return<void> Device::getParameters(const hidl_vec<hidl_string>& keys, getParameters_cb _hidl_cb)  {
-    mParameters->getParametersImpl(keys, _hidl_cb);
+    getParametersImpl(keys, _hidl_cb);
     return Void();
 }
 
 Return<Result> Device::setParameters(const hidl_vec<ParameterValue>& parameters)  {
-    return mParameters->setParametersImpl(parameters);
+    return setParametersImpl(parameters);
 }
 
 Return<void> Device::debugDump(const hidl_handle& fd)  {
diff --git a/audio/2.0/default/Device.h b/audio/2.0/default/Device.h
index 748f96b..7738361 100644
--- a/audio/2.0/default/Device.h
+++ b/audio/2.0/default/Device.h
@@ -27,14 +27,14 @@
 
 #include <hidl/MQDescriptor.h>
 
+#include "ParametersUtil.h"
+
 namespace android {
 namespace hardware {
 namespace audio {
 namespace V2_0 {
 namespace implementation {
 
-class ParametersUtil;
-
 using ::android::hardware::audio::common::V2_0::AudioConfig;
 using ::android::hardware::audio::common::V2_0::AudioHwSync;
 using ::android::hardware::audio::common::V2_0::AudioInputFlag;
@@ -55,7 +55,7 @@
 using ::android::hardware::hidl_string;
 using ::android::sp;
 
-struct Device : public IDevice {
+struct Device : public IDevice, public ParametersUtil {
     explicit Device(audio_hw_device_t* device);
 
     // Methods from ::android::hardware::audio::V2_0::IDevice follow.
@@ -101,19 +101,16 @@
     void closeInputStream(audio_stream_in_t* stream);
     void closeOutputStream(audio_stream_out_t* stream);
     audio_hw_device_t* device() const { return mDevice; }
-    Result getParam(const char* name, bool* value);
-    Result getParam(const char* name, int* value);
-    Result getParam(const char* name, String8* value);
-    Result setParam(const char* name, bool value);
-    Result setParam(const char* name, int value);
-    Result setParam(const char* name, const char* value);
 
-   private:
+  private:
     audio_hw_device_t *mDevice;
-    std::unique_ptr<ParametersUtil> mParameters;
 
     virtual ~Device();
 
+    // Methods from ParametersUtil.
+    char* halGetParameters(const char* keys) override;
+    int halSetParameters(const char* keysAndValues) override;
+
     uint32_t version() const { return mDevice->common.version; }
 };
 
diff --git a/audio/2.0/default/ParametersUtil.h b/audio/2.0/default/ParametersUtil.h
index 603e336..49036dc 100644
--- a/audio/2.0/default/ParametersUtil.h
+++ b/audio/2.0/default/ParametersUtil.h
@@ -37,23 +37,22 @@
 
 class ParametersUtil {
   public:
-   virtual ~ParametersUtil() = default;
-   Result getParam(const char* name, bool* value);
-   Result getParam(const char* name, int* value);
-   Result getParam(const char* name, String8* value);
-   void getParametersImpl(
-       const hidl_vec<hidl_string>& keys,
-       std::function<void(Result retval,
-                          const hidl_vec<ParameterValue>& parameters)>
-           cb);
-   std::unique_ptr<AudioParameter> getParams(const AudioParameter& keys);
-   Result setParam(const char* name, bool value);
-   Result setParam(const char* name, int value);
-   Result setParam(const char* name, const char* value);
-   Result setParametersImpl(const hidl_vec<ParameterValue>& parameters);
-   Result setParams(const AudioParameter& param);
+    Result getParam(const char* name, bool* value);
+    Result getParam(const char* name, int* value);
+    Result getParam(const char* name, String8* value);
+    void getParametersImpl(
+            const hidl_vec<hidl_string>& keys,
+            std::function<void(Result retval, const hidl_vec<ParameterValue>& parameters)> cb);
+    std::unique_ptr<AudioParameter> getParams(const AudioParameter& keys);
+    Result setParam(const char* name, bool value);
+    Result setParam(const char* name, int value);
+    Result setParam(const char* name, const char* value);
+    Result setParametersImpl(const hidl_vec<ParameterValue>& parameters);
+    Result setParams(const AudioParameter& param);
 
   protected:
+    virtual ~ParametersUtil() {}
+
     virtual char* halGetParameters(const char* keys) = 0;
     virtual int halSetParameters(const char* keysAndValues) = 0;
 };
diff --git a/automotive/evs/1.0/vts/functional/FormatConvert.cpp b/automotive/evs/1.0/vts/functional/FormatConvert.cpp
index e5cc8ee..1e8929d 100644
--- a/automotive/evs/1.0/vts/functional/FormatConvert.cpp
+++ b/automotive/evs/1.0/vts/functional/FormatConvert.cpp
@@ -18,8 +18,6 @@
 
 #include "FormatConvert.h"
 
-#include <algorithm>    // std::min
-
 
 // Round up to the nearest multiple of the given alignment value
 template<unsigned alignment>
diff --git a/health/1.0/vts/functional/Android.bp b/health/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..1a4c8c8
--- /dev/null
+++ b/health/1.0/vts/functional/Android.bp
@@ -0,0 +1,32 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_test {
+    name: "VtsHalHealthV1_0TargetTest",
+    defaults: ["hidl_defaults"],
+    srcs: ["VtsHalHealthV1_0TargetTest.cpp"],
+    shared_libs: [
+        "libhidlbase",
+        "liblog",
+        "libutils",
+        "android.hardware.health@1.0",
+    ],
+    static_libs: ["VtsHalHidlTargetTestBase"],
+    cflags: [
+        "-O0",
+        "-g",
+    ]
+}
diff --git a/health/1.0/vts/functional/VtsHalHealthV1_0TargetTest.cpp b/health/1.0/vts/functional/VtsHalHealthV1_0TargetTest.cpp
new file mode 100644
index 0000000..324eb9f
--- /dev/null
+++ b/health/1.0/vts/functional/VtsHalHealthV1_0TargetTest.cpp
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "health_hidl_hal_test"
+
+#include <android/hardware/health/1.0/IHealth.h>
+#include <android/hardware/health/1.0/types.h>
+#include <log/log.h>
+#include <VtsHalHidlTargetTestBase.h>
+
+using HealthConfig = ::android::hardware::health::V1_0::HealthConfig;
+using HealthInfo = ::android::hardware::health::V1_0::HealthInfo;
+using IHealth = ::android::hardware::health::V1_0::IHealth;
+using Result = ::android::hardware::health::V1_0::Result;
+
+using ::android::sp;
+
+class HealthHidlTest : public ::testing::VtsHalHidlTargetTestBase {
+   public:
+    virtual void SetUp() override {
+        health = ::testing::VtsHalHidlTargetTestBase::getService<IHealth>();
+        ASSERT_NE(health, nullptr);
+        health->init(config,
+                     [&](const auto& halConfigOut) { config = halConfigOut; });
+    }
+
+    sp<IHealth> health;
+    HealthConfig config;
+};
+
+/**
+ * Ensure EnergyCounter call returns positive energy counter or NOT_SUPPORTED
+ */
+TEST_F(HealthHidlTest, TestEnergyCounter) {
+    Result result;
+    int64_t energy = 0;
+    health->energyCounter([&](Result ret, int64_t energyOut) {
+        result = ret;
+        energy = energyOut;
+    });
+
+    ASSERT_TRUE(result == Result::SUCCESS || result == Result::NOT_SUPPORTED);
+    ASSERT_TRUE(result != Result::SUCCESS || energy > 0);
+}
+
+int main(int argc, char **argv) {
+    ::testing::InitGoogleTest(&argc, argv);
+    int status = RUN_ALL_TESTS();
+    ALOGI("Test result = %d", status);
+    return status;
+}
diff --git a/health/Android.bp b/health/Android.bp
index bbb3e4b..33f70eb 100644
--- a/health/Android.bp
+++ b/health/Android.bp
@@ -1,4 +1,5 @@
 // This is an autogenerated file, do not edit.
 subdirs = [
     "1.0",
+    "1.0/vts/functional",
 ]
diff --git a/keymaster/3.0/default/KeymasterDevice.cpp b/keymaster/3.0/default/KeymasterDevice.cpp
index 40e27ae..d83963f 100644
--- a/keymaster/3.0/default/KeymasterDevice.cpp
+++ b/keymaster/3.0/default/KeymasterDevice.cpp
@@ -549,6 +549,7 @@
     if (!foundAttestationApplicationId) {
         _hidl_cb(ErrorCode::ATTESTATION_APPLICATION_ID_MISSING,
                  resultCertChain);
+        return Void();
     }
 
     keymaster_cert_chain_t cert_chain{nullptr, 0};
diff --git a/media/omx/1.0/vts/functional/README.md b/media/omx/1.0/vts/functional/README.md
index 0593c1e..fa88811 100644
--- a/media/omx/1.0/vts/functional/README.md
+++ b/media/omx/1.0/vts/functional/README.md
@@ -1,49 +1,33 @@
-## Codec OMX Tests
+## Omx Hal @ 1.0 tests ##
 ---
+## Overview :
+The scope of the tests presented here is not restricted solely to testing omx hal @ 1.0 API but also test to omx core functionality and to an extent omx components as well. The current directory contains the following folders: audio, common, component, master and video. Besides common all other folders contain test fixtures for testing AV decoder, encoder components. Common constitutes files that are used across by these test applications.
 
-The current directory contains the following folders: audio, common, component, master
-and video.
+#### master :
+Functionality of master is to enumerate all the omx components (and the roles it supports) available in android media framework.
 
-Besides common, all other folders contain basic OMX unit tests for testing audio and video decoder-encoder
-components. common constitutes files that are used across test applications.
+usage: VtsHalMediaOmxV1\_0TargetMasterTest -I default
 
-## master
-Enumerates all the omx components (and their roles) available in android media framework.
+#### component :
+This folder includes test fixtures that tests aspects common to all omx compatible components. For instance, port enabling/disabling, enumerating port formats, state transitions, flush, ..., stay common to all components irrespective of the service they offer. Test fixtures are directed towards testing the omx core. Every standard OMX compatible component is expected to pass these tests.
 
-Usage:
+usage: VtsHalMediaOmxV1\_0TargetComponentTest -I default -C <comp name> -R <comp role>
 
-VtsHalMediaOmxV1\_0TargetMasterTest -I default
+#### audio :
+This folder includes test fixtures associated with testing audio encoder and decoder components such as simple encoding of a raw clip or decoding of an elementary stream, end of stream test, timestamp deviations test, flush test and so on. These tests are aimed towards testing the plugin that connects the component to the omx core.
 
-## component
-This folder includes test fixtures that tests aspects common to all OMX compatible components. For instance, port enabling/disabling, enumerating port formats, state transitions, flush etc. stay common to all components irrespective of the service they offer. In a way this tests the OMX Core. Every standard OMX compatible component is expected to pass these tests.
+usage:
 
+VtsHalMediaOmxV1\_0TargetAudioDecTest -I default -C <comp name> -R audio_decoder.<comp class> -P /sdcard/media/
 
-Usage:
+VtsHalMediaOmxV1\_0TargetAudioEncTest -I default -C <comp name> -R audio_encoder.<comp class> -P /sdcard/media/
 
-VtsHalMediaOmxV1\_0TargetComponentTest -I default -C <component name> -R <component role>
+#### video :
+This folder includes test fixtures associated with testing video encoder and decoder components such as simple encoding of a raw clip or decoding of an elementary stream, end of stream test, timestamp deviations test, flush test and so on. These tests are aimed towards testing the plugin that connects the component to the omx core.
 
-## audio
-This folder includes test fixtures associated with audio encoder/decoder components such as encoding/decoding, EOS test, timestamp test etc. These tests are aimed towards testing the component specific aspects.
+usage:
 
-Usage:
+VtsHalMediaOmxV1\_0TargetVideoDecTest -I default -C <comp name> -R video_decoder.<comp class> -P /sdcard/media/
 
-VtsHalMediaOmxV1\_0TargetAudioDecTest -I default -C <component name> -R audio_decoder.<class>
-
-VtsHalMediaOmxV1\_0TargetAudioEncTest -I default -C <component name> -R audio_encoder.<class>
-
-## video
-This folder includes test fixtures associated with video encoder/decoder components like encoding/decoding, EOS test, timestamp test etc. These tests are aimed towards testing the component specific aspects.
-
-Usage:
-
-VtsHalMediaOmxV1\_0TargetVideoDecTest -I default -C <component name> -R video_decoder.<class>
-
-VtsHalMediaOmxV1\_0TargetVideoEncTest -I default -C <component name> -R video_encoder.<class>
-
-## notes
-Every component shall be tested by two applications,
-
-* ComponentTest.
-
-* AudioDecTest/AudioEncTest/VideoDecTest/VideoEncTest depending on the component class.
+VtsHalMediaOmxV1\_0TargetVideoEncTest -I default -C <comp name> -R video_encoder.<comp class> -P /sdcard/media/
 
diff --git a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
index 34658b8..7cef52f 100644
--- a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
+++ b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
@@ -51,7 +51,7 @@
     virtual void SetUp() {}
     virtual void TearDown() {}
 
-    ComponentTestEnvironment() : instance("default") {}
+    ComponentTestEnvironment() : instance("default"), res("/sdcard/media/") {}
 
     void setInstance(const char* _instance) { instance = _instance; }
 
@@ -59,7 +59,7 @@
 
     void setRole(const char* _role) { role = _role; }
 
-    void setQuirks(int _quirks) { quirks = _quirks; }
+    void setRes(const char* _res) { res = _res; }
 
     const hidl_string getInstance() const { return instance; }
 
@@ -67,19 +67,19 @@
 
     const hidl_string getRole() const { return role; }
 
-    int getQuirks() const { return quirks; }
+    const hidl_string getRes() const { return res; }
 
     int initFromOptions(int argc, char** argv) {
         static struct option options[] = {
             {"instance", required_argument, 0, 'I'},
             {"component", required_argument, 0, 'C'},
             {"role", required_argument, 0, 'R'},
-            {"quirks", required_argument, 0, 'Q'},
+            {"res", required_argument, 0, 'P'},
             {0, 0, 0, 0}};
 
         while (true) {
             int index = 0;
-            int c = getopt_long(argc, argv, "I:C:Q:R:", options, &index);
+            int c = getopt_long(argc, argv, "I:C:R:P:", options, &index);
             if (c == -1) {
                 break;
             }
@@ -91,12 +91,12 @@
                 case 'C':
                     setComponent(optarg);
                     break;
-                case 'Q':
-                    setQuirks(atoi(optarg));
-                    break;
                 case 'R':
                     setRole(optarg);
                     break;
+                case 'P':
+                    setRes(optarg);
+                    break;
                 case '?':
                     break;
             }
@@ -109,8 +109,8 @@
                     "test options are:\n\n"
                     "-I, --instance: HAL instance to test\n"
                     "-C, --component: OMX component to test\n"
-                    "-R, --Role: OMX component Role\n"
-                    "-Q, --quirks: Component quirks\n",
+                    "-R, --role: OMX component Role\n"
+                    "-P, --res: Resource files directory location\n",
                     argv[optind ?: 1], argv[0]);
             return 2;
         }
@@ -121,12 +121,12 @@
     hidl_string instance;
     hidl_string component;
     hidl_string role;
-    // to be removed when IOmxNode::setQuirks is removed
-    int quirks;
+    hidl_string res;
 };
 
 static ComponentTestEnvironment* gEnv = nullptr;
 
+// audio decoder test fixture class
 class AudioDecHidlTest : public ::testing::VtsHalHidlTargetTestBase {
    public:
     virtual void SetUp() override {
@@ -134,7 +134,8 @@
         omx = ::testing::VtsHalHidlTargetTestBase::getService<IOmx>(
             gEnv->getInstance());
         ASSERT_NE(omx, nullptr);
-        observer = new CodecObserver();
+        observer =
+            new CodecObserver([this](Message msg) { handleMessage(msg); });
         ASSERT_NE(observer, nullptr);
         ASSERT_EQ(strncmp(gEnv->getComponent().c_str(), "OMX.", 4), 0)
             << "Invalid Component Name";
@@ -195,6 +196,10 @@
             }
         }
         ASSERT_NE(i, kNumCompToCoding);
+        eosFlag = false;
+        framesReceived = 0;
+        timestampUs = 0;
+        timestampDevTest = false;
     }
 
     virtual void TearDown() override {
@@ -204,6 +209,51 @@
         }
     }
 
+    // callback function to process messages received by onMessages() from IL
+    // client.
+    void handleMessage(Message msg) {
+        if (msg.type == Message::Type::FILL_BUFFER_DONE) {
+            if (msg.data.extendedBufferData.flags & OMX_BUFFERFLAG_EOS) {
+                eosFlag = true;
+            }
+            if (msg.data.extendedBufferData.rangeLength != 0) {
+                framesReceived += 1;
+                // For decoder components current timestamp always exceeds
+                // previous timestamp
+                EXPECT_GE(msg.data.extendedBufferData.timestampUs, timestampUs);
+                timestampUs = msg.data.extendedBufferData.timestampUs;
+                // Test if current timestamp is among the list of queued
+                // timestamps
+                if (timestampDevTest) {
+                    bool tsHit = false;
+                    android::List<uint64_t>::iterator it =
+                        timestampUslist.begin();
+                    while (it != timestampUslist.end()) {
+                        if (*it == timestampUs) {
+                            timestampUslist.erase(it);
+                            tsHit = true;
+                            break;
+                        }
+                        it++;
+                    }
+                    if (tsHit == false) {
+                        if (timestampUslist.empty() == false) {
+                            EXPECT_EQ(tsHit, true)
+                                << "TimeStamp not recognized";
+                        } else {
+                            std::cerr
+                                << "[          ] Warning ! Received non-zero "
+                                   "output / TimeStamp not recognized \n";
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    void testEOS(android::Vector<BufferInfo>* iBuffer,
+                 android::Vector<BufferInfo>* oBuffer, bool signalEOS = false);
+
     enum standardComp {
         mp3,
         amrnb,
@@ -220,6 +270,11 @@
     sp<IOmxNode> omxNode;
     standardComp compName;
     OMX_AUDIO_CODINGTYPE eEncoding;
+    bool eosFlag;
+    uint32_t framesReceived;
+    uint64_t timestampUs;
+    ::android::List<uint64_t> timestampUslist;
+    bool timestampDevTest;
 
    protected:
     static void description(const std::string& description) {
@@ -227,6 +282,44 @@
     }
 };
 
+// end of stream test for audio decoder components
+void AudioDecHidlTest::testEOS(android::Vector<BufferInfo>* iBuffer,
+                               android::Vector<BufferInfo>* oBuffer,
+                               bool signalEOS) {
+    android::hardware::media::omx::V1_0::Status status;
+    size_t i = 0;
+    if (signalEOS) {
+        if ((i = getEmptyBufferID(iBuffer)) < iBuffer->size()) {
+            // signal an empty buffer with flag set to EOS
+            dispatchInputBuffer(omxNode, iBuffer, i, 0, OMX_BUFFERFLAG_EOS, 0);
+        } else {
+            ASSERT_TRUE(false);
+        }
+    }
+    // Dispatch all client owned output buffers to recover remaining frames
+    while (1) {
+        if ((i = getEmptyBufferID(oBuffer)) < oBuffer->size()) {
+            dispatchOutputBuffer(omxNode, oBuffer, i);
+        } else {
+            break;
+        }
+    }
+    while (1) {
+        Message msg;
+        status =
+            observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+        EXPECT_EQ(status,
+                  android::hardware::media::omx::V1_0::Status::TIMED_OUT);
+        for (; i < iBuffer->size(); i++) {
+            if ((*iBuffer)[i].owner != client) break;
+        }
+        if (i == iBuffer->size()) break;
+    }
+    // test for flag
+    EXPECT_EQ(eosFlag, true);
+    eosFlag = false;
+}
+
 // Set Default port param.
 void setDefaultPortParam(
     sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding,
@@ -340,8 +433,8 @@
 }
 
 // LookUpTable of clips and metadata for component testing
-void GetURLForComponent(AudioDecHidlTest::standardComp comp, const char** mURL,
-                        const char** info) {
+void GetURLForComponent(AudioDecHidlTest::standardComp comp, char* mURL,
+                        char* info) {
     struct CompToURL {
         AudioDecHidlTest::standardComp comp;
         const char* mURL;
@@ -349,42 +442,155 @@
     };
     static const CompToURL kCompToURL[] = {
         {AudioDecHidlTest::standardComp::mp3,
-         "/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.mp3",
-         "/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.info"},
+         "bbb_mp3_stereo_192kbps_48000hz.mp3",
+         "bbb_mp3_stereo_192kbps_48000hz.info"},
         {AudioDecHidlTest::standardComp::aac,
-         "/sdcard/media/bbb_aac_stereo_128kbps_48000hz.aac",
-         "/sdcard/media/bbb_aac_stereo_128kbps_48000hz.info"},
+         "bbb_aac_stereo_128kbps_48000hz.aac",
+         "bbb_aac_stereo_128kbps_48000hz.info"},
         {AudioDecHidlTest::standardComp::amrnb,
-         "/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.amrnb",
-         "/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.info"},
+         "sine_amrnb_1ch_12kbps_8000hz.amrnb",
+         "sine_amrnb_1ch_12kbps_8000hz.info"},
         {AudioDecHidlTest::standardComp::amrwb,
-         "/sdcard/media/sine_amrwb_1ch_24kbps_16000hz.amrwb",
-         "/sdcard/media/sine_amrwb_1ch_24kbps_16000hz.info"},
+         "sine_amrwb_1ch_24kbps_16000hz.amrwb",
+         "sine_amrwb_1ch_24kbps_16000hz.info"},
         {AudioDecHidlTest::standardComp::vorbis,
-         "/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.vorbis",
-         "/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.info"},
+         "bbb_vorbis_stereo_128kbps_48000hz.vorbis",
+         "bbb_vorbis_stereo_128kbps_48000hz.info"},
         {AudioDecHidlTest::standardComp::opus,
-         "/sdcard/media/bbb_opus_stereo_128kbps_48000hz.opus",
-         "/sdcard/media/bbb_opus_stereo_128kbps_48000hz.info"},
+         "bbb_opus_stereo_128kbps_48000hz.opus",
+         "bbb_opus_stereo_128kbps_48000hz.info"},
     };
 
-    *mURL = *info = nullptr;
     for (size_t i = 0; i < sizeof(kCompToURL) / sizeof(kCompToURL[0]); ++i) {
         if (kCompToURL[i].comp == comp) {
-            *mURL = kCompToURL[i].mURL;
-            *info = kCompToURL[i].info;
+            strcat(mURL, kCompToURL[i].mURL);
+            strcat(info, kCompToURL[i].info);
             return;
         }
     }
 }
 
+// port settings reconfiguration during runtime. reconfigures sample rate and
+// number
+void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
+                         android::Vector<BufferInfo>* iBuffer,
+                         android::Vector<BufferInfo>* oBuffer,
+                         OMX_AUDIO_CODINGTYPE eEncoding,
+                         OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput,
+                         Message msg) {
+    android::hardware::media::omx::V1_0::Status status;
+
+    if (msg.data.eventData.event == OMX_EventPortSettingsChanged) {
+        ASSERT_EQ(msg.data.eventData.data1, kPortIndexOutput);
+
+        status = omxNode->sendCommand(toRawCommandType(OMX_CommandPortDisable),
+                                      kPortIndexOutput);
+        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+
+        status =
+            observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+        if (status == android::hardware::media::omx::V1_0::Status::TIMED_OUT) {
+            for (size_t i = 0; i < oBuffer->size(); ++i) {
+                // test if client got all its buffers back
+                EXPECT_EQ((*oBuffer)[i].owner, client);
+                // free the buffers
+                status =
+                    omxNode->freeBuffer(kPortIndexOutput, (*oBuffer)[i].id);
+                ASSERT_EQ(status,
+                          android::hardware::media::omx::V1_0::Status::OK);
+            }
+            status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer,
+                                              oBuffer);
+            ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+            ASSERT_EQ(msg.type, Message::Type::EVENT);
+            ASSERT_EQ(msg.data.eventData.event, OMX_EventCmdComplete);
+            ASSERT_EQ(msg.data.eventData.data1, OMX_CommandPortDisable);
+            ASSERT_EQ(msg.data.eventData.data2, kPortIndexOutput);
+
+            // set Port Params
+            int32_t nChannels;
+            int32_t nSampleRate;
+            getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
+                                &nSampleRate);
+            setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                                nChannels, nSampleRate);
+
+            // If you can disable a port, then you should be able to
+            // enable
+            // it as well
+            status = omxNode->sendCommand(
+                toRawCommandType(OMX_CommandPortEnable), kPortIndexOutput);
+            ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+
+            // do not enable the port until all the buffers are supplied
+            status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer,
+                                              oBuffer);
+            ASSERT_EQ(status,
+                      android::hardware::media::omx::V1_0::Status::TIMED_OUT);
+
+            allocatePortBuffers(omxNode, oBuffer, kPortIndexOutput);
+            status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer,
+                                              oBuffer);
+            ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+            ASSERT_EQ(msg.type, Message::Type::EVENT);
+            ASSERT_EQ(msg.data.eventData.data1, OMX_CommandPortEnable);
+            ASSERT_EQ(msg.data.eventData.data2, kPortIndexOutput);
+
+            // dispatch output buffers
+            for (size_t i = 0; i < oBuffer->size(); i++) {
+                dispatchOutputBuffer(omxNode, oBuffer, i);
+            }
+        } else {
+            ASSERT_TRUE(false);
+        }
+    } else {
+        EXPECT_TRUE(false);
+        return;
+    }
+}
+
+// blocking call to ensures application to Wait till all the inputs are consumed
+void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
+                            android::Vector<BufferInfo>* iBuffer,
+                            android::Vector<BufferInfo>* oBuffer,
+                            OMX_AUDIO_CODINGTYPE eEncoding,
+                            OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput) {
+    android::hardware::media::omx::V1_0::Status status;
+    Message msg;
+
+    while (1) {
+        size_t i = 0;
+        status =
+            observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+        if (status == android::hardware::media::omx::V1_0::Status::OK) {
+            EXPECT_EQ(msg.type, Message::Type::EVENT);
+            portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding,
+                                kPortIndexInput, kPortIndexOutput, msg);
+        }
+        // status == TIMED_OUT, it could be due to process time being large
+        // than DEFAULT_TIMEOUT or component needs output buffers to start
+        // processing.
+        for (; i < iBuffer->size(); i++) {
+            if ((*iBuffer)[i].owner != client) break;
+        }
+        if (i == iBuffer->size()) break;
+
+        // Dispatch an output buffer assuming outQueue.empty() is true
+        size_t index;
+        if ((index = getEmptyBufferID(oBuffer)) < oBuffer->size()) {
+            dispatchOutputBuffer(omxNode, oBuffer, index);
+        }
+    }
+}
+
 // Decode N Frames
 void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                    android::Vector<BufferInfo>* iBuffer,
                    android::Vector<BufferInfo>* oBuffer,
                    OMX_AUDIO_CODINGTYPE eEncoding, OMX_U32 kPortIndexInput,
-                   OMX_U32 kPortIndexOutput, uint32_t nFrames,
-                   std::ifstream& eleStream, std::ifstream& eleInfo) {
+                   OMX_U32 kPortIndexOutput, std::ifstream& eleStream,
+                   android::Vector<FrameData>* Info, int offset, int range,
+                   bool signalEOS = true) {
     android::hardware::media::omx::V1_0::Status status;
     Message msg;
 
@@ -393,21 +599,24 @@
         dispatchOutputBuffer(omxNode, oBuffer, i);
     }
     // dispatch input buffers
-    int bytesCount = 0;
     uint32_t flags = 0;
-    uint64_t timestamp = 0;
-    for (size_t i = 0; i < iBuffer->size() && nFrames != 0; i++) {
+    int frameID = offset;
+    for (size_t i = 0; (i < iBuffer->size()) && (frameID < (int)Info->size()) &&
+                       (frameID < (offset + range));
+         i++) {
         char* ipBuffer = static_cast<char*>(
             static_cast<void*>((*iBuffer)[i].mMemory->getPointer()));
-        if (!(eleInfo >> bytesCount)) break;
-        ASSERT_LE(bytesCount,
+        ASSERT_LE((*Info)[frameID].bytesCount,
                   static_cast<int>((*iBuffer)[i].mMemory->getSize()));
-        eleStream.read(ipBuffer, bytesCount);
-        ASSERT_EQ(eleStream.gcount(), bytesCount);
-        eleInfo >> flags;
-        eleInfo >> timestamp;
-        dispatchInputBuffer(omxNode, iBuffer, i, bytesCount, 0, timestamp);
-        nFrames--;
+        eleStream.read(ipBuffer, (*Info)[frameID].bytesCount);
+        ASSERT_EQ(eleStream.gcount(), (*Info)[frameID].bytesCount);
+        flags = (*Info)[frameID].flags;
+        if (signalEOS && ((frameID == (int)Info->size() - 1) ||
+                          (frameID == (offset + range - 1))))
+            flags |= OMX_BUFFERFLAG_EOS;
+        dispatchInputBuffer(omxNode, iBuffer, i, (*Info)[frameID].bytesCount,
+                            flags, (*Info)[frameID].timestamp);
+        frameID++;
     }
 
     while (1) {
@@ -417,101 +626,29 @@
         // Port Reconfiguration
         if (status == android::hardware::media::omx::V1_0::Status::OK &&
             msg.type == Message::Type::EVENT) {
-            if (msg.data.eventData.event == OMX_EventPortSettingsChanged) {
-                ASSERT_EQ(msg.data.eventData.data1, kPortIndexOutput);
-
-                status = omxNode->sendCommand(
-                    toRawCommandType(OMX_CommandPortDisable), kPortIndexOutput);
-                ASSERT_EQ(status,
-                          android::hardware::media::omx::V1_0::Status::OK);
-
-                status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
-                                                  iBuffer, oBuffer);
-                if (status ==
-                    android::hardware::media::omx::V1_0::Status::TIMED_OUT) {
-                    for (size_t i = 0; i < oBuffer->size(); ++i) {
-                        // test if client got all its buffers back
-                        EXPECT_EQ((*oBuffer)[i].owner, client);
-                        // free the buffers
-                        status = omxNode->freeBuffer(kPortIndexOutput,
-                                                     (*oBuffer)[i].id);
-                        ASSERT_EQ(
-                            status,
-                            android::hardware::media::omx::V1_0::Status::OK);
-                    }
-                    status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
-                                                      iBuffer, oBuffer);
-                    ASSERT_EQ(status,
-                              android::hardware::media::omx::V1_0::Status::OK);
-                    ASSERT_EQ(msg.type, Message::Type::EVENT);
-                    ASSERT_EQ(msg.data.eventData.event, OMX_EventCmdComplete);
-                    ASSERT_EQ(msg.data.eventData.data1, OMX_CommandPortDisable);
-                    ASSERT_EQ(msg.data.eventData.data2, kPortIndexOutput);
-
-                    // set Port Params
-                    int32_t nChannels;
-                    int32_t nSampleRate;
-                    getInputChannelInfo(omxNode, kPortIndexInput, eEncoding,
-                                        &nChannels, &nSampleRate);
-                    setDefaultPortParam(omxNode, kPortIndexOutput,
-                                        OMX_AUDIO_CodingPCM, nChannels,
-                                        nSampleRate);
-
-                    // If you can disable a port, then you should be able to
-                    // enable
-                    // it as well
-                    status = omxNode->sendCommand(
-                        toRawCommandType(OMX_CommandPortEnable),
-                        kPortIndexOutput);
-                    ASSERT_EQ(status,
-                              android::hardware::media::omx::V1_0::Status::OK);
-
-                    // do not enable the port until all the buffers are supplied
-                    status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
-                                                      iBuffer, oBuffer);
-                    ASSERT_EQ(
-                        status,
-                        android::hardware::media::omx::V1_0::Status::TIMED_OUT);
-
-                    allocatePortBuffers(omxNode, oBuffer, kPortIndexOutput);
-                    status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
-                                                      iBuffer, oBuffer);
-                    ASSERT_EQ(status,
-                              android::hardware::media::omx::V1_0::Status::OK);
-                    ASSERT_EQ(msg.type, Message::Type::EVENT);
-                    ASSERT_EQ(msg.data.eventData.data1, OMX_CommandPortEnable);
-                    ASSERT_EQ(msg.data.eventData.data2, kPortIndexOutput);
-
-                    // dispatch output buffers
-                    for (size_t i = 0; i < oBuffer->size(); i++) {
-                        dispatchOutputBuffer(omxNode, oBuffer, i);
-                    }
-                } else {
-                    ASSERT_TRUE(false);
-                }
-            } else {
-                EXPECT_TRUE(false);
-                return;
-            }
+            portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding,
+                                kPortIndexInput, kPortIndexOutput, msg);
         }
 
-        if (nFrames == 0) break;
+        if (frameID == (int)Info->size() || frameID == (offset + range)) break;
 
         // Dispatch input buffer
         size_t index = 0;
         if ((index = getEmptyBufferID(iBuffer)) < iBuffer->size()) {
             char* ipBuffer = static_cast<char*>(
                 static_cast<void*>((*iBuffer)[index].mMemory->getPointer()));
-            if (!(eleInfo >> bytesCount)) break;
-            ASSERT_LE(bytesCount,
+            ASSERT_LE((*Info)[frameID].bytesCount,
                       static_cast<int>((*iBuffer)[index].mMemory->getSize()));
-            eleStream.read(ipBuffer, bytesCount);
-            ASSERT_EQ(eleStream.gcount(), bytesCount);
-            eleInfo >> flags;
-            eleInfo >> timestamp;
-            dispatchInputBuffer(omxNode, iBuffer, index, bytesCount, 0,
-                                timestamp);
-            nFrames--;
+            eleStream.read(ipBuffer, (*Info)[frameID].bytesCount);
+            ASSERT_EQ(eleStream.gcount(), (*Info)[frameID].bytesCount);
+            flags = (*Info)[frameID].flags;
+            if (signalEOS && ((frameID == (int)Info->size() - 1) ||
+                              (frameID == (offset + range - 1))))
+                flags |= OMX_BUFFERFLAG_EOS;
+            dispatchInputBuffer(omxNode, iBuffer, index,
+                                (*Info)[frameID].bytesCount, flags,
+                                (*Info)[frameID].timestamp);
+            frameID++;
         }
         if ((index = getEmptyBufferID(oBuffer)) < oBuffer->size()) {
             dispatchOutputBuffer(omxNode, oBuffer, index);
@@ -519,6 +656,7 @@
     }
 }
 
+// set component role
 TEST_F(AudioDecHidlTest, SetRole) {
     description("Test Set Component Role");
     android::hardware::media::omx::V1_0::Status status;
@@ -526,6 +664,7 @@
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// port format enumeration
 TEST_F(AudioDecHidlTest, EnumeratePortFormat) {
     description("Test Component on Mandatory Port Parameters (Port Format)");
     android::hardware::media::omx::V1_0::Status status;
@@ -545,8 +684,10 @@
     EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// test port settings reconfiguration, elementary stream decode and timestamp
+// deviation
 TEST_F(AudioDecHidlTest, DecodeTest) {
-    description("Tests Port Reconfiguration and Decode");
+    description("Tests Port Reconfiguration, Decode and timestamp deviation");
     android::hardware::media::omx::V1_0::Status status;
     uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
     status = setRole(omxNode, gEnv->getRole().c_str());
@@ -558,16 +699,29 @@
         kPortIndexInput = params.nStartPortNumber;
         kPortIndexOutput = kPortIndexInput + 1;
     }
-    const char *mURL = nullptr, *info = nullptr;
-    GetURLForComponent(compName, &mURL, &info);
-    EXPECT_NE(mURL, nullptr);
-    EXPECT_NE(info, nullptr);
+    char mURL[512], info[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    strcpy(info, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL, info);
 
     std::ifstream eleStream, eleInfo;
-    eleStream.open(mURL, std::ifstream::binary);
-    ASSERT_EQ(eleStream.is_open(), true);
+
     eleInfo.open(info);
     ASSERT_EQ(eleInfo.is_open(), true);
+    android::Vector<FrameData> Info;
+    int bytesCount = 0;
+    uint32_t flags = 0;
+    uint32_t timestamp = 0;
+    timestampDevTest = true;
+    while (1) {
+        if (!(eleInfo >> bytesCount)) break;
+        eleInfo >> flags;
+        eleInfo >> timestamp;
+        Info.push_back({bytesCount, flags, timestamp});
+        if (flags != OMX_BUFFERFLAG_CODECCONFIG)
+            timestampUslist.push_back(timestamp);
+    }
+    eleInfo.close();
 
     int32_t nChannels, nSampleRate;
     // Configure input port
@@ -586,16 +740,234 @@
     // set state to executing
     changeStateIdletoExecute(omxNode, observer);
     // Port Reconfiguration
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
-                  kPortIndexInput, kPortIndexOutput, 1024, eleStream, eleInfo);
+                  kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
+                  (int)Info.size());
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer);
+    EXPECT_EQ(timestampUslist.empty(), true);
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
     // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
+}
 
+// end of sequence test
+TEST_F(AudioDecHidlTest, EOSTest) {
+    description("Test end of stream");
+    android::hardware::media::omx::V1_0::Status status;
+    uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
+    status = setRole(omxNode, gEnv->getRole().c_str());
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    OMX_PORT_PARAM_TYPE params;
+    status = getParam(omxNode, OMX_IndexParamAudioInit, &params);
+    if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
+        ASSERT_EQ(params.nPorts, 2U);
+        kPortIndexInput = params.nStartPortNumber;
+        kPortIndexOutput = kPortIndexInput + 1;
+    }
+    char mURL[512], info[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    strcpy(info, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL, info);
+
+    std::ifstream eleStream, eleInfo;
+
+    eleInfo.open(info);
+    ASSERT_EQ(eleInfo.is_open(), true);
+    android::Vector<FrameData> Info;
+    int bytesCount = 0;
+    uint32_t flags = 0;
+    uint32_t timestamp = 0;
+    while (1) {
+        if (!(eleInfo >> bytesCount)) break;
+        eleInfo >> flags;
+        eleInfo >> timestamp;
+        Info.push_back({bytesCount, flags, timestamp});
+    }
     eleInfo.close();
+
+    int32_t nChannels, nSampleRate;
+    // Configure input port
+    setDefaultPortParam(omxNode, kPortIndexInput, eEncoding);
+    getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
+                        &nSampleRate);
+    // Configure output port
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                        nChannels, nSampleRate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // request EOS at the start
+    testEOS(&iBuffer, &oBuffer, true);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 0U);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // request EOS for thumbnail
+    // signal EOS flag with last frame
+    size_t i = 0;
+    while (!(Info[i].flags & OMX_BUFFERFLAG_SYNCFRAME)) i++;
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                  kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
+                  i + 1);
     eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 1U);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // signal EOS flag after last frame
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                  kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0, i + 1,
+                  false);
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer, true);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 1U);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // request EOS at the end
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                  kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
+                  (int)Info.size());
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
+}
+
+// test input/output port flush
+TEST_F(AudioDecHidlTest, FlushTest) {
+    description("Test Flush");
+    android::hardware::media::omx::V1_0::Status status;
+    uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
+    status = setRole(omxNode, gEnv->getRole().c_str());
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    OMX_PORT_PARAM_TYPE params;
+    status = getParam(omxNode, OMX_IndexParamAudioInit, &params);
+    if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
+        ASSERT_EQ(params.nPorts, 2U);
+        kPortIndexInput = params.nStartPortNumber;
+        kPortIndexOutput = kPortIndexInput + 1;
+    }
+    char mURL[512], info[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    strcpy(info, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL, info);
+
+    std::ifstream eleStream, eleInfo;
+
+    eleInfo.open(info);
+    ASSERT_EQ(eleInfo.is_open(), true);
+    android::Vector<FrameData> Info;
+    int bytesCount = 0;
+    uint32_t flags = 0;
+    uint32_t timestamp = 0;
+    while (1) {
+        if (!(eleInfo >> bytesCount)) break;
+        eleInfo >> flags;
+        eleInfo >> timestamp;
+        Info.push_back({bytesCount, flags, timestamp});
+    }
+    eleInfo.close();
+
+    int32_t nChannels, nSampleRate;
+    // Configure input port
+    setDefaultPortParam(omxNode, kPortIndexInput, eEncoding);
+    getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
+                        &nSampleRate);
+    // Configure output port
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                        nChannels, nSampleRate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // Decode 128 frames and flush. here 128 is chosen to ensure there is a key
+    // frame after this so that the below section can be convered for all
+    // components
+    int nFrames = 128;
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                  kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
+                  nFrames, false);
+    // Note: Assumes 200 ms is enough to end any decode call that started
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput, 200000);
+    framesReceived = 0;
+
+    // Seek to next key frame and start decoding till the end
+    int index = nFrames;
+    bool keyFrame = false;
+    while (index < (int)Info.size()) {
+        if ((Info[index].flags & OMX_BUFFERFLAG_SYNCFRAME) ==
+            OMX_BUFFERFLAG_SYNCFRAME) {
+            timestampUs = Info[index - 1].timestamp;
+            keyFrame = true;
+            break;
+        }
+        eleStream.ignore(Info[index].bytesCount);
+        index++;
+    }
+    if (keyFrame) {
+        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
+                      kPortIndexInput, kPortIndexOutput, eleStream, &Info,
+                      index, Info.size() - index, false);
+    }
+    // Note: Assumes 200 ms is enough to end any decode call that started
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput, 200000);
+    framesReceived = 0;
+
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 int main(int argc, char** argv) {
diff --git a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp
index 066d554..131e2e1 100644
--- a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp
+++ b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp
@@ -51,7 +51,7 @@
     virtual void SetUp() {}
     virtual void TearDown() {}
 
-    ComponentTestEnvironment() : instance("default") {}
+    ComponentTestEnvironment() : instance("default"), res("/sdcard/media/") {}
 
     void setInstance(const char* _instance) { instance = _instance; }
 
@@ -59,7 +59,7 @@
 
     void setRole(const char* _role) { role = _role; }
 
-    void setQuirks(int _quirks) { quirks = _quirks; }
+    void setRes(const char* _res) { res = _res; }
 
     const hidl_string getInstance() const { return instance; }
 
@@ -67,19 +67,19 @@
 
     const hidl_string getRole() const { return role; }
 
-    int getQuirks() const { return quirks; }
+    const hidl_string getRes() const { return res; }
 
     int initFromOptions(int argc, char** argv) {
         static struct option options[] = {
             {"instance", required_argument, 0, 'I'},
             {"component", required_argument, 0, 'C'},
             {"role", required_argument, 0, 'R'},
-            {"quirks", required_argument, 0, 'Q'},
+            {"res", required_argument, 0, 'P'},
             {0, 0, 0, 0}};
 
         while (true) {
             int index = 0;
-            int c = getopt_long(argc, argv, "I:C:Q:R:", options, &index);
+            int c = getopt_long(argc, argv, "I:C:R:P:", options, &index);
             if (c == -1) {
                 break;
             }
@@ -91,12 +91,12 @@
                 case 'C':
                     setComponent(optarg);
                     break;
-                case 'Q':
-                    setQuirks(atoi(optarg));
-                    break;
                 case 'R':
                     setRole(optarg);
                     break;
+                case 'P':
+                    setRes(optarg);
+                    break;
                 case '?':
                     break;
             }
@@ -109,8 +109,8 @@
                     "test options are:\n\n"
                     "-I, --instance: HAL instance to test\n"
                     "-C, --component: OMX component to test\n"
-                    "-R, --Role: OMX component Role\n"
-                    "-Q, --quirks: Component quirks\n",
+                    "-R, --role: OMX component Role\n"
+                    "-P, --res: Resource files directory location\n",
                     argv[optind ?: 1], argv[0]);
             return 2;
         }
@@ -121,12 +121,12 @@
     hidl_string instance;
     hidl_string component;
     hidl_string role;
-    // to be removed when IOmxNode::setQuirks is removed
-    int quirks;
+    hidl_string res;
 };
 
 static ComponentTestEnvironment* gEnv = nullptr;
 
+// audio encoder test fixture class
 class AudioEncHidlTest : public ::testing::VtsHalHidlTargetTestBase {
    public:
     virtual void SetUp() override {
@@ -134,7 +134,7 @@
         omx = ::testing::VtsHalHidlTargetTestBase::getService<IOmx>(
             gEnv->getInstance());
         ASSERT_NE(omx, nullptr);
-        observer = new CodecObserver();
+        observer = new CodecObserver([this](Message msg) { (void)msg; });
         ASSERT_NE(observer, nullptr);
         ASSERT_EQ(strncmp(gEnv->getComponent().c_str(), "OMX.", 4), 0)
             << "Invalid Component Name";
@@ -257,27 +257,21 @@
 }
 
 // LookUpTable of clips and metadata for component testing
-void GetURLForComponent(AudioEncHidlTest::standardComp comp,
-                        const char** mURL) {
+void GetURLForComponent(AudioEncHidlTest::standardComp comp, char* mURL) {
     struct CompToURL {
         AudioEncHidlTest::standardComp comp;
         const char* mURL;
     };
     static const CompToURL kCompToURL[] = {
-        {AudioEncHidlTest::standardComp::aac,
-         "/sdcard/media/bbb_raw_2ch_48khz_s16le.raw"},
-        {AudioEncHidlTest::standardComp::amrnb,
-         "/sdcard/media/bbb_raw_1ch_8khz_s16le.raw"},
-        {AudioEncHidlTest::standardComp::amrwb,
-         "/sdcard/media/bbb_raw_1ch_16khz_s16le.raw"},
-        {AudioEncHidlTest::standardComp::flac,
-         "/sdcard/media/bbb_raw_2ch_48khz_s16le.raw"},
+        {AudioEncHidlTest::standardComp::aac, "bbb_raw_2ch_48khz_s16le.raw"},
+        {AudioEncHidlTest::standardComp::amrnb, "bbb_raw_1ch_8khz_s16le.raw"},
+        {AudioEncHidlTest::standardComp::amrwb, "bbb_raw_1ch_16khz_s16le.raw"},
+        {AudioEncHidlTest::standardComp::flac, "bbb_raw_2ch_48khz_s16le.raw"},
     };
 
-    *mURL = nullptr;
     for (size_t i = 0; i < sizeof(kCompToURL) / sizeof(kCompToURL[0]); ++i) {
         if (kCompToURL[i].comp == comp) {
-            *mURL = kCompToURL[i].mURL;
+            strcat(mURL, kCompToURL[i].mURL);
             return;
         }
     }
@@ -343,6 +337,7 @@
     }
 }
 
+// set component role
 TEST_F(AudioEncHidlTest, SetRole) {
     description("Test Set Component Role");
     android::hardware::media::omx::V1_0::Status status;
@@ -350,6 +345,7 @@
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// port format enumeration
 TEST_F(AudioEncHidlTest, EnumeratePortFormat) {
     description("Test Component on Mandatory Port Parameters (Port Format)");
     android::hardware::media::omx::V1_0::Status status;
@@ -369,6 +365,7 @@
     EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// test raw stream encode
 TEST_F(AudioEncHidlTest, EncodeTest) {
     description("Tests Encode");
     android::hardware::media::omx::V1_0::Status status;
@@ -382,9 +379,9 @@
         kPortIndexInput = params.nStartPortNumber;
         kPortIndexOutput = kPortIndexInput + 1;
     }
-    const char* mURL = nullptr;
-    GetURLForComponent(compName, &mURL);
-    EXPECT_NE(mURL, nullptr);
+    char mURL[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL);
 
     std::ifstream eleStream;
     eleStream.open(mURL, std::ifstream::binary);
diff --git a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
index d8dfe58..d107889 100644
--- a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
@@ -235,6 +235,26 @@
     return buffArray->size();
 }
 
+// dispatch buffer to output port
+void dispatchOutputBuffer(sp<IOmxNode> omxNode,
+                          android::Vector<BufferInfo>* buffArray,
+                          size_t bufferIndex) {
+    android::hardware::media::omx::V1_0::Status status;
+    CodecBuffer t;
+    t.sharedMemory = android::hardware::hidl_memory();
+    t.nativeHandle = android::hardware::hidl_handle();
+    t.type = CodecBuffer::Type::PRESET;
+    t.attr.preset.rangeOffset = 0;
+    t.attr.preset.rangeLength = 0;
+    native_handle_t* fenceNh = native_handle_create(0, 0);
+    ASSERT_NE(fenceNh, nullptr);
+    status = omxNode->fillBuffer((*buffArray)[bufferIndex].id, t, fenceNh);
+    native_handle_close(fenceNh);
+    native_handle_delete(fenceNh);
+    ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+    buffArray->editItemAt(bufferIndex).owner = component;
+}
+
 // dispatch buffer to input port
 void dispatchInputBuffer(sp<IOmxNode> omxNode,
                          android::Vector<BufferInfo>* buffArray,
@@ -257,31 +277,11 @@
     buffArray->editItemAt(bufferIndex).owner = component;
 }
 
-// dispatch buffer to output port
-void dispatchOutputBuffer(sp<IOmxNode> omxNode,
-                          android::Vector<BufferInfo>* buffArray,
-                          size_t bufferIndex) {
-    android::hardware::media::omx::V1_0::Status status;
-    CodecBuffer t;
-    t.sharedMemory = android::hardware::hidl_memory();
-    t.nativeHandle = android::hardware::hidl_handle();
-    t.type = CodecBuffer::Type::PRESET;
-    t.attr.preset.rangeOffset = 0;
-    t.attr.preset.rangeLength = 0;
-    native_handle_t* fenceNh = native_handle_create(0, 0);
-    ASSERT_NE(fenceNh, nullptr);
-    status = omxNode->fillBuffer((*buffArray)[bufferIndex].id, t, fenceNh);
-    native_handle_close(fenceNh);
-    native_handle_delete(fenceNh);
-    ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-    buffArray->editItemAt(bufferIndex).owner = component;
-}
-
 // Flush input and output ports
 void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                 android::Vector<BufferInfo>* iBuffer,
                 android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput,
-                OMX_U32 kPortIndexOutput) {
+                OMX_U32 kPortIndexOutput, int64_t timeoutUs) {
     android::hardware::media::omx::V1_0::Status status;
     Message msg;
 
@@ -289,7 +289,7 @@
     status = omxNode->sendCommand(toRawCommandType(OMX_CommandFlush),
                                   kPortIndexInput);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-    status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+    status = observer->dequeueMessage(&msg, timeoutUs, iBuffer, oBuffer);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
     ASSERT_EQ(msg.type, Message::Type::EVENT);
     ASSERT_EQ(msg.data.eventData.event, OMX_EventCmdComplete);
@@ -304,7 +304,7 @@
     status = omxNode->sendCommand(toRawCommandType(OMX_CommandFlush),
                                   kPortIndexOutput);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-    status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+    status = observer->dequeueMessage(&msg, timeoutUs, iBuffer, oBuffer);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
     ASSERT_EQ(msg.type, Message::Type::EVENT);
     ASSERT_EQ(msg.data.eventData.event, OMX_EventCmdComplete);
@@ -317,10 +317,10 @@
 }
 
 Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
-    sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE encoding) {
+    sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding) {
     OMX_U32 index = 0;
     OMX_AUDIO_PARAM_PORTFORMATTYPE portFormat;
-    std::vector<OMX_AUDIO_CODINGTYPE> eEncoding;
+    std::vector<OMX_AUDIO_CODINGTYPE> arrEncoding;
     android::hardware::media::omx::V1_0::Status status;
 
     while (1) {
@@ -328,24 +328,26 @@
         status = getPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
                               &portFormat);
         if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
-        eEncoding.push_back(portFormat.eEncoding);
+        arrEncoding.push_back(portFormat.eEncoding);
         index++;
         if (index == 512) {
+            // enumerated way too many formats, highly unusual for this to
+            // happen.
             EXPECT_LE(index, 512U)
                 << "Expecting OMX_ErrorNoMore but not received";
             break;
         }
     }
     if (!index) return status;
-    for (index = 0; index < eEncoding.size(); index++) {
-        if (eEncoding[index] == encoding) {
-            portFormat.eEncoding = eEncoding[index];
+    for (index = 0; index < arrEncoding.size(); index++) {
+        if (arrEncoding[index] == eEncoding) {
+            portFormat.eEncoding = arrEncoding[index];
             break;
         }
     }
-    if (index == eEncoding.size()) {
+    if (index == arrEncoding.size()) {
         ALOGI("setting default Port format");
-        portFormat.eEncoding = eEncoding[0];
+        portFormat.eEncoding = arrEncoding[0];
     }
     // In setParam call nIndex shall be ignored as per omx-il specification.
     // see how this holds up by corrupting nIndex
diff --git a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
index 89eb83c..e5cccf6 100644
--- a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
@@ -48,22 +48,22 @@
 
 size_t getEmptyBufferID(android::Vector<BufferInfo>* buffArray);
 
+void dispatchOutputBuffer(sp<IOmxNode> omxNode,
+                          android::Vector<BufferInfo>* buffArray,
+                          size_t bufferIndex);
+
 void dispatchInputBuffer(sp<IOmxNode> omxNode,
                          android::Vector<BufferInfo>* buffArray,
                          size_t bufferIndex, int bytesCount, uint32_t flags,
                          uint64_t timestamp);
 
-void dispatchOutputBuffer(sp<IOmxNode> omxNode,
-                          android::Vector<BufferInfo>* buffArray,
-                          size_t bufferIndex);
-
 void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                 android::Vector<BufferInfo>* iBuffer,
                 android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput,
-                OMX_U32 kPortIndexOutput);
+                OMX_U32 kPortIndexOutput, int64_t timeoutUs = DEFAULT_TIMEOUT);
 
 Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
-    sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE encoding);
+    sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding);
 
 Return<android::hardware::media::omx::V1_0::Status> setRole(
     sp<IOmxNode> omxNode, const char* role);
diff --git a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
index a51ea97..b152895 100644
--- a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
@@ -71,8 +71,15 @@
     ::android::sp<IMemory> mMemory;
 };
 
+struct FrameData {
+    int bytesCount;
+    uint32_t flags;
+    uint32_t timestamp;
+};
+
 struct CodecObserver : public IOmxObserver {
    public:
+    CodecObserver(std::function<void(Message)> fn) : callBack(fn) {}
     Return<void> onMessages(const hidl_vec<Message>& messages) override {
         android::Mutex::Autolock autoLock(msgLock);
         for (hidl_vec<Message>::const_iterator it = messages.begin();
@@ -103,6 +110,7 @@
                         for (i = 0; i < oBuffers->size(); ++i) {
                             if ((*oBuffers)[i].id ==
                                 it->data.bufferData.buffer) {
+                                if (callBack) callBack(*it);
                                 oBuffers->editItemAt(i).owner = client;
                                 msgQueue.erase(it);
                                 break;
@@ -127,12 +135,14 @@
                 }
                 ++it;
             }
+            if (finishBy - android::ALooper::GetNowUs() < 0)
+                return toStatus(android::TIMED_OUT);
             android::status_t err =
                 (timeoutUs < 0)
                     ? msgCondition.wait(msgLock)
                     : msgCondition.waitRelative(
                           msgLock,
-                          (finishBy - android::ALooper::GetNowUs()) * 1000);
+                          (finishBy - android::ALooper::GetNowUs()) * 1000ll);
             if (err == android::TIMED_OUT) return toStatus(err);
         }
     }
@@ -140,6 +150,7 @@
     android::List<Message> msgQueue;
     android::Mutex msgLock;
     android::Condition msgCondition;
+    std::function<void(Message)> callBack;
 };
 
 /*
diff --git a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
index 6b6c9cf..6181827 100644
--- a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
+++ b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
@@ -57,27 +57,22 @@
 
     void setRole(const char* _role) { role = _role; }
 
-    void setQuirks(int _quirks) { quirks = _quirks; }
-
     const hidl_string getInstance() const { return instance; }
 
     const hidl_string getComponent() const { return component; }
 
     const hidl_string getRole() const { return role; }
 
-    int getQuirks() const { return quirks; }
-
     int initFromOptions(int argc, char** argv) {
         static struct option options[] = {
             {"instance", required_argument, 0, 'I'},
             {"component", required_argument, 0, 'C'},
             {"role", required_argument, 0, 'R'},
-            {"quirks", required_argument, 0, 'Q'},
             {0, 0, 0, 0}};
 
         while (true) {
             int index = 0;
-            int c = getopt_long(argc, argv, "I:C:Q:R:", options, &index);
+            int c = getopt_long(argc, argv, "I:C:R:", options, &index);
             if (c == -1) {
                 break;
             }
@@ -89,9 +84,6 @@
                 case 'C':
                     setComponent(optarg);
                     break;
-                case 'Q':
-                    setQuirks(atoi(optarg));
-                    break;
                 case 'R':
                     setRole(optarg);
                     break;
@@ -107,8 +99,7 @@
                     "test options are:\n\n"
                     "-I, --instance: HAL instance to test\n"
                     "-C, --component: OMX component to test\n"
-                    "-R, --Role: OMX component Role\n"
-                    "-Q, --quirks: Component quirks\n",
+                    "-R, --Role: OMX component Role\n",
                     argv[optind ?: 1], argv[0]);
             return 2;
         }
@@ -119,12 +110,11 @@
     hidl_string instance;
     hidl_string component;
     hidl_string role;
-    // to be removed when IOmxNode::setQuirks is removed
-    int quirks;
 };
 
 static ComponentTestEnvironment* gEnv = nullptr;
 
+// generic component test fixture class
 class ComponentHidlTest : public ::testing::VtsHalHidlTargetTestBase {
    public:
     virtual void SetUp() override {
@@ -132,7 +122,7 @@
         omx = ::testing::VtsHalHidlTargetTestBase::getService<IOmx>(
             gEnv->getInstance());
         ASSERT_NE(omx, nullptr);
-        observer = new CodecObserver();
+        observer = new CodecObserver(nullptr);
         ASSERT_NE(observer, nullptr);
         ASSERT_EQ(strncmp(gEnv->getComponent().c_str(), "OMX.", 4), 0)
             << "Invalid Component Name";
@@ -465,14 +455,15 @@
     }
 }
 
+// get/set video component port format
 Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
     sp<IOmxNode> omxNode, OMX_U32 portIndex,
-    OMX_VIDEO_CODINGTYPE compressionFormat, OMX_COLOR_FORMATTYPE colorFormat,
-    OMX_U32 frameRate) {
+    OMX_VIDEO_CODINGTYPE eCompressionFormat, OMX_COLOR_FORMATTYPE eColorFormat,
+    OMX_U32 xFramerate) {
     OMX_U32 index = 0;
     OMX_VIDEO_PARAM_PORTFORMATTYPE portFormat;
-    std::vector<OMX_COLOR_FORMATTYPE> eColorFormat;
-    std::vector<OMX_VIDEO_CODINGTYPE> eCompressionFormat;
+    std::vector<OMX_COLOR_FORMATTYPE> arrColorFormat;
+    std::vector<OMX_VIDEO_CODINGTYPE> arrCompressionFormat;
     android::hardware::media::omx::V1_0::Status status;
 
     while (1) {
@@ -480,10 +471,10 @@
         status = getPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
                               &portFormat);
         if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
-        if (compressionFormat == OMX_VIDEO_CodingUnused)
-            eColorFormat.push_back(portFormat.eColorFormat);
+        if (eCompressionFormat == OMX_VIDEO_CodingUnused)
+            arrColorFormat.push_back(portFormat.eColorFormat);
         else
-            eCompressionFormat.push_back(portFormat.eCompressionFormat);
+            arrCompressionFormat.push_back(portFormat.eCompressionFormat);
         index++;
         if (index == 512) {
             // enumerated way too many formats, highly unusual for this to
@@ -494,45 +485,46 @@
         }
     }
     if (!index) return status;
-    if (compressionFormat == OMX_VIDEO_CodingUnused) {
-        for (index = 0; index < eColorFormat.size(); index++) {
-            if (eColorFormat[index] == colorFormat) {
-                portFormat.eColorFormat = eColorFormat[index];
+    if (eCompressionFormat == OMX_VIDEO_CodingUnused) {
+        for (index = 0; index < arrColorFormat.size(); index++) {
+            if (arrColorFormat[index] == eColorFormat) {
+                portFormat.eColorFormat = arrColorFormat[index];
                 break;
             }
         }
-        if (index == eColorFormat.size()) {
+        if (index == arrColorFormat.size()) {
             ALOGI("setting default color format");
-            portFormat.eColorFormat = eColorFormat[0];
+            portFormat.eColorFormat = arrColorFormat[0];
         }
         portFormat.eCompressionFormat = OMX_VIDEO_CodingUnused;
     } else {
-        for (index = 0; index < eCompressionFormat.size(); index++) {
-            if (eCompressionFormat[index] == compressionFormat) {
-                portFormat.eCompressionFormat = eCompressionFormat[index];
+        for (index = 0; index < arrCompressionFormat.size(); index++) {
+            if (arrCompressionFormat[index] == eCompressionFormat) {
+                portFormat.eCompressionFormat = arrCompressionFormat[index];
                 break;
             }
         }
-        if (index == eCompressionFormat.size()) {
+        if (index == arrCompressionFormat.size()) {
             ALOGI("setting default compression format");
-            portFormat.eCompressionFormat = eCompressionFormat[0];
+            portFormat.eCompressionFormat = arrCompressionFormat[0];
         }
         portFormat.eColorFormat = OMX_COLOR_FormatUnused;
     }
     // In setParam call nIndex shall be ignored as per omx-il specification.
     // see how this holds up by corrupting nIndex
     portFormat.nIndex = RANDOM_INDEX;
-    portFormat.xFramerate = frameRate;
+    portFormat.xFramerate = xFramerate;
     status = setPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
                           &portFormat);
     return status;
 }
 
+// get/set audio component port format
 Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
-    sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE encoding) {
+    sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding) {
     OMX_U32 index = 0;
     OMX_AUDIO_PARAM_PORTFORMATTYPE portFormat;
-    std::vector<OMX_AUDIO_CODINGTYPE> eEncoding;
+    std::vector<OMX_AUDIO_CODINGTYPE> arrEncoding;
     android::hardware::media::omx::V1_0::Status status;
 
     while (1) {
@@ -540,7 +532,7 @@
         status = getPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
                               &portFormat);
         if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
-        eEncoding.push_back(portFormat.eEncoding);
+        arrEncoding.push_back(portFormat.eEncoding);
         index++;
         if (index == 512) {
             // enumerated way too many formats, highly unusual for this to
@@ -551,15 +543,15 @@
         }
     }
     if (!index) return status;
-    for (index = 0; index < eEncoding.size(); index++) {
-        if (eEncoding[index] == encoding) {
-            portFormat.eEncoding = eEncoding[index];
+    for (index = 0; index < arrEncoding.size(); index++) {
+        if (arrEncoding[index] == eEncoding) {
+            portFormat.eEncoding = arrEncoding[index];
             break;
         }
     }
-    if (index == eEncoding.size()) {
+    if (index == arrEncoding.size()) {
         ALOGI("setting default Port format");
-        portFormat.eEncoding = eEncoding[0];
+        portFormat.eEncoding = arrEncoding[0];
     }
     // In setParam call nIndex shall be ignored as per omx-il specification.
     // see how this holds up by corrupting nIndex
@@ -569,6 +561,7 @@
     return status;
 }
 
+// set component role
 Return<android::hardware::media::omx::V1_0::Status> setRole(
     sp<IOmxNode> omxNode, const char* role) {
     OMX_PARAM_COMPONENTROLETYPE params;
@@ -576,6 +569,7 @@
     return setParam(omxNode, OMX_IndexParamStandardComponentRole, &params);
 }
 
+// set component role
 TEST_F(ComponentHidlTest, SetRole) {
     description("Test Set Component Role");
     android::hardware::media::omx::V1_0::Status status;
@@ -583,8 +577,9 @@
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// port indices enumeration
 TEST_F(ComponentHidlTest, GetPortIndices) {
-    description("Test Component on Mandatory Port Parameters (Port ID's)");
+    description("Test Component on Mandatory Port Parameters (Port Indices)");
     android::hardware::media::omx::V1_0::Status status;
     OMX_PORT_PARAM_TYPE params;
 
@@ -604,6 +599,7 @@
     EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// port format enumeration
 TEST_F(ComponentHidlTest, EnumeratePortFormat) {
     description("Test Component on Mandatory Port Parameters (Port Format)");
     android::hardware::media::omx::V1_0::Status status;
@@ -623,8 +619,8 @@
         kPortIndexOutput = kPortIndexInput + 1;
     }
 
-    OMX_COLOR_FORMATTYPE colorFormat = OMX_COLOR_FormatYUV420Planar;
-    OMX_U32 frameRate = 24 << 16;
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
+    OMX_U32 xFramerate = 24U << 16;
 
     // Enumerate Port Format
     if (compClass == audio_encoder) {
@@ -644,7 +640,7 @@
     } else if (compClass == video_encoder) {
         status =
             setVideoPortFormat(omxNode, kPortIndexInput, OMX_VIDEO_CodingUnused,
-                               colorFormat, frameRate);
+                               eColorFormat, xFramerate);
         EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
         status = setVideoPortFormat(omxNode, kPortIndexOutput,
                                     OMX_VIDEO_CodingAutoDetect,
@@ -655,13 +651,14 @@
                                     OMX_VIDEO_CodingAutoDetect,
                                     OMX_COLOR_FormatUnused, 0U);
         EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        status =
-            setVideoPortFormat(omxNode, kPortIndexOutput,
-                               OMX_VIDEO_CodingUnused, colorFormat, frameRate);
+        status = setVideoPortFormat(omxNode, kPortIndexOutput,
+                                    OMX_VIDEO_CodingUnused, eColorFormat,
+                                    xFramerate);
         EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
     }
 }
 
+// get/set default port settings of a component
 TEST_F(ComponentHidlTest, SetDefaultPortParams) {
     description(
         "Test Component on Mandatory Port Parameters (Port Definition)");
@@ -700,11 +697,15 @@
                 status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
                                       kPortIndexInput, &iPortDef);
             }
-            EXPECT_EQ(status,
-                      ::android::hardware::media::omx::V1_0::Status::OK);
         } else if (compClass == video_encoder || compClass == video_decoder) {
             EXPECT_EQ(iPortDef.eDomain, OMX_PortDomainVideo);
+            if (compClass == video_decoder) {
+                iPortDef.format.video.bFlagErrorConcealment = OMX_TRUE;
+                status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
+                                      kPortIndexInput, &iPortDef);
+            }
         }
+        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
         OMX_PARAM_PORTDEFINITIONTYPE dummy = iPortDef;
         iPortDef.nBufferCountActual = iPortDef.nBufferCountMin - 1;
         status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
@@ -748,11 +749,15 @@
                 status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
                                       kPortIndexOutput, &oPortDef);
             }
-            EXPECT_EQ(status,
-                      ::android::hardware::media::omx::V1_0::Status::OK);
         } else if (compClass == video_encoder || compClass == video_decoder) {
             EXPECT_EQ(oPortDef.eDomain, OMX_PortDomainVideo);
+            if (compClass == video_encoder) {
+                oPortDef.format.video.bFlagErrorConcealment = OMX_TRUE;
+                status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
+                                      kPortIndexOutput, &oPortDef);
+            }
         }
+        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
         OMX_PARAM_PORTDEFINITIONTYPE dummy = oPortDef;
         oPortDef.nBufferCountActual = oPortDef.nBufferCountMin - 1;
         status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
@@ -780,6 +785,7 @@
     }
 }
 
+// populate port test
 TEST_F(ComponentHidlTest, PopulatePort) {
     description("Verify bPopulated field of a component port");
     android::hardware::media::omx::V1_0::Status status;
@@ -843,11 +849,12 @@
         getPortParam(omxNode, OMX_IndexParamPortDefinition, portBase, &portDef);
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
     // A port is populated when all of the buffers indicated by
-    // nBufferCountActual
-    // with a size of at least nBufferSizehave been allocated on the port.
+    // nBufferCountActual with a size of at least nBufferSizehave been
+    // allocated on the port.
     ASSERT_EQ(portDef.bPopulated, OMX_FALSE);
 }
 
+// Flush test
 TEST_F(ComponentHidlTest, Flush) {
     description("Test Flush");
     android::hardware::media::omx::V1_0::Status status;
@@ -896,8 +903,9 @@
                             kPortIndexInput, kPortIndexOutput);
 }
 
+// state transitions test
 TEST_F(ComponentHidlTest, StateTransitions) {
-    description("Test State Transitions");
+    description("Test State Transitions Loaded<->Idle<->Execute");
     android::hardware::media::omx::V1_0::Status status;
     uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
     Message msg;
@@ -942,6 +950,7 @@
                             kPortIndexInput, kPortIndexOutput);
 }
 
+// state transitions test - monkeying
 TEST_F(ComponentHidlTest, StateTransitions_M) {
     description("Test State Transitions monkeying");
     android::hardware::media::omx::V1_0::Status status;
@@ -1004,6 +1013,7 @@
                             kPortIndexInput, kPortIndexOutput);
 }
 
+// port enable disable test
 TEST_F(ComponentHidlTest, PortEnableDisable_Loaded) {
     description("Test Port Enable and Disable (Component State :: Loaded)");
     android::hardware::media::omx::V1_0::Status status;
@@ -1052,6 +1062,7 @@
     }
 }
 
+// port enable disable test
 TEST_F(ComponentHidlTest, PortEnableDisable_Idle) {
     description("Test Port Enable and Disable (Component State :: Idle)");
     android::hardware::media::omx::V1_0::Status status;
@@ -1145,6 +1156,7 @@
                             kPortIndexInput, kPortIndexOutput);
 }
 
+// port enable disable test
 TEST_F(ComponentHidlTest, PortEnableDisable_Execute) {
     description("Test Port Enable and Disable (Component State :: Execute)");
     android::hardware::media::omx::V1_0::Status status;
@@ -1252,6 +1264,7 @@
                             kPortIndexInput, kPortIndexOutput);
 }
 
+// port enable disable test - monkeying
 TEST_F(ComponentHidlTest, PortEnableDisable_M) {
     description(
         "Test Port Enable and Disable Monkeying (Component State :: Loaded)");
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
index a327c30..c1b0e62 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -51,7 +51,7 @@
     virtual void SetUp() {}
     virtual void TearDown() {}
 
-    ComponentTestEnvironment() : instance("default") {}
+    ComponentTestEnvironment() : instance("default"), res("/sdcard/media/") {}
 
     void setInstance(const char* _instance) { instance = _instance; }
 
@@ -59,7 +59,7 @@
 
     void setRole(const char* _role) { role = _role; }
 
-    void setQuirks(int _quirks) { quirks = _quirks; }
+    void setRes(const char* _res) { res = _res; }
 
     const hidl_string getInstance() const { return instance; }
 
@@ -67,19 +67,19 @@
 
     const hidl_string getRole() const { return role; }
 
-    int getQuirks() const { return quirks; }
+    const hidl_string getRes() const { return res; }
 
     int initFromOptions(int argc, char** argv) {
         static struct option options[] = {
             {"instance", required_argument, 0, 'I'},
             {"component", required_argument, 0, 'C'},
             {"role", required_argument, 0, 'R'},
-            {"quirks", required_argument, 0, 'Q'},
+            {"res", required_argument, 0, 'P'},
             {0, 0, 0, 0}};
 
         while (true) {
             int index = 0;
-            int c = getopt_long(argc, argv, "I:C:Q:R:", options, &index);
+            int c = getopt_long(argc, argv, "I:C:R:P:", options, &index);
             if (c == -1) {
                 break;
             }
@@ -91,12 +91,12 @@
                 case 'C':
                     setComponent(optarg);
                     break;
-                case 'Q':
-                    setQuirks(atoi(optarg));
-                    break;
                 case 'R':
                     setRole(optarg);
                     break;
+                case 'P':
+                    setRes(optarg);
+                    break;
                 case '?':
                     break;
             }
@@ -109,8 +109,8 @@
                     "test options are:\n\n"
                     "-I, --instance: HAL instance to test\n"
                     "-C, --component: OMX component to test\n"
-                    "-R, --Role: OMX component Role\n"
-                    "-Q, --quirks: Component quirks\n",
+                    "-R, --role: OMX component Role\n"
+                    "-P, --res: Resource files directory location\n",
                     argv[optind ?: 1], argv[0]);
             return 2;
         }
@@ -121,12 +121,12 @@
     hidl_string instance;
     hidl_string component;
     hidl_string role;
-    // to be removed when IOmxNode::setQuirks is removed
-    int quirks;
+    hidl_string res;
 };
 
 static ComponentTestEnvironment* gEnv = nullptr;
 
+// video decoder test fixture class
 class VideoDecHidlTest : public ::testing::VtsHalHidlTargetTestBase {
    public:
     virtual void SetUp() override {
@@ -134,7 +134,8 @@
         omx = ::testing::VtsHalHidlTargetTestBase::getService<IOmx>(
             gEnv->getInstance());
         ASSERT_NE(omx, nullptr);
-        observer = new CodecObserver();
+        observer =
+            new CodecObserver([this](Message msg) { handleMessage(msg); });
         ASSERT_NE(observer, nullptr);
         ASSERT_EQ(strncmp(gEnv->getComponent().c_str(), "OMX.", 4), 0)
             << "Invalid Component Name";
@@ -191,6 +192,10 @@
             }
         }
         ASSERT_NE(i, kNumCompToCompression);
+        eosFlag = false;
+        framesReceived = 0;
+        timestampUs = 0;
+        timestampDevTest = false;
     }
 
     virtual void TearDown() override {
@@ -200,6 +205,51 @@
         }
     }
 
+    // callback function to process messages received by onMessages() from IL
+    // client.
+    void handleMessage(Message msg) {
+        if (msg.type == Message::Type::FILL_BUFFER_DONE) {
+            if (msg.data.extendedBufferData.flags & OMX_BUFFERFLAG_EOS) {
+                eosFlag = true;
+            }
+            if (msg.data.extendedBufferData.rangeLength != 0) {
+                framesReceived += 1;
+                // For decoder components current timestamp always exceeds
+                // previous timestamp
+                EXPECT_GE(msg.data.extendedBufferData.timestampUs, timestampUs);
+                timestampUs = msg.data.extendedBufferData.timestampUs;
+                // Test if current timestamp is among the list of queued
+                // timestamps
+                if (timestampDevTest) {
+                    bool tsHit = false;
+                    android::List<uint64_t>::iterator it =
+                        timestampUslist.begin();
+                    while (it != timestampUslist.end()) {
+                        if (*it == timestampUs) {
+                            timestampUslist.erase(it);
+                            tsHit = true;
+                            break;
+                        }
+                        it++;
+                    }
+                    if (tsHit == false) {
+                        if (timestampUslist.empty() == false) {
+                            EXPECT_EQ(tsHit, true)
+                                << "TimeStamp not recognized";
+                        } else {
+                            std::cerr
+                                << "[          ] Warning ! Received non-zero "
+                                   "output / TimeStamp not recognized \n";
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    void testEOS(android::Vector<BufferInfo>* iBuffer,
+                 android::Vector<BufferInfo>* oBuffer, bool signalEOS = false);
+
     enum standardComp {
         h263,
         avc,
@@ -216,6 +266,11 @@
     sp<IOmxNode> omxNode;
     standardComp compName;
     OMX_VIDEO_CODINGTYPE eCompressionFormat;
+    bool eosFlag;
+    uint32_t framesReceived;
+    uint64_t timestampUs;
+    ::android::List<uint64_t> timestampUslist;
+    bool timestampDevTest;
 
    protected:
     static void description(const std::string& description) {
@@ -223,6 +278,44 @@
     }
 };
 
+// end of stream test for video decoder components
+void VideoDecHidlTest::testEOS(android::Vector<BufferInfo>* iBuffer,
+                               android::Vector<BufferInfo>* oBuffer,
+                               bool signalEOS) {
+    android::hardware::media::omx::V1_0::Status status;
+    size_t i = 0;
+    if (signalEOS) {
+        if ((i = getEmptyBufferID(iBuffer)) < iBuffer->size()) {
+            // signal an empty buffer with flag set to EOS
+            dispatchInputBuffer(omxNode, iBuffer, i, 0, OMX_BUFFERFLAG_EOS, 0);
+        } else {
+            ASSERT_TRUE(false);
+        }
+    }
+    // Dispatch all client owned output buffers to recover remaining frames
+    while (1) {
+        if ((i = getEmptyBufferID(oBuffer)) < oBuffer->size()) {
+            dispatchOutputBuffer(omxNode, oBuffer, i);
+        } else {
+            break;
+        }
+    }
+    while (1) {
+        Message msg;
+        status =
+            observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+        EXPECT_EQ(status,
+                  android::hardware::media::omx::V1_0::Status::TIMED_OUT);
+        for (; i < iBuffer->size(); i++) {
+            if ((*iBuffer)[i].owner != client) break;
+        }
+        if (i == iBuffer->size()) break;
+    }
+    // test for flag
+    EXPECT_EQ(eosFlag, true);
+    eosFlag = false;
+}
+
 // Set Default port param.
 void setDefaultPortParam(sp<IOmxNode> omxNode, OMX_U32 portIndex,
                          OMX_VIDEO_CODINGTYPE eCompressionFormat,
@@ -264,8 +357,8 @@
 }
 
 // LookUpTable of clips and metadata for component testing
-void GetURLForComponent(VideoDecHidlTest::standardComp comp, const char** mURL,
-                        const char** info) {
+void GetURLForComponent(VideoDecHidlTest::standardComp comp, char* mURL,
+                        char* info) {
     struct CompToURL {
         VideoDecHidlTest::standardComp comp;
         const char* mURL;
@@ -273,20 +366,37 @@
     };
     static const CompToURL kCompToURL[] = {
         {VideoDecHidlTest::standardComp::avc,
-         "/sdcard/media/bbb_avc_1920x1080_5000kbps_30fps.h264",
-         "/sdcard/media/bbb_avc_1920x1080_5000kbps_30fps.info"},
+         "bbb_avc_1920x1080_5000kbps_30fps.h264",
+         "bbb_avc_1920x1080_5000kbps_30fps.info"},
+        {VideoDecHidlTest::standardComp::hevc,
+         "bbb_hevc_640x360_1600kbps_30fps.hevc",
+         "bbb_hevc_640x360_1600kbps_30fps.info"},
+        {VideoDecHidlTest::standardComp::mpeg2,
+         "bbb_mpeg2_176x144_105kbps_25fps.m2v",
+         "bbb_mpeg2_176x144_105kbps_25fps.info"},
+        {VideoDecHidlTest::standardComp::h263,
+         "bbb_h263_352x288_300kbps_12fps.h263",
+         "bbb_h263_352x288_300kbps_12fps.info"},
+        {VideoDecHidlTest::standardComp::mpeg4,
+         "bbb_mpeg4_1280x720_1000kbps_25fps.m4v",
+         "bbb_mpeg4_1280x720_1000kbps_25fps.info"},
+        {VideoDecHidlTest::standardComp::vp8, "bbb_vp8_640x360_2mbps_30fps.vp8",
+         "bbb_vp8_640x360_2mbps_30fps.info"},
+        {VideoDecHidlTest::standardComp::vp9,
+         "bbb_vp9_640x360_1600kbps_30fps.vp9",
+         "bbb_vp9_640x360_1600kbps_30fps.info"},
     };
 
-    *mURL = *info = nullptr;
     for (size_t i = 0; i < sizeof(kCompToURL) / sizeof(kCompToURL[0]); ++i) {
         if (kCompToURL[i].comp == comp) {
-            *mURL = kCompToURL[i].mURL;
-            *info = kCompToURL[i].info;
+            strcat(mURL, kCompToURL[i].mURL);
+            strcat(info, kCompToURL[i].info);
             return;
         }
     }
 }
 
+// port settings reconfiguration during runtime. reconfigures frame dimensions
 void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                          android::Vector<BufferInfo>* iBuffer,
                          android::Vector<BufferInfo>* oBuffer,
@@ -382,13 +492,46 @@
     }
 }
 
+// blocking call to ensures application to Wait till all the inputs are consumed
+void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
+                            android::Vector<BufferInfo>* iBuffer,
+                            android::Vector<BufferInfo>* oBuffer,
+                            OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput) {
+    android::hardware::media::omx::V1_0::Status status;
+    Message msg;
+
+    while (1) {
+        size_t i = 0;
+        status =
+            observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+        if (status == android::hardware::media::omx::V1_0::Status::OK) {
+            EXPECT_EQ(msg.type, Message::Type::EVENT);
+            portReconfiguration(omxNode, observer, iBuffer, oBuffer,
+                                kPortIndexInput, kPortIndexOutput, msg);
+        }
+        // status == TIMED_OUT, it could be due to process time being large
+        // than DEFAULT_TIMEOUT or component needs output buffers to start
+        // processing.
+        for (; i < iBuffer->size(); i++) {
+            if ((*iBuffer)[i].owner != client) break;
+        }
+        if (i == iBuffer->size()) break;
+
+        // Dispatch an output buffer assuming outQueue.empty() is true
+        size_t index;
+        if ((index = getEmptyBufferID(oBuffer)) < oBuffer->size()) {
+            dispatchOutputBuffer(omxNode, oBuffer, index);
+        }
+    }
+}
+
 // Decode N Frames
 void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                    android::Vector<BufferInfo>* iBuffer,
                    android::Vector<BufferInfo>* oBuffer,
                    OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput,
-                   uint32_t nFrames, std::ifstream& eleStream,
-                   std::ifstream& eleInfo) {
+                   std::ifstream& eleStream, android::Vector<FrameData>* Info,
+                   int offset, int range, bool signalEOS = true) {
     android::hardware::media::omx::V1_0::Status status;
     Message msg;
 
@@ -397,24 +540,24 @@
         dispatchOutputBuffer(omxNode, oBuffer, i);
     }
     // dispatch input buffers
-    int bytesCount = 0;
-    uint32_t sampleflags = 0, flags = 0;
-    uint64_t timestamp = 0;
-    for (size_t i = 0; i < iBuffer->size() && nFrames != 0; i++) {
+    uint32_t flags = 0;
+    int frameID = offset;
+    for (size_t i = 0; (i < iBuffer->size()) && (frameID < (int)Info->size()) &&
+                       (frameID < (offset + range));
+         i++) {
         char* ipBuffer = static_cast<char*>(
             static_cast<void*>((*iBuffer)[i].mMemory->getPointer()));
-        if (!(eleInfo >> bytesCount)) break;
-        ASSERT_LE(bytesCount,
+        ASSERT_LE((*Info)[frameID].bytesCount,
                   static_cast<int>((*iBuffer)[i].mMemory->getSize()));
-        eleStream.read(ipBuffer, bytesCount);
-        ASSERT_EQ(eleStream.gcount(), bytesCount);
-        eleInfo >> sampleflags;
-        eleInfo >> timestamp;
-        flags = 0;
-        // Map MediaExtractor flags to OMX Buffer flags
-        if (sampleflags & 1) flags |= OMX_BUFFERFLAG_SYNCFRAME;
-        dispatchInputBuffer(omxNode, iBuffer, i, bytesCount, flags, timestamp);
-        nFrames--;
+        eleStream.read(ipBuffer, (*Info)[frameID].bytesCount);
+        ASSERT_EQ(eleStream.gcount(), (*Info)[frameID].bytesCount);
+        flags = (*Info)[frameID].flags;
+        if (signalEOS && ((frameID == (int)Info->size() - 1) ||
+                          (frameID == (offset + range - 1))))
+            flags |= OMX_BUFFERFLAG_EOS;
+        dispatchInputBuffer(omxNode, iBuffer, i, (*Info)[frameID].bytesCount,
+                            flags, (*Info)[frameID].timestamp);
+        frameID++;
     }
 
     while (1) {
@@ -428,26 +571,25 @@
                                 kPortIndexInput, kPortIndexOutput, msg);
         }
 
-        if (nFrames == 0) break;
+        if (frameID == (int)Info->size() || frameID == (offset + range)) break;
 
         // Dispatch input buffer
         size_t index = 0;
         if ((index = getEmptyBufferID(iBuffer)) < iBuffer->size()) {
             char* ipBuffer = static_cast<char*>(
                 static_cast<void*>((*iBuffer)[index].mMemory->getPointer()));
-            if (!(eleInfo >> bytesCount)) break;
-            ASSERT_LE(bytesCount,
+            ASSERT_LE((*Info)[frameID].bytesCount,
                       static_cast<int>((*iBuffer)[index].mMemory->getSize()));
-            eleStream.read(ipBuffer, bytesCount);
-            ASSERT_EQ(eleStream.gcount(), bytesCount);
-            eleInfo >> sampleflags;
-            eleInfo >> timestamp;
-            flags = 0;
-            // Map MediaExtractor flags to OMX Buffer flags
-            if (sampleflags & 1) flags |= OMX_BUFFERFLAG_SYNCFRAME;
-            dispatchInputBuffer(omxNode, iBuffer, index, bytesCount, flags,
-                                timestamp);
-            nFrames--;
+            eleStream.read(ipBuffer, (*Info)[frameID].bytesCount);
+            ASSERT_EQ(eleStream.gcount(), (*Info)[frameID].bytesCount);
+            flags = (*Info)[frameID].flags;
+            if (signalEOS && ((frameID == (int)Info->size() - 1) ||
+                              (frameID == (offset + range - 1))))
+                flags |= OMX_BUFFERFLAG_EOS;
+            dispatchInputBuffer(omxNode, iBuffer, index,
+                                (*Info)[frameID].bytesCount, flags,
+                                (*Info)[frameID].timestamp);
+            frameID++;
         }
         if ((index = getEmptyBufferID(oBuffer)) < oBuffer->size()) {
             dispatchOutputBuffer(omxNode, oBuffer, index);
@@ -455,6 +597,7 @@
     }
 }
 
+// set component role
 TEST_F(VideoDecHidlTest, SetRole) {
     description("Test Set Component Role");
     android::hardware::media::omx::V1_0::Status status;
@@ -462,6 +605,7 @@
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// port format enumeration
 TEST_F(VideoDecHidlTest, EnumeratePortFormat) {
     description("Test Component on Mandatory Port Parameters (Port Format)");
     android::hardware::media::omx::V1_0::Status status;
@@ -486,8 +630,10 @@
     EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// test port settings reconfiguration, elementary stream decode and timestamp
+// deviation
 TEST_F(VideoDecHidlTest, DecodeTest) {
-    description("Tests Port Reconfiguration and Decode");
+    description("Tests Port Reconfiguration, Decode and timestamp deviation");
     android::hardware::media::omx::V1_0::Status status;
     uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
     status = setRole(omxNode, gEnv->getRole().c_str());
@@ -499,16 +645,29 @@
         kPortIndexInput = params.nStartPortNumber;
         kPortIndexOutput = kPortIndexInput + 1;
     }
-    const char *mURL = nullptr, *info = nullptr;
-    GetURLForComponent(compName, &mURL, &info);
-    EXPECT_NE(mURL, nullptr);
-    EXPECT_NE(info, nullptr);
+    char mURL[512], info[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    strcpy(info, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL, info);
 
     std::ifstream eleStream, eleInfo;
-    eleStream.open(mURL, std::ifstream::binary);
-    ASSERT_EQ(eleStream.is_open(), true);
+
     eleInfo.open(info);
     ASSERT_EQ(eleInfo.is_open(), true);
+    android::Vector<FrameData> Info;
+    int bytesCount = 0;
+    uint32_t flags = 0;
+    uint32_t timestamp = 0;
+    timestampDevTest = true;
+    while (1) {
+        if (!(eleInfo >> bytesCount)) break;
+        eleInfo >> flags;
+        eleInfo >> timestamp;
+        Info.push_back({bytesCount, flags, timestamp});
+        if (flags != OMX_BUFFERFLAG_CODECCONFIG)
+            timestampUslist.push_back(timestamp);
+    }
+    eleInfo.close();
 
     // set Port Params
     uint32_t nFrameWidth, nFrameHeight, xFramerate;
@@ -526,16 +685,225 @@
     // set state to executing
     changeStateIdletoExecute(omxNode, observer);
     // Port Reconfiguration
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                  kPortIndexOutput, 1024, eleStream, eleInfo);
+                  kPortIndexOutput, eleStream, &Info, 0, (int)Info.size());
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer);
+    EXPECT_EQ(timestampUslist.empty(), true);
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
     // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
+}
 
+// end of sequence test
+TEST_F(VideoDecHidlTest, EOSTest) {
+    description("Test End of stream");
+    android::hardware::media::omx::V1_0::Status status;
+    uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
+    status = setRole(omxNode, gEnv->getRole().c_str());
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    OMX_PORT_PARAM_TYPE params;
+    status = getParam(omxNode, OMX_IndexParamVideoInit, &params);
+    if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
+        ASSERT_EQ(params.nPorts, 2U);
+        kPortIndexInput = params.nStartPortNumber;
+        kPortIndexOutput = kPortIndexInput + 1;
+    }
+    char mURL[512], info[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    strcpy(info, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL, info);
+
+    std::ifstream eleStream, eleInfo;
+
+    eleInfo.open(info);
+    ASSERT_EQ(eleInfo.is_open(), true);
+    android::Vector<FrameData> Info;
+    int bytesCount = 0;
+    uint32_t flags = 0;
+    uint32_t timestamp = 0;
+    while (1) {
+        if (!(eleInfo >> bytesCount)) break;
+        eleInfo >> flags;
+        eleInfo >> timestamp;
+        Info.push_back({bytesCount, flags, timestamp});
+    }
     eleInfo.close();
+
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // request EOS at the start
+    testEOS(&iBuffer, &oBuffer, true);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 0U);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // request EOS for thumbnail
+    size_t i = 0;
+    while (!(Info[i].flags & OMX_BUFFERFLAG_SYNCFRAME)) i++;
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, i + 1);
     eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 1U);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, i + 1, false);
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer, true);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 1U);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // request EOS at the end
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, (int)Info.size());
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput);
+    testEOS(&iBuffer, &oBuffer);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
+}
+
+// test input/output port flush
+TEST_F(VideoDecHidlTest, FlushTest) {
+    description("Test Flush");
+    android::hardware::media::omx::V1_0::Status status;
+    uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
+    status = setRole(omxNode, gEnv->getRole().c_str());
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    OMX_PORT_PARAM_TYPE params;
+    status = getParam(omxNode, OMX_IndexParamVideoInit, &params);
+    if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
+        ASSERT_EQ(params.nPorts, 2U);
+        kPortIndexInput = params.nStartPortNumber;
+        kPortIndexOutput = kPortIndexInput + 1;
+    }
+    char mURL[512], info[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    strcpy(info, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL, info);
+
+    std::ifstream eleStream, eleInfo;
+
+    eleInfo.open(info);
+    ASSERT_EQ(eleInfo.is_open(), true);
+    android::Vector<FrameData> Info;
+    int bytesCount = 0;
+    uint32_t flags = 0;
+    uint32_t timestamp = 0;
+    while (1) {
+        if (!(eleInfo >> bytesCount)) break;
+        eleInfo >> flags;
+        eleInfo >> timestamp;
+        Info.push_back({bytesCount, flags, timestamp});
+    }
+    eleInfo.close();
+
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // Decode 128 frames and flush. here 128 is chosen to ensure there is a key
+    // frame after this so that the below section can be convered for all
+    // components
+    int nFrames = 128;
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, nFrames, false);
+    // Note: Assumes 200 ms is enough to end any decode call that started
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput, 200000);
+    framesReceived = 0;
+
+    // Seek to next key frame and start decoding till the end
+    int index = nFrames;
+    bool keyFrame = false;
+    while (index < (int)Info.size()) {
+        if ((Info[index].flags & OMX_BUFFERFLAG_SYNCFRAME) ==
+            OMX_BUFFERFLAG_SYNCFRAME) {
+            timestampUs = Info[index - 1].timestamp;
+            keyFrame = true;
+            break;
+        }
+        eleStream.ignore(Info[index].bytesCount);
+        index++;
+    }
+    if (keyFrame) {
+        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                      kPortIndexOutput, eleStream, &Info, index,
+                      Info.size() - index, false);
+    }
+    // Note: Assumes 200 ms is enough to end any decode call that started
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput, 200000);
+    framesReceived = 0;
+
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 int main(int argc, char** argv) {
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
index edd3d8c..72893b8 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
@@ -51,7 +51,7 @@
     virtual void SetUp() {}
     virtual void TearDown() {}
 
-    ComponentTestEnvironment() : instance("default") {}
+    ComponentTestEnvironment() : instance("default"), res("/sdcard/media/") {}
 
     void setInstance(const char* _instance) { instance = _instance; }
 
@@ -59,7 +59,7 @@
 
     void setRole(const char* _role) { role = _role; }
 
-    void setQuirks(int _quirks) { quirks = _quirks; }
+    void setRes(const char* _res) { res = _res; }
 
     const hidl_string getInstance() const { return instance; }
 
@@ -67,19 +67,19 @@
 
     const hidl_string getRole() const { return role; }
 
-    int getQuirks() const { return quirks; }
+    const hidl_string getRes() const { return res; }
 
     int initFromOptions(int argc, char** argv) {
         static struct option options[] = {
             {"instance", required_argument, 0, 'I'},
             {"component", required_argument, 0, 'C'},
             {"role", required_argument, 0, 'R'},
-            {"quirks", required_argument, 0, 'Q'},
+            {"res", required_argument, 0, 'P'},
             {0, 0, 0, 0}};
 
         while (true) {
             int index = 0;
-            int c = getopt_long(argc, argv, "I:C:Q:R:", options, &index);
+            int c = getopt_long(argc, argv, "I:C:R:P:", options, &index);
             if (c == -1) {
                 break;
             }
@@ -91,12 +91,12 @@
                 case 'C':
                     setComponent(optarg);
                     break;
-                case 'Q':
-                    setQuirks(atoi(optarg));
-                    break;
                 case 'R':
                     setRole(optarg);
                     break;
+                case 'P':
+                    setRes(optarg);
+                    break;
                 case '?':
                     break;
             }
@@ -109,8 +109,8 @@
                     "test options are:\n\n"
                     "-I, --instance: HAL instance to test\n"
                     "-C, --component: OMX component to test\n"
-                    "-R, --Role: OMX component Role\n"
-                    "-Q, --quirks: Component quirks\n",
+                    "-R, --role: OMX component Role\n"
+                    "-P, --res: Resource files directory location\n",
                     argv[optind ?: 1], argv[0]);
             return 2;
         }
@@ -121,12 +121,12 @@
     hidl_string instance;
     hidl_string component;
     hidl_string role;
-    // to be removed when IOmxNode::setQuirks is removed
-    int quirks;
+    hidl_string res;
 };
 
 static ComponentTestEnvironment* gEnv = nullptr;
 
+// video encoder test fixture class
 class VideoEncHidlTest : public ::testing::VtsHalHidlTargetTestBase {
    public:
     virtual void SetUp() override {
@@ -134,7 +134,7 @@
         omx = ::testing::VtsHalHidlTargetTestBase::getService<IOmx>(
             gEnv->getInstance());
         ASSERT_NE(omx, nullptr);
-        observer = new CodecObserver();
+        observer = new CodecObserver([this](Message msg) { (void)msg; });
         ASSERT_NE(observer, nullptr);
         ASSERT_EQ(strncmp(gEnv->getComponent().c_str(), "OMX.", 4), 0)
             << "Invalid Component Name";
@@ -252,21 +252,19 @@
 }
 
 // LookUpTable of clips and metadata for component testing
-void GetURLForComponent(VideoEncHidlTest::standardComp comp,
-                        const char** mURL) {
+void GetURLForComponent(VideoEncHidlTest::standardComp comp, char* mURL) {
     struct CompToURL {
         VideoEncHidlTest::standardComp comp;
         const char* mURL;
     };
     static const CompToURL kCompToURL[] = {
         {VideoEncHidlTest::standardComp::avc,
-         "/sdcard/media/bbb_480x360_420p_30fps_32frames.yuv"},
+         "bbb_480x360_420p_30fps_32frames.yuv"},
     };
 
-    *mURL = nullptr;
     for (size_t i = 0; i < sizeof(kCompToURL) / sizeof(kCompToURL[0]); ++i) {
         if (kCompToURL[i].comp == comp) {
-            *mURL = kCompToURL[i].mURL;
+            strcat(mURL, kCompToURL[i].mURL);
             return;
         }
     }
@@ -328,6 +326,7 @@
     }
 }
 
+// set component role
 TEST_F(VideoEncHidlTest, SetRole) {
     description("Test Set Component Role");
     android::hardware::media::omx::V1_0::Status status;
@@ -335,6 +334,7 @@
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// port format enumeration
 TEST_F(VideoEncHidlTest, EnumeratePortFormat) {
     description("Test Component on Mandatory Port Parameters (Port Format)");
     android::hardware::media::omx::V1_0::Status status;
@@ -360,6 +360,7 @@
     EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 }
 
+// test raw stream encode
 TEST_F(VideoEncHidlTest, EncodeTest) {
     description("Test Encode");
     android::hardware::media::omx::V1_0::Status status;
@@ -373,9 +374,9 @@
         kPortIndexInput = params.nStartPortNumber;
         kPortIndexOutput = kPortIndexInput + 1;
     }
-    const char* mURL = nullptr;
-    GetURLForComponent(compName, &mURL);
-    EXPECT_NE(mURL, nullptr);
+    char mURL[512];
+    strcpy(mURL, gEnv->getRes().c_str());
+    GetURLForComponent(compName, mURL);
 
     std::ifstream eleStream;
     eleStream.open(mURL, std::ifstream::binary);
diff --git a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
index fa71080..d3c7f58 100644
--- a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
@@ -281,7 +281,7 @@
 void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                 android::Vector<BufferInfo>* iBuffer,
                 android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput,
-                OMX_U32 kPortIndexOutput) {
+                OMX_U32 kPortIndexOutput, int64_t timeoutUs) {
     android::hardware::media::omx::V1_0::Status status;
     Message msg;
 
@@ -289,7 +289,7 @@
     status = omxNode->sendCommand(toRawCommandType(OMX_CommandFlush),
                                   kPortIndexInput);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-    status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+    status = observer->dequeueMessage(&msg, timeoutUs, iBuffer, oBuffer);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
     ASSERT_EQ(msg.type, Message::Type::EVENT);
     ASSERT_EQ(msg.data.eventData.event, OMX_EventCmdComplete);
@@ -304,7 +304,7 @@
     status = omxNode->sendCommand(toRawCommandType(OMX_CommandFlush),
                                   kPortIndexOutput);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-    status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
+    status = observer->dequeueMessage(&msg, timeoutUs, iBuffer, oBuffer);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
     ASSERT_EQ(msg.type, Message::Type::EVENT);
     ASSERT_EQ(msg.data.eventData.event, OMX_EventCmdComplete);
diff --git a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
index 65b87c0..406ba73 100644
--- a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
@@ -59,7 +59,7 @@
 void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                 android::Vector<BufferInfo>* iBuffer,
                 android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput,
-                OMX_U32 kPortIndexOutput);
+                OMX_U32 kPortIndexOutput, int64_t timeoutUs = DEFAULT_TIMEOUT);
 
 Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
     sp<IOmxNode> omxNode, OMX_U32 portIndex,
diff --git a/media/res/bbb_avc_1920x1080_5000kbps_30fps.info b/media/res/bbb_avc_1920x1080_5000kbps_30fps.info
index 2f9faef..feaf974 100644
--- a/media/res/bbb_avc_1920x1080_5000kbps_30fps.info
+++ b/media/res/bbb_avc_1920x1080_5000kbps_30fps.info
@@ -1,6 +1,6 @@
-31 0 0
-8 0 0
-481702 1 0
+31 128 0
+8 128 0
+481702 32 0
 137895 0 33333
 81863 0 100000
 98914 0 133333
@@ -44,7 +44,7 @@
 4028 0 1700000
 2303 0 1766666
 845 0 1800000
-191414 1 1833333
+191414 32 1833333
 13266 0 1866666
 16120 0 1933333
 19751 0 1966666
@@ -137,7 +137,7 @@
 10305 0 5600000
 10120 0 5633333
 7706 0 5666666
-112698 1 5700000
+112698 32 5700000
 1544 0 5766666
 1285 0 5800000
 1576 0 5833333
diff --git a/media/res/bbb_h263_352x288_300kbps_12fps.h263 b/media/res/bbb_h263_352x288_300kbps_12fps.h263
new file mode 100644
index 0000000..652581f
--- /dev/null
+++ b/media/res/bbb_h263_352x288_300kbps_12fps.h263
Binary files differ
diff --git a/media/res/bbb_h263_352x288_300kbps_12fps.info b/media/res/bbb_h263_352x288_300kbps_12fps.info
new file mode 100644
index 0000000..66873d4
--- /dev/null
+++ b/media/res/bbb_h263_352x288_300kbps_12fps.info
@@ -0,0 +1,122 @@
+26362 32 0
+12023 0 83333
+10647 0 166666
+10269 0 250000
+11076 0 333333
+11104 0 416666
+5909 0 500000
+4291 0 583333
+5149 0 666666
+5353 0 750000
+5185 0 833333
+2736 0 916666
+21575 32 1000000
+2196 0 1083333
+4340 0 1166666
+3109 0 1250000
+4410 0 1333333
+1731 0 1416666
+4557 0 1500000
+3376 0 1583333
+1352 0 1666666
+2844 0 1750000
+1787 0 1833333
+1088 0 1916666
+36843 32 2000000
+2520 0 2083333
+3749 0 2166666
+3784 0 2250000
+3402 0 2333333
+3795 0 2416666
+2345 0 2500000
+3142 0 2583333
+2948 0 2666666
+2018 0 2750000
+5133 0 2833333
+2276 0 2916666
+23468 32 3000000
+1522 0 3083333
+2299 0 3166666
+3273 0 3250000
+2630 0 3333333
+2915 0 3416666
+3032 0 3500000
+1890 0 3583333
+3718 0 3666666
+1990 0 3750000
+3139 0 3833333
+1806 0 3916666
+23208 32 4000000
+1419 0 4083333
+2263 0 4166666
+3131 0 4250000
+2645 0 4333333
+1880 0 4416666
+2239 0 4500000
+3637 0 4583333
+1941 0 4666666
+1577 0 4750000
+3777 0 4833333
+1816 0 4916666
+19601 32 5000000
+1104 0 5083333
+2808 0 5166666
+2411 0 5250000
+2159 0 5333333
+2411 0 5416666
+2408 0 5500000
+2388 0 5583333
+2418 0 5666666
+1481 0 5750000
+1926 0 5833333
+9022 32 5916666
+292 0 6000000
+701 0 6083333
+747 0 6166666
+2059 0 6250000
+1693 0 6333333
+2078 0 6416666
+2975 0 6500000
+1317 0 6583333
+1742 0 6666666
+1019 0 6750000
+1053 0 6833333
+14183 32 6916666
+1467 0 7000000
+994 0 7083333
+1709 0 7166666
+838 0 7250000
+1328 0 7333333
+2292 0 7416666
+1829 0 7500000
+1728 0 7583333
+2436 0 7666666
+1852 0 7750000
+2190 0 7833333
+15167 32 7916666
+1188 0 8000000
+2070 0 8083333
+3316 0 8166666
+2636 0 8250000
+950 0 8333333
+1260 0 8416666
+906 0 8500000
+1294 0 8583333
+1298 0 8666666
+1897 0 8750000
+1348 0 8833333
+13194 32 8916666
+1042 0 9000000
+1258 0 9083333
+1457 0 9166666
+990 0 9250000
+900 0 9333333
+963 0 9416666
+3448 0 9500000
+774 0 9583333
+1075 0 9666666
+750 0 9750000
+1054 0 9833333
+13139 32 9916666
+3104 0 10000000
+3366 0 10083333
diff --git a/media/res/bbb_hevc_640x360_1600kbps_30fps.hevc b/media/res/bbb_hevc_640x360_1600kbps_30fps.hevc
new file mode 100644
index 0000000..651f7cf
--- /dev/null
+++ b/media/res/bbb_hevc_640x360_1600kbps_30fps.hevc
Binary files differ
diff --git a/media/res/bbb_hevc_640x360_1600kbps_30fps.info b/media/res/bbb_hevc_640x360_1600kbps_30fps.info
new file mode 100644
index 0000000..69e5554
--- /dev/null
+++ b/media/res/bbb_hevc_640x360_1600kbps_30fps.info
@@ -0,0 +1,302 @@
+1075 128 0
+1075 128 0
+68613 32 66687
+19025 0 199687
+2405 0 133687
+777 0 99687
+681 0 166687
+20254 0 333687
+2927 0 266687
+766 0 233687
+658 0 299687
+20786 0 466687
+4214 0 399687
+609 0 366687
+661 0 433687
+20838 0 599687
+4209 0 533687
+506 0 499687
+586 0 566687
+20415 0 733687
+4207 0 666687
+427 0 633687
+514 0 699687
+24457 0 899687
+1904 0 833687
+921 0 766687
+992 0 799687
+543 0 866687
+24342 0 1066687
+1822 0 999687
+840 0 933687
+892 0 966687
+715 0 1033687
+22893 0 1233687
+1618 0 1166687
+881 0 1099687
+890 0 1133687
+794 0 1199687
+24292 0 1399687
+1673 0 1333687
+755 0 1266687
+810 0 1299687
+588 0 1366687
+19828 0 1533687
+1538 0 1466687
+894 0 1433687
+933 0 1499687
+19853 0 1666687
+2011 0 1599687
+981 0 1566687
+900 0 1633687
+22869 0 1833687
+1562 0 1766687
+842 0 1699687
+765 0 1733687
+665 0 1799687
+22346 0 1966687
+2245 0 1899687
+516 0 1866687
+604 0 1933687
+24333 0 2099687
+1765 0 2033687
+318 0 1999687
+320 0 2066687
+18577 0 2199687
+1123 0 2166687
+337 0 2133687
+17509 0 2299687
+869 0 2266687
+901 0 2233687
+23366 0 2433687
+1217 0 2366687
+380 0 2333687
+347 0 2399687
+19542 0 2533687
+1887 0 2499687
+467 0 2466687
+18939 0 2666687
+2863 0 2599687
+317 0 2566687
+272 0 2633687
+19353 0 2799687
+2092 0 2733687
+203 0 2699687
+310 0 2766687
+18800 0 2933687
+2038 0 2866687
+242 0 2833687
+199 0 2899687
+17452 0 3099687
+1060 0 3033687
+301 0 2966687
+452 0 2999687
+256 0 3066687
+21352 0 3199687
+409 0 3166687
+173 0 3133687
+19142 0 3299687
+642 0 3266687
+468 0 3233687
+19066 0 3433687
+635 0 3366687
+197 0 3333687
+190 0 3399687
+18813 0 3566687
+969 0 3499687
+165 0 3466687
+203 0 3533687
+17362 0 3733687
+246 0 3666687
+236 0 3599687
+174 0 3633687
+164 0 3699687
+17081 0 3899687
+353 0 3833687
+222 0 3766687
+181 0 3799687
+148 0 3866687
+10835 0 3999687
+185 0 3966687
+139 0 3933687
+7510 0 4133687
+149 0 4066687
+129 0 4033687
+132 0 4099687
+1063 0 4166687
+805 0 4266687
+157 0 4233687
+394 0 4199687
+90840 0 4399687
+6159 0 4333687
+1752 0 4299687
+985 0 4366687
+31338 0 4533687
+3390 0 4466687
+772 0 4433687
+781 0 4499687
+31084 0 4666687
+3498 0 4599687
+818 0 4566687
+881 0 4633687
+30416 0 4799687
+3265 0 4733687
+815 0 4699687
+790 0 4766687
+31053 0 4933687
+3106 0 4866687
+708 0 4833687
+713 0 4899687
+30230 0 5066687
+3214 0 4999687
+639 0 4966687
+768 0 5033687
+29657 0 5199687
+3013 0 5133687
+622 0 5099687
+720 0 5166687
+29344 0 5333687
+3196 0 5266687
+713 0 5233687
+775 0 5299687
+30420 0 5466687
+3374 0 5399687
+803 0 5366687
+717 0 5433687
+29960 0 5599687
+3283 0 5533687
+793 0 5499687
+790 0 5566687
+31011 0 5733687
+3397 0 5666687
+809 0 5633687
+831 0 5699687
+31194 0 5866687
+3401 0 5799687
+807 0 5766687
+827 0 5833687
+30326 0 5999687
+3186 0 5933687
+818 0 5899687
+863 0 5966687
+31559 0 6133687
+3364 0 6066687
+840 0 6033687
+919 0 6099687
+32013 0 6266687
+3495 0 6199687
+871 0 6166687
+803 0 6233687
+30294 0 6399687
+3153 0 6333687
+716 0 6299687
+812 0 6366687
+29952 0 6533687
+3299 0 6466687
+801 0 6433687
+749 0 6499687
+30598 0 6666687
+3536 0 6599687
+887 0 6566687
+850 0 6633687
+17246 0 6699687
+31110 0 6833687
+3198 0 6766687
+809 0 6733687
+836 0 6799687
+29784 0 6966687
+3155 0 6899687
+859 0 6866687
+958 0 6933687
+30666 0 7099687
+3371 0 7033687
+886 0 6999687
+861 0 7066687
+30416 0 7233687
+3350 0 7166687
+917 0 7133687
+987 0 7199687
+29509 0 7366687
+3574 0 7299687
+972 0 7266687
+885 0 7333687
+30872 0 7499687
+3399 0 7433687
+898 0 7399687
+1027 0 7466687
+31155 0 7633687
+3454 0 7566687
+965 0 7533687
+841 0 7599687
+28487 0 7766687
+3616 0 7699687
+921 0 7666687
+991 0 7733687
+23208 0 7899687
+3551 0 7833687
+918 0 7799687
+894 0 7866687
+16982 0 8033687
+3458 0 7966687
+844 0 7933687
+943 0 7999687
+30396 0 8199687
+4963 0 8133687
+1416 0 8066687
+1639 0 8099687
+524 0 8166687
+1368 0 8299687
+565 0 8266687
+392 0 8233687
+41317 32 8399687
+185 0 8366687
+477 0 8333687
+5342 0 8533687
+1275 0 8466687
+121 0 8433687
+982 0 8499687
+6465 0 8699687
+2606 0 8633687
+1163 0 8566687
+943 0 8599687
+1186 0 8666687
+11593 0 8833687
+3122 0 8766687
+1278 0 8733687
+1593 0 8799687
+9099 0 8999687
+978 0 8933687
+748 0 8866687
+835 0 8899687
+364 0 8966687
+4799 0 9099687
+365 0 9066687
+215 0 9033687
+4367 0 9199687
+302 0 9166687
+480 0 9133687
+6180 0 9333687
+771 0 9266687
+246 0 9233687
+281 0 9299687
+4636 0 9399687
+211 0 9366687
+4037 0 9499687
+382 0 9466687
+486 0 9433687
+3975 0 9599687
+312 0 9566687
+474 0 9533687
+6880 0 9733687
+1116 0 9666687
+206 0 9633687
+698 0 9699687
+6254 0 9899687
+2581 0 9833687
+1303 0 9766687
+985 0 9799687
+967 0 9866687
+6486 0 10033687
+3555 0 9966687
+1430 0 9933687
+1605 0 9999687
diff --git a/media/res/bbb_mp3_stereo_192kbps_48000hz.info b/media/res/bbb_mp3_stereo_192kbps_48000hz.info
index 21fbfd4..00c4869 100644
--- a/media/res/bbb_mp3_stereo_192kbps_48000hz.info
+++ b/media/res/bbb_mp3_stereo_192kbps_48000hz.info
@@ -1,414 +1,414 @@
-576 1 0
-576 1 24000
-576 1 48000
-576 1 72000
-576 1 96000
-576 1 120000
-576 1 144000
-576 1 168000
-576 1 192000
-576 1 216000
-576 1 240000
-576 1 264000
-576 1 288000
-576 1 312000
-576 1 336000
-576 1 360000
-576 1 384000
-576 1 408000
-576 1 432000
-576 1 456000
-576 1 480000
-576 1 504000
-576 1 528000
-576 1 552000
-576 1 576000
-576 1 600000
-576 1 624000
-576 1 648000
-576 1 672000
-576 1 696000
-576 1 720000
-576 1 744000
-576 1 768000
-576 1 792000
-576 1 816000
-576 1 840000
-576 1 864000
-576 1 888000
-576 1 912000
-576 1 936000
-576 1 960000
-576 1 984000
-576 1 1008000
-576 1 1032000
-576 1 1056000
-576 1 1080000
-576 1 1104000
-576 1 1128000
-576 1 1152000
-576 1 1176000
-576 1 1200000
-576 1 1224000
-576 1 1248000
-576 1 1272000
-576 1 1296000
-576 1 1320000
-576 1 1344000
-576 1 1368000
-576 1 1392000
-576 1 1416000
-576 1 1440000
-576 1 1464000
-576 1 1488000
-576 1 1512000
-576 1 1536000
-576 1 1560000
-576 1 1584000
-576 1 1608000
-576 1 1632000
-576 1 1656000
-576 1 1680000
-576 1 1704000
-576 1 1728000
-576 1 1752000
-576 1 1776000
-576 1 1800000
-576 1 1824000
-576 1 1848000
-576 1 1872000
-576 1 1896000
-576 1 1920000
-576 1 1944000
-576 1 1968000
-576 1 1992000
-576 1 2016000
-576 1 2040000
-576 1 2064000
-576 1 2088000
-576 1 2112000
-576 1 2136000
-576 1 2160000
-576 1 2184000
-576 1 2208000
-576 1 2232000
-576 1 2256000
-576 1 2280000
-576 1 2304000
-576 1 2328000
-576 1 2352000
-576 1 2376000
-576 1 2400000
-576 1 2424000
-576 1 2448000
-576 1 2472000
-576 1 2496000
-576 1 2520000
-576 1 2544000
-576 1 2568000
-576 1 2592000
-576 1 2616000
-576 1 2640000
-576 1 2664000
-576 1 2688000
-576 1 2712000
-576 1 2736000
-576 1 2760000
-576 1 2784000
-576 1 2808000
-576 1 2832000
-576 1 2856000
-576 1 2880000
-576 1 2904000
-576 1 2928000
-576 1 2952000
-576 1 2976000
-576 1 3000000
-576 1 3024000
-576 1 3048000
-576 1 3072000
-576 1 3096000
-576 1 3120000
-576 1 3144000
-576 1 3168000
-576 1 3192000
-576 1 3216000
-576 1 3240000
-576 1 3264000
-576 1 3288000
-576 1 3312000
-576 1 3336000
-576 1 3360000
-576 1 3384000
-576 1 3408000
-576 1 3432000
-576 1 3456000
-576 1 3480000
-576 1 3504000
-576 1 3528000
-576 1 3552000
-576 1 3576000
-576 1 3600000
-576 1 3624000
-576 1 3648000
-576 1 3672000
-576 1 3696000
-576 1 3720000
-576 1 3744000
-576 1 3768000
-576 1 3792000
-576 1 3816000
-576 1 3840000
-576 1 3864000
-576 1 3888000
-576 1 3912000
-576 1 3936000
-576 1 3960000
-576 1 3984000
-576 1 4008000
-576 1 4032000
-576 1 4056000
-576 1 4080000
-576 1 4104000
-576 1 4128000
-576 1 4152000
-576 1 4176000
-576 1 4200000
-576 1 4224000
-576 1 4248000
-576 1 4272000
-576 1 4296000
-576 1 4320000
-576 1 4344000
-576 1 4368000
-576 1 4392000
-576 1 4416000
-576 1 4440000
-576 1 4464000
-576 1 4488000
-576 1 4512000
-576 1 4536000
-576 1 4560000
-576 1 4584000
-576 1 4608000
-576 1 4632000
-576 1 4656000
-576 1 4680000
-576 1 4704000
-576 1 4728000
-576 1 4752000
-576 1 4776000
-576 1 4800000
-576 1 4824000
-576 1 4848000
-576 1 4872000
-576 1 4896000
-576 1 4920000
-576 1 4944000
-576 1 4968000
-576 1 4992000
-576 1 5016000
-576 1 5040000
-576 1 5064000
-576 1 5088000
-576 1 5112000
-576 1 5136000
-576 1 5160000
-576 1 5184000
-576 1 5208000
-576 1 5232000
-576 1 5256000
-576 1 5280000
-576 1 5304000
-576 1 5328000
-576 1 5352000
-576 1 5376000
-576 1 5400000
-576 1 5424000
-576 1 5448000
-576 1 5472000
-576 1 5496000
-576 1 5520000
-576 1 5544000
-576 1 5568000
-576 1 5592000
-576 1 5616000
-576 1 5640000
-576 1 5664000
-576 1 5688000
-576 1 5712000
-576 1 5736000
-576 1 5760000
-576 1 5784000
-576 1 5808000
-576 1 5832000
-576 1 5856000
-576 1 5880000
-576 1 5904000
-576 1 5928000
-576 1 5952000
-576 1 5976000
-576 1 6000000
-576 1 6024000
-576 1 6048000
-576 1 6072000
-576 1 6096000
-576 1 6120000
-576 1 6144000
-576 1 6168000
-576 1 6192000
-576 1 6216000
-576 1 6240000
-576 1 6264000
-576 1 6288000
-576 1 6312000
-576 1 6336000
-576 1 6360000
-576 1 6384000
-576 1 6408000
-576 1 6432000
-576 1 6456000
-576 1 6480000
-576 1 6504000
-576 1 6528000
-576 1 6552000
-576 1 6576000
-576 1 6600000
-576 1 6624000
-576 1 6648000
-576 1 6672000
-576 1 6696000
-576 1 6720000
-576 1 6744000
-576 1 6768000
-576 1 6792000
-576 1 6816000
-576 1 6840000
-576 1 6864000
-576 1 6888000
-576 1 6912000
-576 1 6936000
-576 1 6960000
-576 1 6984000
-576 1 7008000
-576 1 7032000
-576 1 7056000
-576 1 7080000
-576 1 7104000
-576 1 7128000
-576 1 7152000
-576 1 7176000
-576 1 7200000
-576 1 7224000
-576 1 7248000
-576 1 7272000
-576 1 7296000
-576 1 7320000
-576 1 7344000
-576 1 7368000
-576 1 7392000
-576 1 7416000
-576 1 7440000
-576 1 7464000
-576 1 7488000
-576 1 7512000
-576 1 7536000
-576 1 7560000
-576 1 7584000
-576 1 7608000
-576 1 7632000
-576 1 7656000
-576 1 7680000
-576 1 7704000
-576 1 7728000
-576 1 7752000
-576 1 7776000
-576 1 7800000
-576 1 7824000
-576 1 7848000
-576 1 7872000
-576 1 7896000
-576 1 7920000
-576 1 7944000
-576 1 7968000
-576 1 7992000
-576 1 8016000
-576 1 8040000
-576 1 8064000
-576 1 8088000
-576 1 8112000
-576 1 8136000
-576 1 8160000
-576 1 8184000
-576 1 8208000
-576 1 8232000
-576 1 8256000
-576 1 8280000
-576 1 8304000
-576 1 8328000
-576 1 8352000
-576 1 8376000
-576 1 8400000
-576 1 8424000
-576 1 8448000
-576 1 8472000
-576 1 8496000
-576 1 8520000
-576 1 8544000
-576 1 8568000
-576 1 8592000
-576 1 8616000
-576 1 8640000
-576 1 8664000
-576 1 8688000
-576 1 8712000
-576 1 8736000
-576 1 8760000
-576 1 8784000
-576 1 8808000
-576 1 8832000
-576 1 8856000
-576 1 8880000
-576 1 8904000
-576 1 8928000
-576 1 8952000
-576 1 8976000
-576 1 9000000
-576 1 9024000
-576 1 9048000
-576 1 9072000
-576 1 9096000
-576 1 9120000
-576 1 9144000
-576 1 9168000
-576 1 9192000
-576 1 9216000
-576 1 9240000
-576 1 9264000
-576 1 9288000
-576 1 9312000
-576 1 9336000
-576 1 9360000
-576 1 9384000
-576 1 9408000
-576 1 9432000
-576 1 9456000
-576 1 9480000
-576 1 9504000
-576 1 9528000
-576 1 9552000
-576 1 9576000
-576 1 9600000
-576 1 9624000
-576 1 9648000
-576 1 9672000
-576 1 9696000
-576 1 9720000
-576 1 9744000
-576 1 9768000
-576 1 9792000
-576 1 9816000
-576 1 9840000
-576 1 9864000
-576 1 9888000
-576 1 9912000
+576 32 0
+576 32 24000
+576 32 48000
+576 32 72000
+576 32 96000
+576 32 120000
+576 32 144000
+576 32 168000
+576 32 192000
+576 32 216000
+576 32 240000
+576 32 264000
+576 32 288000
+576 32 312000
+576 32 336000
+576 32 360000
+576 32 384000
+576 32 408000
+576 32 432000
+576 32 456000
+576 32 480000
+576 32 504000
+576 32 528000
+576 32 552000
+576 32 576000
+576 32 600000
+576 32 624000
+576 32 648000
+576 32 672000
+576 32 696000
+576 32 720000
+576 32 744000
+576 32 768000
+576 32 792000
+576 32 816000
+576 32 840000
+576 32 864000
+576 32 888000
+576 32 912000
+576 32 936000
+576 32 960000
+576 32 984000
+576 32 1008000
+576 32 1032000
+576 32 1056000
+576 32 1080000
+576 32 1104000
+576 32 1128000
+576 32 1152000
+576 32 1176000
+576 32 1200000
+576 32 1224000
+576 32 1248000
+576 32 1272000
+576 32 1296000
+576 32 1320000
+576 32 1344000
+576 32 1368000
+576 32 1392000
+576 32 1416000
+576 32 1440000
+576 32 1464000
+576 32 1488000
+576 32 1512000
+576 32 1536000
+576 32 1560000
+576 32 1584000
+576 32 1608000
+576 32 1632000
+576 32 1656000
+576 32 1680000
+576 32 1704000
+576 32 1728000
+576 32 1752000
+576 32 1776000
+576 32 1800000
+576 32 1824000
+576 32 1848000
+576 32 1872000
+576 32 1896000
+576 32 1920000
+576 32 1944000
+576 32 1968000
+576 32 1992000
+576 32 2016000
+576 32 2040000
+576 32 2064000
+576 32 2088000
+576 32 2112000
+576 32 2136000
+576 32 2160000
+576 32 2184000
+576 32 2208000
+576 32 2232000
+576 32 2256000
+576 32 2280000
+576 32 2304000
+576 32 2328000
+576 32 2352000
+576 32 2376000
+576 32 2400000
+576 32 2424000
+576 32 2448000
+576 32 2472000
+576 32 2496000
+576 32 2520000
+576 32 2544000
+576 32 2568000
+576 32 2592000
+576 32 2616000
+576 32 2640000
+576 32 2664000
+576 32 2688000
+576 32 2712000
+576 32 2736000
+576 32 2760000
+576 32 2784000
+576 32 2808000
+576 32 2832000
+576 32 2856000
+576 32 2880000
+576 32 2904000
+576 32 2928000
+576 32 2952000
+576 32 2976000
+576 32 3000000
+576 32 3024000
+576 32 3048000
+576 32 3072000
+576 32 3096000
+576 32 3120000
+576 32 3144000
+576 32 3168000
+576 32 3192000
+576 32 3216000
+576 32 3240000
+576 32 3264000
+576 32 3288000
+576 32 3312000
+576 32 3336000
+576 32 3360000
+576 32 3384000
+576 32 3408000
+576 32 3432000
+576 32 3456000
+576 32 3480000
+576 32 3504000
+576 32 3528000
+576 32 3552000
+576 32 3576000
+576 32 3600000
+576 32 3624000
+576 32 3648000
+576 32 3672000
+576 32 3696000
+576 32 3720000
+576 32 3744000
+576 32 3768000
+576 32 3792000
+576 32 3816000
+576 32 3840000
+576 32 3864000
+576 32 3888000
+576 32 3912000
+576 32 3936000
+576 32 3960000
+576 32 3984000
+576 32 4008000
+576 32 4032000
+576 32 4056000
+576 32 4080000
+576 32 4104000
+576 32 4128000
+576 32 4152000
+576 32 4176000
+576 32 4200000
+576 32 4224000
+576 32 4248000
+576 32 4272000
+576 32 4296000
+576 32 4320000
+576 32 4344000
+576 32 4368000
+576 32 4392000
+576 32 4416000
+576 32 4440000
+576 32 4464000
+576 32 4488000
+576 32 4512000
+576 32 4536000
+576 32 4560000
+576 32 4584000
+576 32 4608000
+576 32 4632000
+576 32 4656000
+576 32 4680000
+576 32 4704000
+576 32 4728000
+576 32 4752000
+576 32 4776000
+576 32 4800000
+576 32 4824000
+576 32 4848000
+576 32 4872000
+576 32 4896000
+576 32 4920000
+576 32 4944000
+576 32 4968000
+576 32 4992000
+576 32 5016000
+576 32 5040000
+576 32 5064000
+576 32 5088000
+576 32 5112000
+576 32 5136000
+576 32 5160000
+576 32 5184000
+576 32 5208000
+576 32 5232000
+576 32 5256000
+576 32 5280000
+576 32 5304000
+576 32 5328000
+576 32 5352000
+576 32 5376000
+576 32 5400000
+576 32 5424000
+576 32 5448000
+576 32 5472000
+576 32 5496000
+576 32 5520000
+576 32 5544000
+576 32 5568000
+576 32 5592000
+576 32 5616000
+576 32 5640000
+576 32 5664000
+576 32 5688000
+576 32 5712000
+576 32 5736000
+576 32 5760000
+576 32 5784000
+576 32 5808000
+576 32 5832000
+576 32 5856000
+576 32 5880000
+576 32 5904000
+576 32 5928000
+576 32 5952000
+576 32 5976000
+576 32 6000000
+576 32 6024000
+576 32 6048000
+576 32 6072000
+576 32 6096000
+576 32 6120000
+576 32 6144000
+576 32 6168000
+576 32 6192000
+576 32 6216000
+576 32 6240000
+576 32 6264000
+576 32 6288000
+576 32 6312000
+576 32 6336000
+576 32 6360000
+576 32 6384000
+576 32 6408000
+576 32 6432000
+576 32 6456000
+576 32 6480000
+576 32 6504000
+576 32 6528000
+576 32 6552000
+576 32 6576000
+576 32 6600000
+576 32 6624000
+576 32 6648000
+576 32 6672000
+576 32 6696000
+576 32 6720000
+576 32 6744000
+576 32 6768000
+576 32 6792000
+576 32 6816000
+576 32 6840000
+576 32 6864000
+576 32 6888000
+576 32 6912000
+576 32 6936000
+576 32 6960000
+576 32 6984000
+576 32 7008000
+576 32 7032000
+576 32 7056000
+576 32 7080000
+576 32 7104000
+576 32 7128000
+576 32 7152000
+576 32 7176000
+576 32 7200000
+576 32 7224000
+576 32 7248000
+576 32 7272000
+576 32 7296000
+576 32 7320000
+576 32 7344000
+576 32 7368000
+576 32 7392000
+576 32 7416000
+576 32 7440000
+576 32 7464000
+576 32 7488000
+576 32 7512000
+576 32 7536000
+576 32 7560000
+576 32 7584000
+576 32 7608000
+576 32 7632000
+576 32 7656000
+576 32 7680000
+576 32 7704000
+576 32 7728000
+576 32 7752000
+576 32 7776000
+576 32 7800000
+576 32 7824000
+576 32 7848000
+576 32 7872000
+576 32 7896000
+576 32 7920000
+576 32 7944000
+576 32 7968000
+576 32 7992000
+576 32 8016000
+576 32 8040000
+576 32 8064000
+576 32 8088000
+576 32 8112000
+576 32 8136000
+576 32 8160000
+576 32 8184000
+576 32 8208000
+576 32 8232000
+576 32 8256000
+576 32 8280000
+576 32 8304000
+576 32 8328000
+576 32 8352000
+576 32 8376000
+576 32 8400000
+576 32 8424000
+576 32 8448000
+576 32 8472000
+576 32 8496000
+576 32 8520000
+576 32 8544000
+576 32 8568000
+576 32 8592000
+576 32 8616000
+576 32 8640000
+576 32 8664000
+576 32 8688000
+576 32 8712000
+576 32 8736000
+576 32 8760000
+576 32 8784000
+576 32 8808000
+576 32 8832000
+576 32 8856000
+576 32 8880000
+576 32 8904000
+576 32 8928000
+576 32 8952000
+576 32 8976000
+576 32 9000000
+576 32 9024000
+576 32 9048000
+576 32 9072000
+576 32 9096000
+576 32 9120000
+576 32 9144000
+576 32 9168000
+576 32 9192000
+576 32 9216000
+576 32 9240000
+576 32 9264000
+576 32 9288000
+576 32 9312000
+576 32 9336000
+576 32 9360000
+576 32 9384000
+576 32 9408000
+576 32 9432000
+576 32 9456000
+576 32 9480000
+576 32 9504000
+576 32 9528000
+576 32 9552000
+576 32 9576000
+576 32 9600000
+576 32 9624000
+576 32 9648000
+576 32 9672000
+576 32 9696000
+576 32 9720000
+576 32 9744000
+576 32 9768000
+576 32 9792000
+576 32 9816000
+576 32 9840000
+576 32 9864000
+576 32 9888000
+576 32 9912000
diff --git a/media/res/bbb_mpeg2_176x144_105kbps_25fps.info b/media/res/bbb_mpeg2_176x144_105kbps_25fps.info
new file mode 100644
index 0000000..3813cd4
--- /dev/null
+++ b/media/res/bbb_mpeg2_176x144_105kbps_25fps.info
@@ -0,0 +1,249 @@
+6458 32 40000
+4040 0 80000
+3255 0 120000
+3026 0 160000
+3293 0 200000
+3089 0 240000
+3305 0 280000
+1794 0 320000
+1848 0 360000
+1288 0 400000
+1511 0 440000
+1527 0 480000
+6146 32 520000
+1243 0 560000
+1099 0 600000
+1354 0 640000
+1366 0 680000
+1042 0 720000
+1600 0 760000
+875 0 800000
+1728 0 840000
+1254 0 880000
+994 0 920000
+1591 0 960000
+6265 32 1000000
+1018 0 1040000
+825 0 1080000
+869 0 1120000
+921 0 1160000
+975 0 1200000
+924 0 1240000
+834 0 1280000
+1066 0 1320000
+793 0 1360000
+889 0 1400000
+2050 0 1440000
+6276 32 1480000
+881 0 1520000
+260 0 1560000
+730 0 1600000
+431 0 1640000
+351 0 1680000
+321 0 1720000
+3802 0 1760000
+146 0 1800000
+6462 0 1840000
+3246 0 1880000
+533 0 1920000
+6231 32 1960000
+1378 0 2000000
+719 0 2040000
+818 0 2080000
+856 0 2120000
+937 0 2160000
+611 0 2200000
+3031 0 2240000
+1041 0 2280000
+604 0 2320000
+714 0 2360000
+1283 0 2400000
+7565 32 2440000
+602 0 2480000
+530 0 2520000
+2579 0 2560000
+115 0 2600000
+1058 0 2640000
+689 0 2680000
+1119 0 2720000
+698 0 2760000
+1006 0 2800000
+545 0 2840000
+1617 0 2880000
+9123 32 2920000
+527 0 2960000
+1576 0 3000000
+465 0 3040000
+741 0 3080000
+521 0 3120000
+1322 0 3160000
+775 0 3200000
+863 0 3240000
+910 0 3280000
+915 0 3320000
+926 0 3360000
+7556 32 3400000
+741 0 3440000
+527 0 3480000
+2516 0 3520000
+459 0 3560000
+404 0 3600000
+509 0 3640000
+1227 0 3680000
+1561 0 3720000
+490 0 3760000
+712 0 3800000
+803 0 3840000
+7524 32 3880000
+730 0 3920000
+461 0 3960000
+2526 0 4000000
+453 0 4040000
+632 0 4080000
+783 0 4120000
+843 0 4160000
+918 0 4200000
+961 0 4240000
+948 0 4280000
+959 0 4320000
+7598 32 4360000
+678 0 4400000
+569 0 4440000
+893 0 4480000
+624 0 4520000
+755 0 4560000
+2234 0 4600000
+556 0 4640000
+944 0 4680000
+739 0 4720000
+862 0 4760000
+938 0 4800000
+7574 32 4840000
+699 0 4880000
+701 0 4920000
+530 0 4960000
+689 0 5000000
+778 0 5040000
+856 0 5080000
+930 0 5120000
+975 0 5160000
+1021 0 5200000
+1074 0 5240000
+978 0 5280000
+8021 32 5320000
+704 0 5360000
+610 0 5400000
+697 0 5440000
+711 0 5480000
+820 0 5520000
+843 0 5560000
+251 0 5600000
+3367 0 5640000
+507 0 5680000
+3168 32 5720000
+779 0 5760000
+316 0 5800000
+635 0 5840000
+204 0 5880000
+978 0 5920000
+127 0 5960000
+589 0 6000000
+604 0 6040000
+666 0 6080000
+582 0 6120000
+729 0 6160000
+4152 32 6200000
+858 0 6240000
+739 0 6280000
+885 0 6320000
+749 0 6360000
+950 0 6400000
+593 0 6440000
+771 0 6480000
+678 0 6520000
+529 0 6560000
+835 0 6600000
+391 0 6640000
+4692 32 6680000
+473 0 6720000
+724 0 6760000
+381 0 6800000
+909 0 6840000
+394 0 6880000
+659 0 6920000
+367 0 6960000
+658 0 7000000
+523 0 7040000
+554 0 7080000
+553 0 7120000
+6080 32 7160000
+496 0 7200000
+763 0 7240000
+939 0 7280000
+715 0 7320000
+672 0 7360000
+614 0 7400000
+811 0 7440000
+916 0 7480000
+1153 0 7520000
+940 0 7560000
+322 0 7600000
+6613 32 7640000
+851 0 7680000
+1007 0 7720000
+520 0 7760000
+456 0 7800000
+639 0 7840000
+758 0 7880000
+879 0 7920000
+1152 0 7960000
+1061 0 8000000
+946 0 8040000
+859 0 8080000
+3610 32 8120000
+871 0 8160000
+746 0 8200000
+367 0 8240000
+397 0 8280000
+930 0 8320000
+337 0 8360000
+418 0 8400000
+740 0 8440000
+637 0 8480000
+666 0 8520000
+627 0 8560000
+4338 32 8600000
+745 0 8640000
+783 0 8680000
+465 0 8720000
+460 0 8760000
+455 0 8800000
+506 0 8840000
+492 0 8880000
+485 0 8920000
+517 0 8960000
+534 0 9000000
+395 0 9040000
+5626 32 9080000
+1169 0 9120000
+564 0 9160000
+261 0 9200000
+327 0 9240000
+303 0 9280000
+1145 0 9320000
+257 0 9360000
+498 0 9400000
+465 0 9440000
+414 0 9480000
+553 0 9520000
+5617 32 9560000
+1052 0 9600000
+592 0 9640000
+323 0 9680000
+497 0 9720000
+467 0 9760000
+705 0 9800000
+1086 0 9840000
+1253 0 9880000
+1252 0 9920000
+776 0 9960000
diff --git a/media/res/bbb_mpeg2_176x144_105kbps_25fps.m2v b/media/res/bbb_mpeg2_176x144_105kbps_25fps.m2v
new file mode 100644
index 0000000..cdf90c3
--- /dev/null
+++ b/media/res/bbb_mpeg2_176x144_105kbps_25fps.m2v
Binary files differ
diff --git a/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.info b/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.info
new file mode 100644
index 0000000..b05a44c
--- /dev/null
+++ b/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.info
@@ -0,0 +1,251 @@
+49 128 0
+49 128 0
+57542 32 0
+50961 0 40000
+29136 0 80000
+28146 0 120000
+25472 0 160000
+5752 0 200000
+4373 0 240000
+4261 0 280000
+5083 0 320000
+6504 0 360000
+5080 0 400000
+5688 0 440000
+50834 32 480000
+4559 0 520000
+4118 0 560000
+3937 0 600000
+4262 0 640000
+4649 0 680000
+3995 0 720000
+3899 0 760000
+3896 0 800000
+3998 0 840000
+4129 0 880000
+4064 0 920000
+42872 32 960000
+3265 0 1000000
+2506 0 1040000
+2178 0 1080000
+2445 0 1120000
+2461 0 1160000
+3267 0 1200000
+2700 0 1240000
+2924 0 1280000
+2405 0 1320000
+2656 0 1360000
+2494 0 1400000
+47454 32 1440000
+2956 0 1480000
+1434 0 1520000
+707 0 1560000
+1310 0 1600000
+1791 0 1640000
+2088 0 1680000
+1078 0 1720000
+738 0 1760000
+74837 32 1800000
+3304 0 1840000
+3656 0 1880000
+2822 0 1920000
+2566 0 1960000
+2816 0 2000000
+2590 0 2040000
+2471 0 2080000
+2553 0 2120000
+2547 0 2160000
+2628 0 2200000
+2664 0 2240000
+38161 32 2280000
+2995 0 2320000
+2205 0 2360000
+2055 0 2400000
+2122 0 2440000
+2236 0 2480000
+2407 0 2520000
+893 0 2560000
+2511 0 2600000
+2703 0 2640000
+2511 0 2680000
+2564 0 2720000
+35944 32 2760000
+3002 0 2800000
+2188 0 2840000
+2109 0 2880000
+2058 0 2920000
+2242 0 2960000
+2240 0 3000000
+2346 0 3040000
+2223 0 3080000
+2430 0 3120000
+2486 0 3160000
+2379 0 3200000
+34014 32 3240000
+3009 0 3280000
+2073 0 3320000
+2005 0 3360000
+2052 0 3400000
+2167 0 3440000
+2331 0 3480000
+2201 0 3520000
+896 0 3560000
+2594 0 3600000
+2589 0 3640000
+2542 0 3680000
+33973 32 3720000
+2913 0 3760000
+1978 0 3800000
+1943 0 3840000
+1983 0 3880000
+2234 0 3920000
+2142 0 3960000
+2106 0 4000000
+2253 0 4040000
+2327 0 4080000
+2186 0 4120000
+2366 0 4160000
+32094 32 4200000
+3050 0 4240000
+1913 0 4280000
+2016 0 4320000
+2097 0 4360000
+2112 0 4400000
+2163 0 4440000
+2258 0 4480000
+2231 0 4520000
+882 0 4560000
+2575 0 4600000
+2700 0 4640000
+33754 32 4680000
+3011 0 4720000
+2034 0 4760000
+1986 0 4800000
+1983 0 4840000
+2180 0 4880000
+2067 0 4920000
+2262 0 4960000
+2323 0 5000000
+2367 0 5040000
+2289 0 5080000
+2263 0 5120000
+31806 32 5160000
+3285 0 5200000
+1957 0 5240000
+2073 0 5280000
+2057 0 5320000
+2134 0 5360000
+2086 0 5400000
+2217 0 5440000
+2314 0 5480000
+2176 0 5520000
+852 0 5560000
+2421 0 5600000
+37236 32 5640000
+16140 32 5680000
+3491 0 5720000
+2891 0 5760000
+1499 0 5800000
+659 0 5840000
+652 0 5880000
+648 0 5920000
+1892 0 5960000
+3050 0 6000000
+2235 0 6040000
+1925 0 6080000
+1790 0 6120000
+16441 32 6160000
+5341 0 6200000
+2445 0 6240000
+2878 0 6280000
+2366 0 6320000
+1732 0 6360000
+1858 0 6400000
+1632 0 6440000
+1514 0 6480000
+1874 0 6520000
+1059 0 6560000
+1795 0 6600000
+20153 32 6640000
+3589 0 6680000
+2418 0 6720000
+1896 0 6760000
+1577 0 6800000
+1629 0 6840000
+1717 0 6880000
+1717 0 6920000
+1815 0 6960000
+1663 0 7000000
+1855 0 7040000
+1699 0 7080000
+21184 32 7120000
+3395 0 7160000
+3276 0 7200000
+3825 0 7240000
+2747 0 7280000
+1684 0 7320000
+2141 0 7360000
+2372 0 7400000
+2777 0 7440000
+2828 0 7480000
+2442 0 7520000
+1302 0 7560000
+20702 32 7600000
+4043 0 7640000
+2875 0 7680000
+2026 0 7720000
+1983 0 7760000
+2173 0 7800000
+2670 0 7840000
+3145 0 7880000
+5312 0 7920000
+5547 0 7960000
+4262 0 8000000
+2637 0 8040000
+15761 32 8080000
+2693 0 8120000
+1433 0 8160000
+2108 0 8200000
+2253 0 8240000
+1846 0 8280000
+1281 0 8320000
+2294 0 8360000
+2217 0 8400000
+2370 0 8440000
+1809 0 8480000
+1899 0 8520000
+21630 32 8560000
+3189 0 8600000
+1679 0 8640000
+1732 0 8680000
+1672 0 8720000
+1788 0 8760000
+1656 0 8800000
+1765 0 8840000
+1579 0 8880000
+2142 0 8920000
+1954 0 8960000
+1854 0 9000000
+24966 32 9040000
+2176 0 9080000
+1236 0 9120000
+1282 0 9160000
+1526 0 9200000
+1369 0 9240000
+1283 0 9280000
+1434 0 9320000
+1335 0 9360000
+2144 0 9400000
+1917 0 9440000
+1409 0 9480000
+27745 32 9520000
+1905 0 9560000
+1495 0 9600000
+1685 0 9640000
+1745 0 9680000
+1894 0 9720000
+3667 0 9760000
+5546 0 9800000
+5729 0 9840000
+4479 0 9880000
+3829 0 9920000
diff --git a/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.m4v b/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.m4v
new file mode 100644
index 0000000..ec32d5e
--- /dev/null
+++ b/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.m4v
Binary files differ
diff --git a/media/res/bbb_vp8_640x360_2mbps_30fps.info b/media/res/bbb_vp8_640x360_2mbps_30fps.info
new file mode 100644
index 0000000..101f3bb
--- /dev/null
+++ b/media/res/bbb_vp8_640x360_2mbps_30fps.info
@@ -0,0 +1,300 @@
+86980 32 0
+6741 0 33000
+9433 0 67000
+9363 0 100000
+8671 0 133000
+9003 0 167000
+7751 0 200000
+13207 0 233000
+8542 0 267000
+9344 0 300000
+8069 0 333000
+8588 0 367000
+12087 0 400000
+7315 0 433000
+9654 0 467000
+13100 0 500000
+7832 0 533000
+10060 0 567000
+8540 0 600000
+8667 0 633000
+8532 0 667000
+6018 0 700000
+8520 0 733000
+15350 0 767000
+6110 0 800000
+7876 0 833000
+6133 0 867000
+9476 0 900000
+11002 0 933000
+7484 0 967000
+8760 0 1000000
+16515 0 1033000
+7482 0 1067000
+6983 0 1100000
+7561 0 1133000
+8263 0 1167000
+10682 0 1200000
+8108 0 1233000
+7924 0 1267000
+8693 0 1300000
+14190 0 1333000
+7393 0 1367000
+6864 0 1400000
+9431 0 1433000
+7674 0 1467000
+8458 0 1500000
+5899 0 1533000
+8259 0 1567000
+7963 0 1600000
+14779 0 1633000
+6877 0 1667000
+7268 0 1700000
+8526 0 1733000
+8467 0 1767000
+11200 0 1800000
+7261 0 1833000
+8280 0 1867000
+6718 0 1900000
+17742 0 1933000
+5206 0 1967000
+5700 0 2000000
+5872 0 2033000
+7915 0 2067000
+8493 0 2100000
+6545 0 2133000
+9072 0 2167000
+13200 0 2200000
+9632 0 2233000
+10016 0 2267000
+7824 0 2300000
+10628 0 2333000
+10401 0 2367000
+10892 0 2400000
+9023 0 2433000
+10734 0 2467000
+15045 0 2500000
+7940 0 2533000
+9657 0 2567000
+8743 0 2600000
+8074 0 2633000
+9445 0 2667000
+6494 0 2700000
+8601 0 2733000
+13478 0 2767000
+6942 0 2800000
+8002 0 2833000
+7940 0 2867000
+8320 0 2900000
+12215 0 2933000
+6668 0 2967000
+11384 0 3000000
+8378 0 3033000
+12908 0 3067000
+8420 0 3100000
+7502 0 3133000
+8482 0 3167000
+10968 0 3200000
+12338 0 3233000
+8657 0 3267000
+10468 0 3300000
+13878 0 3333000
+9374 0 3367000
+9857 0 3400000
+10381 0 3433000
+9984 0 3467000
+9956 0 3500000
+8905 0 3533000
+8672 0 3567000
+8122 0 3600000
+9677 0 3633000
+9812 0 3667000
+9622 0 3700000
+9023 0 3733000
+7147 0 3767000
+9146 0 3800000
+7488 0 3833000
+10812 0 3867000
+8340 0 3900000
+13280 0 3933000
+5167 0 3967000
+6991 0 4000000
+6543 0 4033000
+5952 0 4067000
+5164 0 4100000
+4011 0 4133000
+3794 0 4167000
+12959 0 4200000
+71020 32 4233000
+5351 0 4267000
+6283 0 4300000
+5080 0 4333000
+6707 0 4367000
+5857 0 4400000
+5221 0 4433000
+10972 0 4467000
+7023 0 4500000
+6907 0 4533000
+7851 0 4567000
+4843 0 4600000
+6085 0 4633000
+4868 0 4667000
+5093 0 4700000
+12807 0 4733000
+6330 0 4767000
+4209 0 4800000
+4596 0 4833000
+6316 0 4867000
+4954 0 4900000
+5533 0 4933000
+7749 0 4967000
+12486 0 5000000
+5468 0 5033000
+4353 0 5067000
+5786 0 5100000
+5551 0 5133000
+6711 0 5167000
+5688 0 5200000
+6258 0 5233000
+12975 0 5267000
+4873 0 5300000
+4552 0 5333000
+4844 0 5367000
+4774 0 5400000
+5025 0 5433000
+5204 0 5467000
+4814 0 5500000
+14835 0 5533000
+5343 0 5567000
+4808 0 5600000
+5071 0 5633000
+6324 0 5667000
+5243 0 5700000
+4995 0 5733000
+5134 0 5767000
+11054 0 5800000
+4807 0 5833000
+5118 0 5867000
+6424 0 5900000
+4984 0 5933000
+7187 0 5967000
+5505 0 6000000
+6941 0 6033000
+11517 0 6067000
+5646 0 6100000
+6832 0 6133000
+5294 0 6167000
+6200 0 6200000
+6328 0 6233000
+4348 0 6267000
+4607 0 6300000
+12958 0 6333000
+4308 0 6367000
+6084 0 6400000
+4494 0 6433000
+5338 0 6467000
+5742 0 6500000
+5472 0 6533000
+8459 0 6567000
+13075 0 6600000
+8986 0 6633000
+9583 0 6667000
+8792 0 6700000
+9004 0 6733000
+9632 0 6767000
+9393 0 6800000
+9259 0 6833000
+11927 0 6867000
+10323 0 6900000
+15248 0 6933000
+11244 0 6967000
+15558 0 7000000
+6197 0 7033000
+8044 0 7067000
+11432 0 7100000
+8737 0 7133000
+13885 0 7167000
+11158 0 7200000
+15152 0 7233000
+7025 0 7267000
+8025 0 7300000
+13362 0 7333000
+8090 0 7367000
+13637 0 7400000
+6148 0 7433000
+9270 0 7467000
+8633 0 7500000
+10673 0 7533000
+14208 0 7567000
+8084 0 7600000
+13783 0 7633000
+10660 0 7667000
+7466 0 7700000
+14433 0 7733000
+10934 0 7767000
+7239 0 7800000
+12548 0 7833000
+6564 0 7867000
+10761 0 7900000
+10992 0 7933000
+12924 0 7967000
+12348 0 8000000
+6770 0 8033000
+14288 0 8067000
+29345 32 8100000
+1822 0 8133000
+1087 0 8167000
+1109 0 8200000
+2007 0 8233000
+1798 0 8267000
+1635 0 8300000
+19607 0 8333000
+919 0 8367000
+2357 0 8400000
+3578 0 8433000
+4497 0 8467000
+4314 0 8500000
+3851 0 8533000
+3822 0 8567000
+4252 0 8600000
+4775 0 8633000
+12203 0 8667000
+5078 0 8700000
+5876 0 8733000
+6124 0 8767000
+4490 0 8800000
+3538 0 8833000
+3450 0 8867000
+3611 0 8900000
+2847 0 8933000
+2605 0 8967000
+12243 0 9000000
+1946 0 9033000
+1847 0 9067000
+2035 0 9100000
+2572 0 9133000
+2326 0 9167000
+2645 0 9200000
+2938 0 9233000
+2495 0 9267000
+2609 0 9300000
+9744 0 9333000
+1796 0 9367000
+1985 0 9400000
+1759 0 9433000
+2259 0 9467000
+2233 0 9500000
+2044 0 9533000
+2502 0 9567000
+2307 0 9600000
+2739 0 9633000
+11707 0 9667000
+5168 0 9700000
+4483 0 9733000
+3044 0 9767000
+4241 0 9800000
+4392 0 9833000
+4934 0 9867000
+5934 0 9900000
+5647 0 9933000
+5326 0 9967000
diff --git a/media/res/bbb_vp8_640x360_2mbps_30fps.vp8 b/media/res/bbb_vp8_640x360_2mbps_30fps.vp8
new file mode 100644
index 0000000..6ec460c
--- /dev/null
+++ b/media/res/bbb_vp8_640x360_2mbps_30fps.vp8
Binary files differ
diff --git a/media/res/bbb_vp9_640x360_1600kbps_30fps.info b/media/res/bbb_vp9_640x360_1600kbps_30fps.info
new file mode 100644
index 0000000..18be58e
--- /dev/null
+++ b/media/res/bbb_vp9_640x360_1600kbps_30fps.info
@@ -0,0 +1,300 @@
+54918 32 0
+46280 0 33000
+2006 0 67000
+2841 0 100000
+3044 0 133000
+3429 0 167000
+3196 0 200000
+2926 0 233000
+2821 0 267000
+1150 0 300000
+36 0 333000
+38084 0 367000
+3689 0 400000
+3473 0 433000
+3011 0 467000
+3090 0 500000
+2516 0 533000
+2771 0 567000
+3250 0 600000
+1159 0 633000
+34 0 667000
+39690 0 700000
+3615 0 733000
+2494 0 767000
+2893 0 800000
+3329 0 833000
+2939 0 867000
+2352 0 900000
+2732 0 933000
+1746 0 967000
+33 0 1000000
+41501 0 1033000
+2997 0 1067000
+2666 0 1100000
+3582 0 1133000
+2616 0 1167000
+2923 0 1200000
+2696 0 1233000
+1628 0 1267000
+1887 0 1300000
+33 0 1333000
+42876 0 1367000
+2588 0 1400000
+3316 0 1433000
+2287 0 1467000
+3375 0 1500000
+2108 0 1533000
+2961 0 1567000
+1730 0 1600000
+1800 0 1633000
+34 0 1667000
+43797 0 1700000
+2484 0 1733000
+2556 0 1767000
+2671 0 1800000
+2338 0 1833000
+3133 0 1867000
+2002 0 1900000
+1794 0 1933000
+1279 0 1967000
+32 0 2000000
+42642 0 2033000
+2686 0 2067000
+2202 0 2100000
+2145 0 2133000
+2566 0 2167000
+2190 0 2200000
+1580 0 2233000
+1711 0 2267000
+648 0 2300000
+32 0 2333000
+40409 0 2367000
+2628 0 2400000
+1973 0 2433000
+2360 0 2467000
+3043 0 2500000
+1730 0 2533000
+1456 0 2567000
+2312 0 2600000
+369 0 2633000
+32 0 2667000
+41391 0 2700000
+2967 0 2733000
+2454 0 2767000
+1825 0 2800000
+1853 0 2833000
+1746 0 2867000
+2347 0 2900000
+1362 0 2933000
+441 0 2967000
+34 0 3000000
+42503 0 3033000
+1877 0 3067000
+1690 0 3100000
+1367 0 3133000
+1520 0 3167000
+1240 0 3200000
+1094 0 3233000
+739 0 3267000
+392 0 3300000
+33 0 3333000
+35104 0 3367000
+1463 0 3400000
+2029 0 3433000
+1626 0 3467000
+1956 0 3500000
+799 0 3533000
+556 0 3567000
+584 0 3600000
+191 0 3633000
+36 0 3667000
+37652 0 3700000
+862 0 3733000
+524 0 3767000
+641 0 3800000
+584 0 3833000
+360 0 3867000
+365 0 3900000
+361 0 3933000
+154 0 3967000
+36 0 4000000
+125740 0 4033000
+332 0 4067000
+381 0 4100000
+420 0 4133000
+464 0 4167000
+288 0 4200000
+2660 0 4233000
+127564 32 4267000
+30696 0 4300000
+3423 0 4333000
+3310 0 4367000
+3513 0 4400000
+3735 0 4433000
+3358 0 4467000
+3108 0 4500000
+2800 0 4533000
+1751 0 4567000
+41 0 4600000
+39862 0 4633000
+3739 0 4667000
+3755 0 4700000
+3408 0 4733000
+3783 0 4767000
+3423 0 4800000
+2801 0 4833000
+2549 0 4867000
+1461 0 4900000
+40 0 4933000
+41667 0 4967000
+3623 0 5000000
+3356 0 5033000
+3424 0 5067000
+3548 0 5100000
+3119 0 5133000
+2905 0 5167000
+2772 0 5200000
+1623 0 5233000
+43 0 5267000
+46783 0 5300000
+3462 0 5333000
+3470 0 5367000
+3677 0 5400000
+3684 0 5433000
+3266 0 5467000
+3127 0 5500000
+2809 0 5533000
+1750 0 5567000
+40 0 5600000
+46215 0 5633000
+3599 0 5667000
+3558 0 5700000
+3544 0 5733000
+3632 0 5767000
+3548 0 5800000
+2968 0 5833000
+2715 0 5867000
+1729 0 5900000
+41 0 5933000
+45958 0 5967000
+3776 0 6000000
+3525 0 6033000
+3644 0 6067000
+3786 0 6100000
+3222 0 6133000
+2923 0 6167000
+2752 0 6200000
+1592 0 6233000
+41 0 6267000
+46031 0 6300000
+3520 0 6333000
+3380 0 6367000
+3371 0 6400000
+3427 0 6433000
+3135 0 6467000
+2988 0 6500000
+2730 0 6533000
+1671 0 6567000
+41 0 6600000
+45846 0 6633000
+3535 0 6667000
+3507 0 6700000
+3429 0 6733000
+3491 0 6767000
+3325 0 6800000
+2979 0 6833000
+2800 0 6867000
+1610 0 6900000
+40 0 6933000
+45958 0 6967000
+3762 0 7000000
+3254 0 7033000
+3408 0 7067000
+3860 0 7100000
+3198 0 7133000
+2966 0 7167000
+2882 0 7200000
+1763 0 7233000
+42 0 7267000
+46130 0 7300000
+3593 0 7333000
+3523 0 7367000
+3939 0 7400000
+3980 0 7433000
+3470 0 7467000
+3191 0 7500000
+2969 0 7533000
+1740 0 7567000
+41 0 7600000
+46300 0 7633000
+3739 0 7667000
+3781 0 7700000
+3964 0 7733000
+4023 0 7767000
+3480 0 7800000
+3065 0 7833000
+2934 0 7867000
+1805 0 7900000
+42 0 7933000
+38166 0 7967000
+4062 0 8000000
+3844 0 8033000
+4547 0 8067000
+934 0 8100000
+365 0 8133000
+181 0 8167000
+463 0 8200000
+419 0 8233000
+38 0 8267000
+9702 0 8300000
+344 0 8333000
+276 0 8367000
+1350 0 8400000
+1703 0 8433000
+1843 0 8467000
+1228 0 8500000
+35580 32 8533000
+27458 0 8567000
+2144 0 8600000
+2482 0 8633000
+2004 0 8667000
+2822 0 8700000
+2570 0 8733000
+1726 0 8767000
+1248 0 8800000
+844 0 8833000
+35 0 8867000
+14207 0 8900000
+1037 0 8933000
+749 0 8967000
+829 0 9000000
+915 0 9033000
+685 0 9067000
+767 0 9100000
+798 0 9133000
+342 0 9167000
+31 0 9200000
+12590 0 9233000
+923 0 9267000
+819 0 9300000
+776 0 9333000
+863 0 9367000
+729 0 9400000
+471 0 9433000
+638 0 9467000
+276 0 9500000
+38 0 9533000
+17272 0 9567000
+856 0 9600000
+1158 0 9633000
+2172 0 9667000
+2751 0 9700000
+2142 0 9733000
+1267 0 9767000
+1965 0 9800000
+1510 0 9833000
+34 0 9867000
+2692 0 9900000
+2778 0 9933000
+2585 0 9967000
diff --git a/media/res/bbb_vp9_640x360_1600kbps_30fps.vp9 b/media/res/bbb_vp9_640x360_1600kbps_30fps.vp9
new file mode 100644
index 0000000..c1e2001
--- /dev/null
+++ b/media/res/bbb_vp9_640x360_1600kbps_30fps.vp9
Binary files differ
diff --git a/media/res/sine_amrnb_1ch_12kbps_8000hz.info b/media/res/sine_amrnb_1ch_12kbps_8000hz.info
index b36e813..464e95f 100644
--- a/media/res/sine_amrnb_1ch_12kbps_8000hz.info
+++ b/media/res/sine_amrnb_1ch_12kbps_8000hz.info
@@ -1,833 +1,833 @@
-32 1 0
-32 1 20000
-32 1 40000
-32 1 60000
-32 1 80000
-32 1 100000
-32 1 120000
-32 1 140000
-32 1 160000
-32 1 180000
-32 1 200000
-32 1 220000
-32 1 240000
-32 1 260000
-32 1 280000
-32 1 300000
-32 1 320000
-32 1 340000
-32 1 360000
-32 1 380000
-32 1 400000
-32 1 420000
-32 1 440000
-32 1 460000
-32 1 480000
-32 1 500000
-32 1 520000
-32 1 540000
-32 1 560000
-32 1 580000
-32 1 600000
-32 1 620000
-32 1 640000
-32 1 660000
-32 1 680000
-32 1 700000
-32 1 720000
-32 1 740000
-32 1 760000
-32 1 780000
-32 1 800000
-32 1 820000
-32 1 840000
-32 1 860000
-32 1 880000
-32 1 900000
-32 1 920000
-32 1 940000
-32 1 960000
-32 1 980000
-32 1 1000000
-32 1 1020000
-32 1 1040000
-32 1 1060000
-32 1 1080000
-32 1 1100000
-32 1 1120000
-32 1 1140000
-32 1 1160000
-32 1 1180000
-32 1 1200000
-32 1 1220000
-32 1 1240000
-32 1 1260000
-32 1 1280000
-32 1 1300000
-32 1 1320000
-32 1 1340000
-32 1 1360000
-32 1 1380000
-32 1 1400000
-32 1 1420000
-32 1 1440000
-32 1 1460000
-32 1 1480000
-32 1 1500000
-32 1 1520000
-32 1 1540000
-32 1 1560000
-32 1 1580000
-32 1 1600000
-32 1 1620000
-32 1 1640000
-32 1 1660000
-32 1 1680000
-32 1 1700000
-32 1 1720000
-32 1 1740000
-32 1 1760000
-32 1 1780000
-32 1 1800000
-32 1 1820000
-32 1 1840000
-32 1 1860000
-32 1 1880000
-32 1 1900000
-32 1 1920000
-32 1 1940000
-32 1 1960000
-32 1 1980000
-32 1 2000000
-32 1 2020000
-32 1 2040000
-32 1 2060000
-32 1 2080000
-32 1 2100000
-32 1 2120000
-32 1 2140000
-32 1 2160000
-32 1 2180000
-32 1 2200000
-32 1 2220000
-32 1 2240000
-32 1 2260000
-32 1 2280000
-32 1 2300000
-32 1 2320000
-32 1 2340000
-32 1 2360000
-32 1 2380000
-32 1 2400000
-32 1 2420000
-32 1 2440000
-32 1 2460000
-32 1 2480000
-32 1 2500000
-32 1 2520000
-32 1 2540000
-32 1 2560000
-32 1 2580000
-32 1 2600000
-32 1 2620000
-32 1 2640000
-32 1 2660000
-32 1 2680000
-32 1 2700000
-32 1 2720000
-32 1 2740000
-32 1 2760000
-32 1 2780000
-32 1 2800000
-32 1 2820000
-32 1 2840000
-32 1 2860000
-32 1 2880000
-32 1 2900000
-32 1 2920000
-32 1 2940000
-32 1 2960000
-32 1 2980000
-32 1 3000000
-32 1 3020000
-32 1 3040000
-32 1 3060000
-32 1 3080000
-32 1 3100000
-32 1 3120000
-32 1 3140000
-32 1 3160000
-32 1 3180000
-32 1 3200000
-32 1 3220000
-32 1 3240000
-32 1 3260000
-32 1 3280000
-32 1 3300000
-32 1 3320000
-32 1 3340000
-32 1 3360000
-32 1 3380000
-32 1 3400000
-32 1 3420000
-32 1 3440000
-32 1 3460000
-32 1 3480000
-32 1 3500000
-32 1 3520000
-32 1 3540000
-32 1 3560000
-32 1 3580000
-32 1 3600000
-32 1 3620000
-32 1 3640000
-32 1 3660000
-32 1 3680000
-32 1 3700000
-32 1 3720000
-32 1 3740000
-32 1 3760000
-32 1 3780000
-32 1 3800000
-32 1 3820000
-32 1 3840000
-32 1 3860000
-32 1 3880000
-32 1 3900000
-32 1 3920000
-32 1 3940000
-32 1 3960000
-32 1 3980000
-32 1 4000000
-32 1 4020000
-32 1 4040000
-32 1 4060000
-32 1 4080000
-32 1 4100000
-32 1 4120000
-32 1 4140000
-32 1 4160000
-32 1 4180000
-32 1 4200000
-32 1 4220000
-32 1 4240000
-32 1 4260000
-32 1 4280000
-32 1 4300000
-32 1 4320000
-32 1 4340000
-32 1 4360000
-32 1 4380000
-32 1 4400000
-32 1 4420000
-32 1 4440000
-32 1 4460000
-32 1 4480000
-32 1 4500000
-32 1 4520000
-32 1 4540000
-32 1 4560000
-32 1 4580000
-32 1 4600000
-32 1 4620000
-32 1 4640000
-32 1 4660000
-32 1 4680000
-32 1 4700000
-32 1 4720000
-32 1 4740000
-32 1 4760000
-32 1 4780000
-32 1 4800000
-32 1 4820000
-32 1 4840000
-32 1 4860000
-32 1 4880000
-32 1 4900000
-32 1 4920000
-32 1 4940000
-32 1 4960000
-32 1 4980000
-32 1 5000000
-32 1 5020000
-32 1 5040000
-32 1 5060000
-32 1 5080000
-32 1 5100000
-32 1 5120000
-32 1 5140000
-32 1 5160000
-32 1 5180000
-32 1 5200000
-32 1 5220000
-32 1 5240000
-32 1 5260000
-32 1 5280000
-32 1 5300000
-32 1 5320000
-32 1 5340000
-32 1 5360000
-32 1 5380000
-32 1 5400000
-32 1 5420000
-32 1 5440000
-32 1 5460000
-32 1 5480000
-32 1 5500000
-32 1 5520000
-32 1 5540000
-32 1 5560000
-32 1 5580000
-32 1 5600000
-32 1 5620000
-32 1 5640000
-32 1 5660000
-32 1 5680000
-32 1 5700000
-32 1 5720000
-32 1 5740000
-32 1 5760000
-32 1 5780000
-32 1 5800000
-32 1 5820000
-32 1 5840000
-32 1 5860000
-32 1 5880000
-32 1 5900000
-32 1 5920000
-32 1 5940000
-32 1 5960000
-32 1 5980000
-32 1 6000000
-32 1 6020000
-32 1 6040000
-32 1 6060000
-32 1 6080000
-32 1 6100000
-32 1 6120000
-32 1 6140000
-32 1 6160000
-32 1 6180000
-32 1 6200000
-32 1 6220000
-32 1 6240000
-32 1 6260000
-32 1 6280000
-32 1 6300000
-32 1 6320000
-32 1 6340000
-32 1 6360000
-32 1 6380000
-32 1 6400000
-32 1 6420000
-32 1 6440000
-32 1 6460000
-32 1 6480000
-32 1 6500000
-32 1 6520000
-32 1 6540000
-32 1 6560000
-32 1 6580000
-32 1 6600000
-32 1 6620000
-32 1 6640000
-32 1 6660000
-32 1 6680000
-32 1 6700000
-32 1 6720000
-32 1 6740000
-32 1 6760000
-32 1 6780000
-32 1 6800000
-32 1 6820000
-32 1 6840000
-32 1 6860000
-32 1 6880000
-32 1 6900000
-32 1 6920000
-32 1 6940000
-32 1 6960000
-32 1 6980000
-32 1 7000000
-32 1 7020000
-32 1 7040000
-32 1 7060000
-32 1 7080000
-32 1 7100000
-32 1 7120000
-32 1 7140000
-32 1 7160000
-32 1 7180000
-32 1 7200000
-32 1 7220000
-32 1 7240000
-32 1 7260000
-32 1 7280000
-32 1 7300000
-32 1 7320000
-32 1 7340000
-32 1 7360000
-32 1 7380000
-32 1 7400000
-32 1 7420000
-32 1 7440000
-32 1 7460000
-32 1 7480000
-32 1 7500000
-32 1 7520000
-32 1 7540000
-32 1 7560000
-32 1 7580000
-32 1 7600000
-32 1 7620000
-32 1 7640000
-32 1 7660000
-32 1 7680000
-32 1 7700000
-32 1 7720000
-32 1 7740000
-32 1 7760000
-32 1 7780000
-32 1 7800000
-32 1 7820000
-32 1 7840000
-32 1 7860000
-32 1 7880000
-32 1 7900000
-32 1 7920000
-32 1 7940000
-32 1 7960000
-32 1 7980000
-32 1 8000000
-32 1 8020000
-32 1 8040000
-32 1 8060000
-32 1 8080000
-32 1 8100000
-32 1 8120000
-32 1 8140000
-32 1 8160000
-32 1 8180000
-32 1 8200000
-32 1 8220000
-32 1 8240000
-32 1 8260000
-32 1 8280000
-32 1 8300000
-32 1 8320000
-32 1 8340000
-32 1 8360000
-32 1 8380000
-32 1 8400000
-32 1 8420000
-32 1 8440000
-32 1 8460000
-32 1 8480000
-32 1 8500000
-32 1 8520000
-32 1 8540000
-32 1 8560000
-32 1 8580000
-32 1 8600000
-32 1 8620000
-32 1 8640000
-32 1 8660000
-32 1 8680000
-32 1 8700000
-32 1 8720000
-32 1 8740000
-32 1 8760000
-32 1 8780000
-32 1 8800000
-32 1 8820000
-32 1 8840000
-32 1 8860000
-32 1 8880000
-32 1 8900000
-32 1 8920000
-32 1 8940000
-32 1 8960000
-32 1 8980000
-32 1 9000000
-32 1 9020000
-32 1 9040000
-32 1 9060000
-32 1 9080000
-32 1 9100000
-32 1 9120000
-32 1 9140000
-32 1 9160000
-32 1 9180000
-32 1 9200000
-32 1 9220000
-32 1 9240000
-32 1 9260000
-32 1 9280000
-32 1 9300000
-32 1 9320000
-32 1 9340000
-32 1 9360000
-32 1 9380000
-32 1 9400000
-32 1 9420000
-32 1 9440000
-32 1 9460000
-32 1 9480000
-32 1 9500000
-32 1 9520000
-32 1 9540000
-32 1 9560000
-32 1 9580000
-32 1 9600000
-32 1 9620000
-32 1 9640000
-32 1 9660000
-32 1 9680000
-32 1 9700000
-32 1 9720000
-32 1 9740000
-32 1 9760000
-32 1 9780000
-32 1 9800000
-32 1 9820000
-32 1 9840000
-32 1 9860000
-32 1 9880000
-32 1 9900000
-32 1 9920000
-32 1 9940000
-32 1 9960000
-32 1 9980000
-32 1 10000000
-32 1 10020000
-32 1 10040000
-32 1 10060000
-32 1 10080000
-32 1 10100000
-32 1 10120000
-32 1 10140000
-32 1 10160000
-32 1 10180000
-32 1 10200000
-32 1 10220000
-32 1 10240000
-32 1 10260000
-32 1 10280000
-32 1 10300000
-32 1 10320000
-32 1 10340000
-32 1 10360000
-32 1 10380000
-32 1 10400000
-32 1 10420000
-32 1 10440000
-32 1 10460000
-32 1 10480000
-32 1 10500000
-32 1 10520000
-32 1 10540000
-32 1 10560000
-32 1 10580000
-32 1 10600000
-32 1 10620000
-32 1 10640000
-32 1 10660000
-32 1 10680000
-32 1 10700000
-32 1 10720000
-32 1 10740000
-32 1 10760000
-32 1 10780000
-32 1 10800000
-32 1 10820000
-32 1 10840000
-32 1 10860000
-32 1 10880000
-32 1 10900000
-32 1 10920000
-32 1 10940000
-32 1 10960000
-32 1 10980000
-32 1 11000000
-32 1 11020000
-32 1 11040000
-32 1 11060000
-32 1 11080000
-32 1 11100000
-32 1 11120000
-32 1 11140000
-32 1 11160000
-32 1 11180000
-32 1 11200000
-32 1 11220000
-32 1 11240000
-32 1 11260000
-32 1 11280000
-32 1 11300000
-32 1 11320000
-32 1 11340000
-32 1 11360000
-32 1 11380000
-32 1 11400000
-32 1 11420000
-32 1 11440000
-32 1 11460000
-32 1 11480000
-32 1 11500000
-32 1 11520000
-32 1 11540000
-32 1 11560000
-32 1 11580000
-32 1 11600000
-32 1 11620000
-32 1 11640000
-32 1 11660000
-32 1 11680000
-32 1 11700000
-32 1 11720000
-32 1 11740000
-32 1 11760000
-32 1 11780000
-32 1 11800000
-32 1 11820000
-32 1 11840000
-32 1 11860000
-32 1 11880000
-32 1 11900000
-32 1 11920000
-32 1 11940000
-32 1 11960000
-32 1 11980000
-32 1 12000000
-32 1 12020000
-32 1 12040000
-32 1 12060000
-32 1 12080000
-32 1 12100000
-32 1 12120000
-32 1 12140000
-32 1 12160000
-32 1 12180000
-32 1 12200000
-32 1 12220000
-32 1 12240000
-32 1 12260000
-32 1 12280000
-32 1 12300000
-32 1 12320000
-32 1 12340000
-32 1 12360000
-32 1 12380000
-32 1 12400000
-32 1 12420000
-32 1 12440000
-32 1 12460000
-32 1 12480000
-32 1 12500000
-32 1 12520000
-32 1 12540000
-32 1 12560000
-32 1 12580000
-32 1 12600000
-32 1 12620000
-32 1 12640000
-32 1 12660000
-32 1 12680000
-32 1 12700000
-32 1 12720000
-32 1 12740000
-32 1 12760000
-32 1 12780000
-32 1 12800000
-32 1 12820000
-32 1 12840000
-32 1 12860000
-32 1 12880000
-32 1 12900000
-32 1 12920000
-32 1 12940000
-32 1 12960000
-32 1 12980000
-32 1 13000000
-32 1 13020000
-32 1 13040000
-32 1 13060000
-32 1 13080000
-32 1 13100000
-32 1 13120000
-32 1 13140000
-32 1 13160000
-32 1 13180000
-32 1 13200000
-32 1 13220000
-32 1 13240000
-32 1 13260000
-32 1 13280000
-32 1 13300000
-32 1 13320000
-32 1 13340000
-32 1 13360000
-32 1 13380000
-32 1 13400000
-32 1 13420000
-32 1 13440000
-32 1 13460000
-32 1 13480000
-32 1 13500000
-32 1 13520000
-32 1 13540000
-32 1 13560000
-32 1 13580000
-32 1 13600000
-32 1 13620000
-32 1 13640000
-32 1 13660000
-32 1 13680000
-32 1 13700000
-32 1 13720000
-32 1 13740000
-32 1 13760000
-32 1 13780000
-32 1 13800000
-32 1 13820000
-32 1 13840000
-32 1 13860000
-32 1 13880000
-32 1 13900000
-32 1 13920000
-32 1 13940000
-32 1 13960000
-32 1 13980000
-32 1 14000000
-32 1 14020000
-32 1 14040000
-32 1 14060000
-32 1 14080000
-32 1 14100000
-32 1 14120000
-32 1 14140000
-32 1 14160000
-32 1 14180000
-32 1 14200000
-32 1 14220000
-32 1 14240000
-32 1 14260000
-32 1 14280000
-32 1 14300000
-32 1 14320000
-32 1 14340000
-32 1 14360000
-32 1 14380000
-32 1 14400000
-32 1 14420000
-32 1 14440000
-32 1 14460000
-32 1 14480000
-32 1 14500000
-32 1 14520000
-32 1 14540000
-32 1 14560000
-32 1 14580000
-32 1 14600000
-32 1 14620000
-32 1 14640000
-32 1 14660000
-32 1 14680000
-32 1 14700000
-32 1 14720000
-32 1 14740000
-32 1 14760000
-32 1 14780000
-32 1 14800000
-32 1 14820000
-32 1 14840000
-32 1 14860000
-32 1 14880000
-32 1 14900000
-32 1 14920000
-32 1 14940000
-32 1 14960000
-32 1 14980000
-32 1 15000000
-32 1 15020000
-32 1 15040000
-32 1 15060000
-32 1 15080000
-32 1 15100000
-32 1 15120000
-32 1 15140000
-32 1 15160000
-32 1 15180000
-32 1 15200000
-32 1 15220000
-32 1 15240000
-32 1 15260000
-32 1 15280000
-32 1 15300000
-32 1 15320000
-32 1 15340000
-32 1 15360000
-32 1 15380000
-32 1 15400000
-32 1 15420000
-32 1 15440000
-32 1 15460000
-32 1 15480000
-32 1 15500000
-32 1 15520000
-32 1 15540000
-32 1 15560000
-32 1 15580000
-32 1 15600000
-32 1 15620000
-32 1 15640000
-32 1 15660000
-32 1 15680000
-32 1 15700000
-32 1 15720000
-32 1 15740000
-32 1 15760000
-32 1 15780000
-32 1 15800000
-32 1 15820000
-32 1 15840000
-32 1 15860000
-32 1 15880000
-32 1 15900000
-32 1 15920000
-32 1 15940000
-32 1 15960000
-32 1 15980000
-32 1 16000000
-32 1 16020000
-32 1 16040000
-32 1 16060000
-32 1 16080000
-32 1 16100000
-32 1 16120000
-32 1 16140000
-32 1 16160000
-32 1 16180000
-32 1 16200000
-32 1 16220000
-32 1 16240000
-32 1 16260000
-32 1 16280000
-32 1 16300000
-32 1 16320000
-32 1 16340000
-32 1 16360000
-32 1 16380000
-32 1 16400000
-32 1 16420000
-32 1 16440000
-32 1 16460000
-32 1 16480000
-32 1 16500000
-32 1 16520000
-32 1 16540000
-32 1 16560000
-32 1 16580000
-32 1 16600000
-32 1 16620000
-32 1 16640000
+32 32 0
+32 32 20000
+32 32 40000
+32 32 60000
+32 32 80000
+32 32 100000
+32 32 120000
+32 32 140000
+32 32 160000
+32 32 180000
+32 32 200000
+32 32 220000
+32 32 240000
+32 32 260000
+32 32 280000
+32 32 300000
+32 32 320000
+32 32 340000
+32 32 360000
+32 32 380000
+32 32 400000
+32 32 420000
+32 32 440000
+32 32 460000
+32 32 480000
+32 32 500000
+32 32 520000
+32 32 540000
+32 32 560000
+32 32 580000
+32 32 600000
+32 32 620000
+32 32 640000
+32 32 660000
+32 32 680000
+32 32 700000
+32 32 720000
+32 32 740000
+32 32 760000
+32 32 780000
+32 32 800000
+32 32 820000
+32 32 840000
+32 32 860000
+32 32 880000
+32 32 900000
+32 32 920000
+32 32 940000
+32 32 960000
+32 32 980000
+32 32 1000000
+32 32 1020000
+32 32 1040000
+32 32 1060000
+32 32 1080000
+32 32 1100000
+32 32 1120000
+32 32 1140000
+32 32 1160000
+32 32 1180000
+32 32 1200000
+32 32 1220000
+32 32 1240000
+32 32 1260000
+32 32 1280000
+32 32 1300000
+32 32 1320000
+32 32 1340000
+32 32 1360000
+32 32 1380000
+32 32 1400000
+32 32 1420000
+32 32 1440000
+32 32 1460000
+32 32 1480000
+32 32 1500000
+32 32 1520000
+32 32 1540000
+32 32 1560000
+32 32 1580000
+32 32 1600000
+32 32 1620000
+32 32 1640000
+32 32 1660000
+32 32 1680000
+32 32 1700000
+32 32 1720000
+32 32 1740000
+32 32 1760000
+32 32 1780000
+32 32 1800000
+32 32 1820000
+32 32 1840000
+32 32 1860000
+32 32 1880000
+32 32 1900000
+32 32 1920000
+32 32 1940000
+32 32 1960000
+32 32 1980000
+32 32 2000000
+32 32 2020000
+32 32 2040000
+32 32 2060000
+32 32 2080000
+32 32 2100000
+32 32 2120000
+32 32 2140000
+32 32 2160000
+32 32 2180000
+32 32 2200000
+32 32 2220000
+32 32 2240000
+32 32 2260000
+32 32 2280000
+32 32 2300000
+32 32 2320000
+32 32 2340000
+32 32 2360000
+32 32 2380000
+32 32 2400000
+32 32 2420000
+32 32 2440000
+32 32 2460000
+32 32 2480000
+32 32 2500000
+32 32 2520000
+32 32 2540000
+32 32 2560000
+32 32 2580000
+32 32 2600000
+32 32 2620000
+32 32 2640000
+32 32 2660000
+32 32 2680000
+32 32 2700000
+32 32 2720000
+32 32 2740000
+32 32 2760000
+32 32 2780000
+32 32 2800000
+32 32 2820000
+32 32 2840000
+32 32 2860000
+32 32 2880000
+32 32 2900000
+32 32 2920000
+32 32 2940000
+32 32 2960000
+32 32 2980000
+32 32 3000000
+32 32 3020000
+32 32 3040000
+32 32 3060000
+32 32 3080000
+32 32 3100000
+32 32 3120000
+32 32 3140000
+32 32 3160000
+32 32 3180000
+32 32 3200000
+32 32 3220000
+32 32 3240000
+32 32 3260000
+32 32 3280000
+32 32 3300000
+32 32 3320000
+32 32 3340000
+32 32 3360000
+32 32 3380000
+32 32 3400000
+32 32 3420000
+32 32 3440000
+32 32 3460000
+32 32 3480000
+32 32 3500000
+32 32 3520000
+32 32 3540000
+32 32 3560000
+32 32 3580000
+32 32 3600000
+32 32 3620000
+32 32 3640000
+32 32 3660000
+32 32 3680000
+32 32 3700000
+32 32 3720000
+32 32 3740000
+32 32 3760000
+32 32 3780000
+32 32 3800000
+32 32 3820000
+32 32 3840000
+32 32 3860000
+32 32 3880000
+32 32 3900000
+32 32 3920000
+32 32 3940000
+32 32 3960000
+32 32 3980000
+32 32 4000000
+32 32 4020000
+32 32 4040000
+32 32 4060000
+32 32 4080000
+32 32 4100000
+32 32 4120000
+32 32 4140000
+32 32 4160000
+32 32 4180000
+32 32 4200000
+32 32 4220000
+32 32 4240000
+32 32 4260000
+32 32 4280000
+32 32 4300000
+32 32 4320000
+32 32 4340000
+32 32 4360000
+32 32 4380000
+32 32 4400000
+32 32 4420000
+32 32 4440000
+32 32 4460000
+32 32 4480000
+32 32 4500000
+32 32 4520000
+32 32 4540000
+32 32 4560000
+32 32 4580000
+32 32 4600000
+32 32 4620000
+32 32 4640000
+32 32 4660000
+32 32 4680000
+32 32 4700000
+32 32 4720000
+32 32 4740000
+32 32 4760000
+32 32 4780000
+32 32 4800000
+32 32 4820000
+32 32 4840000
+32 32 4860000
+32 32 4880000
+32 32 4900000
+32 32 4920000
+32 32 4940000
+32 32 4960000
+32 32 4980000
+32 32 5000000
+32 32 5020000
+32 32 5040000
+32 32 5060000
+32 32 5080000
+32 32 5100000
+32 32 5120000
+32 32 5140000
+32 32 5160000
+32 32 5180000
+32 32 5200000
+32 32 5220000
+32 32 5240000
+32 32 5260000
+32 32 5280000
+32 32 5300000
+32 32 5320000
+32 32 5340000
+32 32 5360000
+32 32 5380000
+32 32 5400000
+32 32 5420000
+32 32 5440000
+32 32 5460000
+32 32 5480000
+32 32 5500000
+32 32 5520000
+32 32 5540000
+32 32 5560000
+32 32 5580000
+32 32 5600000
+32 32 5620000
+32 32 5640000
+32 32 5660000
+32 32 5680000
+32 32 5700000
+32 32 5720000
+32 32 5740000
+32 32 5760000
+32 32 5780000
+32 32 5800000
+32 32 5820000
+32 32 5840000
+32 32 5860000
+32 32 5880000
+32 32 5900000
+32 32 5920000
+32 32 5940000
+32 32 5960000
+32 32 5980000
+32 32 6000000
+32 32 6020000
+32 32 6040000
+32 32 6060000
+32 32 6080000
+32 32 6100000
+32 32 6120000
+32 32 6140000
+32 32 6160000
+32 32 6180000
+32 32 6200000
+32 32 6220000
+32 32 6240000
+32 32 6260000
+32 32 6280000
+32 32 6300000
+32 32 6320000
+32 32 6340000
+32 32 6360000
+32 32 6380000
+32 32 6400000
+32 32 6420000
+32 32 6440000
+32 32 6460000
+32 32 6480000
+32 32 6500000
+32 32 6520000
+32 32 6540000
+32 32 6560000
+32 32 6580000
+32 32 6600000
+32 32 6620000
+32 32 6640000
+32 32 6660000
+32 32 6680000
+32 32 6700000
+32 32 6720000
+32 32 6740000
+32 32 6760000
+32 32 6780000
+32 32 6800000
+32 32 6820000
+32 32 6840000
+32 32 6860000
+32 32 6880000
+32 32 6900000
+32 32 6920000
+32 32 6940000
+32 32 6960000
+32 32 6980000
+32 32 7000000
+32 32 7020000
+32 32 7040000
+32 32 7060000
+32 32 7080000
+32 32 7100000
+32 32 7120000
+32 32 7140000
+32 32 7160000
+32 32 7180000
+32 32 7200000
+32 32 7220000
+32 32 7240000
+32 32 7260000
+32 32 7280000
+32 32 7300000
+32 32 7320000
+32 32 7340000
+32 32 7360000
+32 32 7380000
+32 32 7400000
+32 32 7420000
+32 32 7440000
+32 32 7460000
+32 32 7480000
+32 32 7500000
+32 32 7520000
+32 32 7540000
+32 32 7560000
+32 32 7580000
+32 32 7600000
+32 32 7620000
+32 32 7640000
+32 32 7660000
+32 32 7680000
+32 32 7700000
+32 32 7720000
+32 32 7740000
+32 32 7760000
+32 32 7780000
+32 32 7800000
+32 32 7820000
+32 32 7840000
+32 32 7860000
+32 32 7880000
+32 32 7900000
+32 32 7920000
+32 32 7940000
+32 32 7960000
+32 32 7980000
+32 32 8000000
+32 32 8020000
+32 32 8040000
+32 32 8060000
+32 32 8080000
+32 32 8100000
+32 32 8120000
+32 32 8140000
+32 32 8160000
+32 32 8180000
+32 32 8200000
+32 32 8220000
+32 32 8240000
+32 32 8260000
+32 32 8280000
+32 32 8300000
+32 32 8320000
+32 32 8340000
+32 32 8360000
+32 32 8380000
+32 32 8400000
+32 32 8420000
+32 32 8440000
+32 32 8460000
+32 32 8480000
+32 32 8500000
+32 32 8520000
+32 32 8540000
+32 32 8560000
+32 32 8580000
+32 32 8600000
+32 32 8620000
+32 32 8640000
+32 32 8660000
+32 32 8680000
+32 32 8700000
+32 32 8720000
+32 32 8740000
+32 32 8760000
+32 32 8780000
+32 32 8800000
+32 32 8820000
+32 32 8840000
+32 32 8860000
+32 32 8880000
+32 32 8900000
+32 32 8920000
+32 32 8940000
+32 32 8960000
+32 32 8980000
+32 32 9000000
+32 32 9020000
+32 32 9040000
+32 32 9060000
+32 32 9080000
+32 32 9100000
+32 32 9120000
+32 32 9140000
+32 32 9160000
+32 32 9180000
+32 32 9200000
+32 32 9220000
+32 32 9240000
+32 32 9260000
+32 32 9280000
+32 32 9300000
+32 32 9320000
+32 32 9340000
+32 32 9360000
+32 32 9380000
+32 32 9400000
+32 32 9420000
+32 32 9440000
+32 32 9460000
+32 32 9480000
+32 32 9500000
+32 32 9520000
+32 32 9540000
+32 32 9560000
+32 32 9580000
+32 32 9600000
+32 32 9620000
+32 32 9640000
+32 32 9660000
+32 32 9680000
+32 32 9700000
+32 32 9720000
+32 32 9740000
+32 32 9760000
+32 32 9780000
+32 32 9800000
+32 32 9820000
+32 32 9840000
+32 32 9860000
+32 32 9880000
+32 32 9900000
+32 32 9920000
+32 32 9940000
+32 32 9960000
+32 32 9980000
+32 32 10000000
+32 32 10020000
+32 32 10040000
+32 32 10060000
+32 32 10080000
+32 32 10100000
+32 32 10120000
+32 32 10140000
+32 32 10160000
+32 32 10180000
+32 32 10200000
+32 32 10220000
+32 32 10240000
+32 32 10260000
+32 32 10280000
+32 32 10300000
+32 32 10320000
+32 32 10340000
+32 32 10360000
+32 32 10380000
+32 32 10400000
+32 32 10420000
+32 32 10440000
+32 32 10460000
+32 32 10480000
+32 32 10500000
+32 32 10520000
+32 32 10540000
+32 32 10560000
+32 32 10580000
+32 32 10600000
+32 32 10620000
+32 32 10640000
+32 32 10660000
+32 32 10680000
+32 32 10700000
+32 32 10720000
+32 32 10740000
+32 32 10760000
+32 32 10780000
+32 32 10800000
+32 32 10820000
+32 32 10840000
+32 32 10860000
+32 32 10880000
+32 32 10900000
+32 32 10920000
+32 32 10940000
+32 32 10960000
+32 32 10980000
+32 32 11000000
+32 32 11020000
+32 32 11040000
+32 32 11060000
+32 32 11080000
+32 32 11100000
+32 32 11120000
+32 32 11140000
+32 32 11160000
+32 32 11180000
+32 32 11200000
+32 32 11220000
+32 32 11240000
+32 32 11260000
+32 32 11280000
+32 32 11300000
+32 32 11320000
+32 32 11340000
+32 32 11360000
+32 32 11380000
+32 32 11400000
+32 32 11420000
+32 32 11440000
+32 32 11460000
+32 32 11480000
+32 32 11500000
+32 32 11520000
+32 32 11540000
+32 32 11560000
+32 32 11580000
+32 32 11600000
+32 32 11620000
+32 32 11640000
+32 32 11660000
+32 32 11680000
+32 32 11700000
+32 32 11720000
+32 32 11740000
+32 32 11760000
+32 32 11780000
+32 32 11800000
+32 32 11820000
+32 32 11840000
+32 32 11860000
+32 32 11880000
+32 32 11900000
+32 32 11920000
+32 32 11940000
+32 32 11960000
+32 32 11980000
+32 32 12000000
+32 32 12020000
+32 32 12040000
+32 32 12060000
+32 32 12080000
+32 32 12100000
+32 32 12120000
+32 32 12140000
+32 32 12160000
+32 32 12180000
+32 32 12200000
+32 32 12220000
+32 32 12240000
+32 32 12260000
+32 32 12280000
+32 32 12300000
+32 32 12320000
+32 32 12340000
+32 32 12360000
+32 32 12380000
+32 32 12400000
+32 32 12420000
+32 32 12440000
+32 32 12460000
+32 32 12480000
+32 32 12500000
+32 32 12520000
+32 32 12540000
+32 32 12560000
+32 32 12580000
+32 32 12600000
+32 32 12620000
+32 32 12640000
+32 32 12660000
+32 32 12680000
+32 32 12700000
+32 32 12720000
+32 32 12740000
+32 32 12760000
+32 32 12780000
+32 32 12800000
+32 32 12820000
+32 32 12840000
+32 32 12860000
+32 32 12880000
+32 32 12900000
+32 32 12920000
+32 32 12940000
+32 32 12960000
+32 32 12980000
+32 32 13000000
+32 32 13020000
+32 32 13040000
+32 32 13060000
+32 32 13080000
+32 32 13100000
+32 32 13120000
+32 32 13140000
+32 32 13160000
+32 32 13180000
+32 32 13200000
+32 32 13220000
+32 32 13240000
+32 32 13260000
+32 32 13280000
+32 32 13300000
+32 32 13320000
+32 32 13340000
+32 32 13360000
+32 32 13380000
+32 32 13400000
+32 32 13420000
+32 32 13440000
+32 32 13460000
+32 32 13480000
+32 32 13500000
+32 32 13520000
+32 32 13540000
+32 32 13560000
+32 32 13580000
+32 32 13600000
+32 32 13620000
+32 32 13640000
+32 32 13660000
+32 32 13680000
+32 32 13700000
+32 32 13720000
+32 32 13740000
+32 32 13760000
+32 32 13780000
+32 32 13800000
+32 32 13820000
+32 32 13840000
+32 32 13860000
+32 32 13880000
+32 32 13900000
+32 32 13920000
+32 32 13940000
+32 32 13960000
+32 32 13980000
+32 32 14000000
+32 32 14020000
+32 32 14040000
+32 32 14060000
+32 32 14080000
+32 32 14100000
+32 32 14120000
+32 32 14140000
+32 32 14160000
+32 32 14180000
+32 32 14200000
+32 32 14220000
+32 32 14240000
+32 32 14260000
+32 32 14280000
+32 32 14300000
+32 32 14320000
+32 32 14340000
+32 32 14360000
+32 32 14380000
+32 32 14400000
+32 32 14420000
+32 32 14440000
+32 32 14460000
+32 32 14480000
+32 32 14500000
+32 32 14520000
+32 32 14540000
+32 32 14560000
+32 32 14580000
+32 32 14600000
+32 32 14620000
+32 32 14640000
+32 32 14660000
+32 32 14680000
+32 32 14700000
+32 32 14720000
+32 32 14740000
+32 32 14760000
+32 32 14780000
+32 32 14800000
+32 32 14820000
+32 32 14840000
+32 32 14860000
+32 32 14880000
+32 32 14900000
+32 32 14920000
+32 32 14940000
+32 32 14960000
+32 32 14980000
+32 32 15000000
+32 32 15020000
+32 32 15040000
+32 32 15060000
+32 32 15080000
+32 32 15100000
+32 32 15120000
+32 32 15140000
+32 32 15160000
+32 32 15180000
+32 32 15200000
+32 32 15220000
+32 32 15240000
+32 32 15260000
+32 32 15280000
+32 32 15300000
+32 32 15320000
+32 32 15340000
+32 32 15360000
+32 32 15380000
+32 32 15400000
+32 32 15420000
+32 32 15440000
+32 32 15460000
+32 32 15480000
+32 32 15500000
+32 32 15520000
+32 32 15540000
+32 32 15560000
+32 32 15580000
+32 32 15600000
+32 32 15620000
+32 32 15640000
+32 32 15660000
+32 32 15680000
+32 32 15700000
+32 32 15720000
+32 32 15740000
+32 32 15760000
+32 32 15780000
+32 32 15800000
+32 32 15820000
+32 32 15840000
+32 32 15860000
+32 32 15880000
+32 32 15900000
+32 32 15920000
+32 32 15940000
+32 32 15960000
+32 32 15980000
+32 32 16000000
+32 32 16020000
+32 32 16040000
+32 32 16060000
+32 32 16080000
+32 32 16100000
+32 32 16120000
+32 32 16140000
+32 32 16160000
+32 32 16180000
+32 32 16200000
+32 32 16220000
+32 32 16240000
+32 32 16260000
+32 32 16280000
+32 32 16300000
+32 32 16320000
+32 32 16340000
+32 32 16360000
+32 32 16380000
+32 32 16400000
+32 32 16420000
+32 32 16440000
+32 32 16460000
+32 32 16480000
+32 32 16500000
+32 32 16520000
+32 32 16540000
+32 32 16560000
+32 32 16580000
+32 32 16600000
+32 32 16620000
+32 32 16640000
